팀 IaC 레포 보호를 위한 자동화 솔루션 조사팀 IaC 레포 보호를 위한 자동화 솔루션 조사

팀 IaC 레포 보호를 위한 자동화 솔루션 조사

생성 일시
Sep 13, 2026 10:04 AM
최종 편집 일시
Last updated September 20, 2026
태그
작성자
Date

배경

발표 후 pm님 피드백: 시크릿(자격증명 등)이 코드나 로그에 섞이는 걸 사람이 눈으로 검색해서 확인하는 대신, push/commit 시점에 자동으로 감지·차단하는 자동화를 도입할 것.

핵심 개념: Secret Scanning

커밋·push되는 순간 시크릿 패턴(AWS 키 등)을 자동 탐지해서, 발견 시 커밋/push/PR을 막는 방식. 적용 시점에 따라 3단계로 나뉨.
단계
시점
강제성
① Pre-commit hook
로컬에서 커밋 직전
낮음 (개발자별 설치 필요)
② Push Protection
GitHub 서버로 push 직전
높음 (조직 전체 강제)
③ CI 파이프라인 스캔
push 이후 PR 단계
높음 (PR 자체를 막음)

구현 방법 3가지

1. GitHub Secret Scanning + Push Protection (가장 쉬움)

  • Settings > Code security 에서 활성화
  • AWS 키 등 잘 알려진 패턴을 GitHub이 자동 감지, push 자체를 서버단에서 거부
  • Private 레포는 플랜에 따라 제공 여부 다름 → 확인 필요

2. gitleaks + pre-commit hook (로컬)

gitleaks란?
  • 오픈소스 시크릿 전용 스캐너 (Go 언어, Zach Rice 제작). Docker 다운로드 1600만+, GitHub 스타 17k+로 사실상 업계 표준
  • 정규식 패턴(AWS 키 AKIA..., GitHub 토큰, Slack Webhook 등 기본 내장) + 엔트로피 분석(패턴 없는 무작위 문자열도 탐지) 두 방식 병행
  • git 히스토리 전체를 스캔 → 지금은 지워졌어도 과거 커밋에 남아있는 값까지 찾아냄
  • 결과에 파일명·줄번호·커밋 해시·작성자까지 표시됨
  • 출력 형식: JSON, CSV, SARIF(GitHub 보안 탭 연동 가능), JUnit
  • CLI / pre-commit hook / GitHub Action(공식 gitleaks-action) 세 가지 방식으로 사용 가능
  • 개인 계정 레포는 무료, Organization 소유 레포는 무료 라이선스 키 별도 발급 필요 (gitleaks.io)
pip install pre-commit
# .pre-commit-config.yaml repos: - repo: <https://github.com/gitleaks/gitleaks> rev: v8.18.4 hooks: - id: gitleaks
pre-commit install
수동 스캔 명령어 (v8.19.0+ 기준, 최신 문법)
# git 히스토리 전체 스캔 gitleaks git . # 파일 시스템(디렉토리)만 스캔 gitleaks dir .
  • 단점: 팀원이 로컬에 직접 설치해야 함 → 강제성 약함
  • 오탐(false positive) 발생 가능 → .gitleaksignore / .gitleaks.toml로 허용 목록 관리

3. GitHub Actions에 스캔 스텝 추가 (기존 CI에 확장, 가장 추천)

현재 terraform-plan.yml의 lint job 앞단에 추가:
- name: 시크릿 스캔 (gitleaks) uses: gitleaks/gitleaks-action@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  • 팀원 로컬 설정과 무관하게 PR 단계에서 강제 차단 가능
  • 이미 구축된 conftest 정책검사 구조에 자연스럽게 얹을 수 있음
  • 조직 소유 레포이므로 gitleaks 무료 라이선스 키 발급 필요

제안: 3단 방어선

  1. 1차: GitHub Secret Scanning + Push Protection 활성화
  1. 2차: terraform-plan.yml에 gitleaks 스텝 추가 (핵심 방어선)
  1. 선택: 로컬 pre-commit hook은 README에 권장 가이드로만 안내