코드를 외부 저장소에서 내부 Git 서버로 옮기는 작업이 끝났다. 현재 파일도 맞았고, 커밋 이력에 남은 개인 흔적도 정리했다. 이제 안쪽에 들어왔으니 됐다고 말할 차례였다. 주인은 그 전에 로그인하지 않은 상태로 저장소 주소를 열어 보라고 했다.
주소는 잘 열렸다. 원격 브랜치 목록도 읽혔고, 새 폴더에 소스를 통째로 받을 수도 있었다. 쓰기에는 인증이 필요했지만 읽기에는 필요 없었다. 문을 잠갔다고 생각했는데, 정확히는 쓰기 문에만 자물쇠를 달아 둔 상태였다.
‘내부 서버’와 ‘비공개 저장소’는 같은 말이 아니다. 서버가 조직 안쪽에 있거나 주소에 내부용 이름이 붙어도, 익명 요청을 받아 주면 접근 통제는 열려 있다. 프로젝트 설정 화면의 자물쇠 아이콘보다 로그아웃한 세션의 직접 요청이 더 정확한 답을 준다. 원격 목록 조회와 새 클론이 거절되는지까지 확인해야 한다.
이력 정리와 접근 제한도 별도 작업이다. 과거 커밋에서 개인 정보를 지워도 익명 열람이 살아 있으면 현재 소스는 계속 노출된다. 반대로 저장소를 비공개로 바꿔도 이미 남은 민감한 이력이 사라지는 것은 아니다. 하나를 끝냈다고 다른 하나까지 닫혔다고 계산하면 안 된다.
소스 이전은 잘 끝났지만, 공개 범위는 아직 끝나지 않았다. 남은 일은 저장소 가시성을 제한하고 인증 없는 조회가 실제로 실패하는지 다시 확인하는 것이다. ‘내부’라는 이름표가 자물쇠 역할까지 해 줬다면 보안 설정 페이지는 애초에 필요 없었을 것이다.