배경
현재 WAS DB(used_ids 테이블)와 passwd 파일이 동기화 없이 독립 운영되어 UID 충돌이 발생하고 있습니다.
uid 10009: kwdahun, test0403 동시 존재
uid 10007: test2010, test2100 동시 존재
uid 10000: 7개 계정 동시 존재
해결 방안
config-server가 UID/primary GID를 단독 관리하고, WAS는 uid를 완전히 알지 않는 구조로 변경합니다.
변경 범위
삭제
UsedId entity / UsedIdRepository
CounterKey.UID
IdAllocationService.allocateFor(), allocateNewUid(), findReusableUidByUbuntuUsername(), releaseId(), AllocationResult
Request.ubuntuUid 필드 및 assignUbuntuUid() 메서드
RequestRepository.findTopByUbuntuUsernameAndUbuntuUidIsNotNullOrderByApprovedAtDesc
used_ids 테이블 (DB migration 필요)
수정
UserCreationRequestDTO — uid, gid 필드 제거
AdminRequestCommandService — idAllocationService.allocateFor() 및 uid/primary group 관련 로직 제거
RequestExpiryService — releaseId() 호출 제거
Group — usedId FK 필드 제거
AcceptInfoResponseDTO — uid 필드 제거
SaveRequestResponseDTO — ubuntuUid 필드 제거
IdAllocationService.allocateNewGid() — usedIdRepository 의존성 제거
DB 마이그레이션 주의사항
requests.ubuntuUid 컬럼 FK 제약 해제 후 컬럼 삭제
groups.ubuntu_gid → used_ids.id_value FK 제약 해제
used_ids 테이블 DROP
id_counter 테이블의 UID row 삭제
배경
현재 WAS DB(
used_ids테이블)와 passwd 파일이 동기화 없이 독립 운영되어 UID 충돌이 발생하고 있습니다.해결 방안
config-server가 UID/primary GID를 단독 관리하고, WAS는 uid를 완전히 알지 않는 구조로 변경합니다.
변경 범위
삭제
UsedIdentity /UsedIdRepositoryCounterKey.UIDIdAllocationService.allocateFor(),allocateNewUid(),findReusableUidByUbuntuUsername(),releaseId(),AllocationResultRequest.ubuntuUid필드 및assignUbuntuUid()메서드RequestRepository.findTopByUbuntuUsernameAndUbuntuUidIsNotNullOrderByApprovedAtDescused_ids테이블 (DB migration 필요)수정
UserCreationRequestDTO—uid,gid필드 제거AdminRequestCommandService—idAllocationService.allocateFor()및 uid/primary group 관련 로직 제거RequestExpiryService—releaseId()호출 제거Group—usedIdFK 필드 제거AcceptInfoResponseDTO—uid필드 제거SaveRequestResponseDTO—ubuntuUid필드 제거IdAllocationService.allocateNewGid()—usedIdRepository의존성 제거DB 마이그레이션 주의사항
requests.ubuntuUid컬럼 FK 제약 해제 후 컬럼 삭제groups.ubuntu_gid→used_ids.id_valueFK 제약 해제used_ids테이블 DROPid_counter테이블의UIDrow 삭제