점심 무렵 한 개발자가 테스트용 설정 파일을 공개 GitHub 저장소에 push했는데, 그 안에 AWS 액세스 키가 들어 있었습니다. 곧 GitHub 비밀 탐지 알림과 AWS의 '노출된 자격 증명' 메일이 왔습니다. 20분 뒤 비용 경보가 울려 보니, 우리가 쓰지 않는 리전에 GPU 인스턴스가 수십 대 생기고 있습니다. 개발자는 커밋을 지우고 저장소를 비공개로 돌리면 된다며 강제 push를 준비하고 있습니다. 키 주인인 ci-uploader 사용자는 2년 전 배포 스크립트용으로 만든 계정입니다.
공개 저장소에 AWS 액세스 키가 올라감: 20분 만에 낯선 서버가 생김
점심 무렵 한 개발자가 테스트용 설정 파일을 공개 GitHub 저장소에 push했는데, 그 안에 AWS 액세스 키가 들어 있었습니다.
시나리오
단서
GitHub secret scanning: AWS Access Key ID AKIA…7QXA detected in config/test.env (commit 4f1c2e9) $ aws cloudtrail lookup-events --lookup-attributes AttributeKey=AccessKeyId,AttributeValue=AKIA…7QXA --region ap-south-1 --max-results 3 RunInstances 12:47:10 userIdentity: ci-uploader (IAMUser) RunInstances 12:46:58 userIdentity: ci-uploader (IAMUser) CreateKeyPair 12:46:31 userIdentity: ci-uploader (IAMUser)
$ aws iam list-access-keys --user-name ci-uploader AccessKeyId: AKIA…7QXA Status: Active CreateDate: 2024-03-11 # ci-uploader 정책: AmazonEC2FullAccess, AmazonS3FullAccess (임시로 붙인 뒤 방치)
과제 원인을 좁히고, 서비스를 되살리는 순서(검증 포함)와 재발 방지책을 적어 보세요.
구독하면 이어서 볼 수 있어요
이 문제의 전체 시나리오와 점검 체크리스트, 복구 순서, 모범 풀이는 Pro 구독에서 열립니다.
먼저 볼 것
- 유출 대응의 순서: 먼저 끊고, 조사하고, 나중에 정리
- 커밋을 지워도 이미 퍼진 키는 되돌릴 수 없다
점검 체크리스트
- 키를 즉시 비활성화할 수 있는지(list-access-keys·update-access-key)
- CloudTrail에서 그 키로 한 모든 행동(리전 전체)
- 생긴 리소스(인스턴스·키 페어·사용자)와 다른 비밀값의 노출 여부
복구와 재발 방지
같이 보면 좋은 질문
현장에서 본 비슷한 케이스
0/10