GitHub Actions 기반으로 AWS와 Azure에 IaC를 Terraform으로 정의하고, Terraform 코드의 보안 취약점을 미리 탐지하고, 정책 위반이 있을 경우 배포를 중단하는 방법을 알려주세요. ![]()
Terraform 기반의 DevSecOps 자동화를 구성할 때 핵심은 “코드 레벨에서의 정책 검증 → 클라우드 별 보안 기준 대응 → 파이프라인 통합”이고, 실무에서 검증된 접근 방식은 아래의 내용을 참고하시면 될 듯합니다.
- SAST 기반 Terraform 코드 보안 분석 도구
- Checkov: AWS, Azure 모두 지원하며 GitHub Actions에서
checkov-action으로 쉽게 통합 가능. - TFSec: Terraform native이며 빠른 속도로 스캔 가능.
tfsec-sarif로 GitHub 코드 보안과도 연동. - Terrascan: 정책 기반이며 조직 정책 커스터마이징에 유리. JSON, YAML로 보안 기준 선언 가능.각 도구는
.tf파일 변경 시 자동으로 실행되도록 PR 기준 워크플로우에 삽입.
- 조직 보안 정책 코드화 및 통합 검증
- OPA(Open Policy Agent) 기반의 Conftest를 활용해
terraform plan또는terraform apply결과(JSON)를 정책 기반으로 검증. - 예:
"aws_s3_bucket.public_access_block"가 설정되지 않은 경우 reject. - 정책 리포지토리는 GitOps로 버전 관리하고, 팀별 커밋 승인 정책에 포함.
- 멀티 클라우드 보안 기준 통합 전략
- Checkov 및 Terrascan은 클라우드별 규칙을 태그 기반(
cloud: aws,cloud: azure)으로 구분하여 한 파이프라인에서 통합 적용 가능. terraform workspace또는TF_VAR_cloud_provider환경 변수 기반으로 조건부 스캐닝 수행.- 정책은 공통 규칙 → 클라우드별 override → 리소스별 예외 처리 구조로 계층화.
- CI/CD 통합 구현 예시 (GitHub Actions)
jobs:
security-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Terraform Init
run: terraform init
- name: Run Checkov
uses: bridgecrewio/checkov-action@v12
- name: Run Terrascan
run: terrascan scan -t aws -i terraform -f .
- name: Policy Test (Conftest)
run: conftest test terraform.tfplan.json
Terraform 파이프라인 보안 자동화는 Checkov/TFSec으로 코드 정적 분석 → OPA 기반 정책 검증 → 클라우드별 조건 분기 로직을 통합적으로 설계함으로써 DevSecOps 실현이 가능합니다. 이러한 구조는 CI/CD 내에서 정책 거버넌스를 자동화할 수 있는 가장 현실적인 접근 방법입니다.
AI 답변이 다소 피상적이네요. ㅜ.ㅜ
취약점의 경우 AI가 가이드 해준대로 TfSec나Checkov를 활용하시면 될 것 같고 Terraform Sentinel 기능을 활용하면 정책을 설정하고 위반시 Apply 이전 중단 시킬 수 있습니다. 다만 Sentinel은 HCP Terraform과 Terraform Enterprise에서 제공됩니다.
Sentinel 기본 사용법에 대해 블로그 작성한 것이 있으니 참고하시면 좋을 듯합니다.
링크: https://blog.cloudraw.kr/27
TFSec은 점진적으로 Trivy로 모두 마이그레이션이 되었습니다.
Trivy Github Actions와 Terraform github actions 예제를 엮는 코드가 좀 많으니 확인해보시면 좋을 듯 합니다.
감사합니다. 안내주신 내용으로 확인해보겠습니다. ^^
[CloudBro AI Bot Response]
Terraform 기반 인프라 자동화 파이프라인에서 AWS와 Azure 환경에 대한 보안 스캐닝 자동화를 구현하려면, 다음과 같은 단계별 접근법과 도구 조합을 추천드립니다.
1. 핵심 개념 및 참고 리소스
- CNCF 및 오픈소스 연계: 인프라 코드(IaC) 보안 스캐닝은 오픈소스 도구들이 활발하며, CNCF 생태계와 연계된 프로젝트들이 많습니다.
-
- Terraform 보안 스캐닝: Terraform 코드 자체를 분석하는 도구와, 프로비저닝된 클라우드 리소스 상태를 점검하는 도구로 나눌 수 있습니다.
-
- 멀티클라우드 지원: AWS와 Azure 모두 지원하는 도구를 선택하거나, 각각에 특화된 도구를 조합해 파이프라인에 통합합니다.
2. Terraform 코드 보안 스캐닝 도구 추천 및 활용법
2-1. tfsec (GitHub - aquasecurity/tfsec: Tfsec is now part of Trivy)
- Terraform 코드 내 보안 취약점 및 베스트 프랙티스 위반 사항을 분석하는 오픈소스 도구
-
- AWS, Azure, GCP 등 멀티클라우드 지원
-
- CI/CD 파이프라인에 쉽게 통합 가능
사용 예시 (CLI):
- CI/CD 파이프라인에 쉽게 통합 가능
# tfsec 설치 (예: macOS)
brew install tfsec
# Terraform 코드 디렉터리에서 실행
tfsec ./terraform-directory
CI 통합 예 (GitHub Actions):
name: Terraform Security Scan
on: [push, pull_request]
jobs:
tfsec:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run tfsec
uses: aquasecurity/tfsec-action@v1
with:
directory: ./terraform-directory
3. 프로비저닝된 AWS & Azure 리소스 보안 스캐닝
3-1. AWS Security Hub & Azure Security Center 통합
- Terraform으로 프로비저닝된 리소스가 실제 클라우드 환경에 배포된 후, AWS Security Hub와 Azure Security Center를 통해 리소스 보안 상태를 자동으로 평가
-
- Terraform 파이프라인 종료 후 API 호출 또는 CLI 명령어로 결과를 수집 및 알림 처리 가능
3-2. Cloud Custodian (https://cloudcustodian.io/)
- AWS, Azure, GCP 리소스 정책 기반 관리 및 보안 컴플라이언스 자동화 도구
-
- YAML 정책 파일로 리소스 조건 정의 및 위반 시 조치 가능
-
- Terraform 배포 후 Cloud Custodian 실행으로 자동 검증 및 문제 탐지
예시 정책 (AWS S3 공개 버킷 검사):
- Terraform 배포 후 Cloud Custodian 실행으로 자동 검증 및 문제 탐지
policies:
- name: s3-public-read-prohibited
resource: s3
filters:
- "PublicRead": true
actions:
- type: notify
to:
- security-team@example.com
transport:
type: sqs
queue: https://sqs.us-east-1.amazonaws.com/123456789012/notify
4. 파이프라인 내 통합 방법
- Terraform 코드 변경 시 tfsec 실행
-
- PR 단계에서 tfsec로 코드 취약점 점검
-
- Terraform Apply 후, 클라우드 리소스 상태 점검
-
- AWS CLI/Azure CLI 또는 SDK를 활용해 Security Hub / Security Center 결과 조회
-
- 또는 Cloud Custodian 정책 실행
-
- 결과 자동 알림 및 이슈 트래킹 연동
-
- Slack, 이메일, Jira 등과 연동해 보안 이슈 자동 보고
5. 실무 팁 및 트러블슈팅
- tfsec가 최신 Terraform 버전을 지원하지 않는 경우, GitHub 이슈 및 PR을 확인하고 직접 빌드하거나 버전 고정 고려
-
- AWS Security Hub 활성화 및 권한 설정이 미흡하면 결과 조회 실패하므로 IAM 권한 정책 점검 필수
-
- Cloud Custodian 정책 작성 시, 리소스 태그 기반 필터링으로 불필요한 리소스 스캔 최소화
-
- Terraform state 파일과 실제 리소스 간 불일치 문제는
terraform refresh명령어로 해결 가능
- Terraform state 파일과 실제 리소스 간 불일치 문제는
6. 추가 학습 및 참고 자료
- tfsec 공식 문서
-
- 커뮤니티 Q&A: Stack Overflow Terraform Security
필요시 Terraform, AWS, Azure CLI 명령어 및 정책 작성 샘플을 더 구체적으로 안내해 드릴 수 있습니다. 추가 질문 주시면 단계별 실무 가이드 제공해 드리겠습니다!