이 솔루션 조사 자체가 시작된 이유는 팀 IaC 레포(kintoun-infra)를 포트폴리오용으로 public 전환하려던 계획 때문이었다.
즉 이번 조사의 목적은 "private 상태에서 계속 쓸 보안 도구"가 아니라, "public 전환을 안전하게 만들기 위한 자동화". 이 관점으로 정리했다.
저번 글에서는 팀 IaC(Infrastructure as Code) 레포에 시크릿이 실수로 커밋되는 것을 막기 위해, push/commit 시점에 시크릿을 자동으로 감지·차단하는 자동화 솔루션을 조사했다. 컴플라이언스 팀에서는 이 내용을 바탕으로 자료 조사를 나눠 진행했고, 우리 Organization 환경에서 이 방안들이 실제로 적용 가능한지 확인하는 과정을 중점적으로 정리했다.
| 항목 | 현재 상태 |
|---|---|
| 저장소 | kintoun-secops/kintoun-infra, 현재 Private → Public 전환 예정 |
| 구조 | bootstrap/(원격 state·OIDC), identity/(팀원 IAM), platform/(네트워크·EC2·Wazuh), modules/(재사용 모듈, 현재 비어있음), .github/(워크플로우·정책·스크립트) |
| 인증 방식 | 장기 Access Key 미사용, aws-actions/configure-aws-credentials@v4 + OIDC(role-to-assume) |
기존 CI (.github/workflows/) |
terraform-plan.yml(PR 시 lint→plan→iam-comment), terraform-apply.yml(main push 시 apply) |
| 기존 자동 검사 | terraform fmt, conftest(OPA 정책 검증), IAM 정책 커스텀 검사 스크립트(validate-iam-policies.js, test-iam-pipeline.sh 등) |
.gitignore |
*.tfstate, .terraform/, *.tfvars(example 제외), tfplan 등 이미 제외 처리 |
| 기존 검토 결과 | 파일·코드 수준 민감정보는 없음 확인됨. 단, Actions 로그 ARN 노출과 git 히스토리 전체 스캔, 2가지는 미확인 상태로 남아있었음 |
정리: 지금 레포는 이미 상당히 안전하게 설계돼 있지만, public 전환 전 마지막으로 "사람이 놓쳤을 수 있는 부분"을 자동화로 한 번 더 걸러내는 안전장치가 필요한 단계.
Public 전환이라는 하나의 이벤트를 기준으로 두 솔루션의 역할이 나뉨.
| 솔루션 | 역할 | 적용 시점 |
|---|---|---|
| 3번 (gitleaks CI) | 전환 전 마지막 안전 점검 + 전환 후에도 계속 작동하는 상시 방어선 | 지금 바로 적용 |
| 1번 (GitHub Secret Scanning + Push Protection) | 전환과 동시에 무료로 자동 활성화되는 GitHub 자체 방어선 | Public 전환 시점에 함께 |
즉 순서가 자연스럽게 이렇게 나옴: 먼저 gitleaks로 지금 상태를 한번 훑고(과거 커밋 포함) → 문제 없으면 public 전환 → 전환되는 순간 1번이 무료로 같이 켜짐.
Public 전환 전에 git 히스토리 전체(지금까지 쌓인 모든 커밋)를 한 번 스캔해서, 과거에 실수로 커밋했다 지운 값이 없는지 마지막으로 확인하는 역할. 이게 이번 조사의 원래 목적("확인 불가"로 남았던 히스토리 스캔)과 정확히 맞아떨어짐.