스푼랩스는 라이브 오디오와 숏폼 비디오 플랫폼을 운영합니다. 잘되는 제품이 대개 그렇듯 엔지니어링 환경도 빠르게 커졌습니다. 코드 호스트가 하나가 아니고, 클라우드가 하나가 아니며, 모두가 무언가를 적어 넣는 협업 도구가 여럿 있었습니다.
머신 아이덴티티 위험이 어려워지는 건 이 지점입니다. 티켓에 붙여넣은 자격증명, 몇 년 전 커밋에 들어간 키, 스토리지 버킷에 남은 파일은 어느 한 도구에서도 보이지 않습니다. 무언가 남아 있느냐가 아니라, 어디에 있고 그중 무엇이 아직 작동하느냐가 문제였습니다.
PoC는 코드부터 시작하지 않고 여섯 개 플랫폼을 한 번에 연동했습니다. 오브젝트 스토리지, 코드 호스트 둘, 이슈 트래커, 위키, 메신저 워크스페이스입니다. 실제로 자격증명은 그 경계를 넘나들기 때문에, 하나만 보면 잘못된 질문에 답하게 됩니다.
스캔은 현재 파일이 아니라 커밋 히스토리를 훑었습니다. 나중 커밋에서 지운 시크릿도 히스토리에는 남아 있고 대개 아직 살아 있기 때문입니다. 문서와 티켓, 메시지도 같은 방식으로 읽었습니다.
그다음 모든 탐지 건을 발급처에 직접 확인했습니다. 탐지 목록을 작업 목록으로 바꾸는 건 이 단계입니다. 아직 인증에 성공하는 자격증명과 오래전에 폐기·교체된 것을 갈라내고, 사람 시간을 쓸 가치가 있는 건 앞쪽뿐입니다.
8일 만에 아무것도 연결되지 않은 상태에서 검증된 그림까지 갔습니다. 무엇이 있고, 어디에 있고, 그중 무엇이 아직 작동하며, 무엇부터 닫아야 하는지입니다.
개수보다 순서가 중요했습니다. 금전이나 인프라에 직접 닿는 자격증명을 건수가 훨씬 많은 메신저·협업 토큰 무리와 분리했습니다. 양이 많은 쪽이 아니라 피해가 큰 쪽부터 손대기 위해서입니다.
기간이 끝날 때까지 탐지 곡선은 꺾이지 않았습니다. 정직하게 말하면 그게 결과입니다. 아직 닿지 못한 히스토리로 커버리지가 계속 넓어지고 있었다는 뜻이니까요. 감사(audit)가 아니라 상시 스캔이어야 하는 이유이기도 합니다. 감사는 끝나지만 환경은 끝나지 않습니다.