피드로 돌아가기
Dev.toInfrastructure
원문 읽기
boto3 기반 AWS 직접 스캔을 통한 Terraform State 사각지대 제거
`terraform plan` is blind to anything not in its state. So I scan AWS directly with boto3.
AI 요약
Context
Terraform plan은 State 파일에 등록된 리소스의 Drift만 감지하는 설계적 한계 존재. 콘솔이나 CLI로 생성된 Unmanaged 리소스를 식별하지 못하는 가시성 공백 발생.
Technical Solution
- STS AssumeRole 패턴 도입을 통한 멀티 계정 접근 권한의 중앙 집중화 및 단기 자격 증명 확보
- CloudTrail 감사 추적성을 위한 고유 RoleSessionName 설정 및 Confused Deputy 문제 방지를 위한 ExternalId 적용
- AWS API의 리스트 기반 데이터(Tags 등)를 Terraform의 Map 형태로 변환하는 Normalization Layer 구축
- InstanceId를 id로 매핑하는 등 서로 다른 데이터 스키마를 단일 표준 체계로 통합하는 Translator 로직 구현
- cloud_id 기반의 Upsert 구조와 raw_data_prev 스냅샷 저장을 통한 스캔 주기 간 차분 분석 체계 설계
실천 포인트
1. 멀티 계정 스캔 시 고정 Access Key 대신 STS AssumeRole과 ExternalId 조합 검토
2. 외부 API 데이터를 내부 State와 비교할 때 필드명 및 데이터 구조(List to Map)의 일치 여부 확인
3. 리소스 변경 이력 추적을 위해 현재 상태뿐 아니라 이전 상태(Previous Snapshot)를 함께 저장하는 구조 설계