Public 전환에 맞춘 1번(Push Protection) + 3번(gitleaks CI) 적용 방안

0. 다시 짚는 배경

이 솔루션 조사 자체가 시작된 이유는 팀 IaC 레포(kintoun-infra)를 포트폴리오용으로 public 전환하려던 계획 때문이었다.

즉 이번 조사의 목적은 "private 상태에서 계속 쓸 보안 도구"가 아니라, "public 전환을 안전하게 만들기 위한 자동화". 이 관점으로 정리했다.

저번 글에서는 팀 IaC(Infrastructure as Code) 레포에 시크릿이 실수로 커밋되는 것을 막기 위해, push/commit 시점에 시크릿을 자동으로 감지·차단하는 자동화 솔루션을 조사했다. 컴플라이언스 팀에서는 이 내용을 바탕으로 자료 조사를 나눠 진행했고, 우리 Organization 환경에서 이 방안들이 실제로 적용 가능한지 확인하는 과정을 중점적으로 정리했다.


1. 현재 레포 환경 분석

항목 현재 상태
저장소 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 전환 전 마지막으로 "사람이 놓쳤을 수 있는 부분"을 자동화로 한 번 더 걸러내는 안전장치가 필요한 단계.


2. Public 전환을 기준으로 순서를 다시 짜면

Public 전환이라는 하나의 이벤트를 기준으로 두 솔루션의 역할이 나뉨.

솔루션 역할 적용 시점
3번 (gitleaks CI) 전환 전 마지막 안전 점검 + 전환 후에도 계속 작동하는 상시 방어선 지금 바로 적용
1번 (GitHub Secret Scanning + Push Protection) 전환과 동시에 무료로 자동 활성화되는 GitHub 자체 방어선 Public 전환 시점에 함께

즉 순서가 자연스럽게 이렇게 나옴: 먼저 gitleaks로 지금 상태를 한번 훑고(과거 커밋 포함) → 문제 없으면 public 전환 → 전환되는 순간 1번이 무료로 같이 켜짐.


3. 3번: gitleaks — Public 전환 전 지금 바로 적용

왜 지금 먼저 해야 하는가

Public 전환 전에 git 히스토리 전체(지금까지 쌓인 모든 커밋)를 한 번 스캔해서, 과거에 실수로 커밋했다 지운 값이 없는지 마지막으로 확인하는 역할. 이게 이번 조사의 원래 목적("확인 불가"로 남았던 히스토리 스캔)과 정확히 맞아떨어짐.

3-1. 사전 준비

  1. gitleaks.io 접속 → Organization 소유 레포용 무료 라이선스 키 신청