Terraform 기반의 인프라 자동화 파이프라인에서 AWS와 Azure 환경에 대한 보안 스캐닝 자동화?

GitHub Actions 기반으로 AWS와 Azure에 IaC를 Terraform으로 정의하고, Terraform 코드의 보안 취약점을 미리 탐지하고, 정책 위반이 있을 경우 배포를 중단하는 방법을 알려주세요. :slight_smile:

1 Like

Terraform 기반의 DevSecOps 자동화를 구성할 때 핵심은 “코드 레벨에서의 정책 검증 → 클라우드 별 보안 기준 대응 → 파이프라인 통합”이고, 실무에서 검증된 접근 방식은 아래의 내용을 참고하시면 될 듯합니다.

  1. SAST 기반 Terraform 코드 보안 분석 도구
  • Checkov: AWS, Azure 모두 지원하며 GitHub Actions에서 checkov-action으로 쉽게 통합 가능.
  • TFSec: Terraform native이며 빠른 속도로 스캔 가능. tfsec-sarif로 GitHub 코드 보안과도 연동.
  • Terrascan: 정책 기반이며 조직 정책 커스터마이징에 유리. JSON, YAML로 보안 기준 선언 가능.각 도구는 .tf 파일 변경 시 자동으로 실행되도록 PR 기준 워크플로우에 삽입.
  1. 조직 보안 정책 코드화 및 통합 검증
  • OPA(Open Policy Agent) 기반의 Conftest를 활용해 terraform plan 또는 terraform apply 결과(JSON)를 정책 기반으로 검증.
  • 예: "aws_s3_bucket.public_access_block"가 설정되지 않은 경우 reject.
  • 정책 리포지토리는 GitOps로 버전 관리하고, 팀별 커밋 승인 정책에 포함.
  1. 멀티 클라우드 보안 기준 통합 전략
  • Checkov 및 Terrascan은 클라우드별 규칙을 태그 기반(cloud: aws, cloud: azure)으로 구분하여 한 파이프라인에서 통합 적용 가능.
  • terraform workspace 또는 TF_VAR_cloud_provider 환경 변수 기반으로 조건부 스캐닝 수행.
  • 정책은 공통 규칙 → 클라우드별 override → 리소스별 예외 처리 구조로 계층화.
  1. 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

1 Like

TFSec은 점진적으로 Trivy로 모두 마이그레이션이 되었습니다.
Trivy Github Actions와 Terraform github actions 예제를 엮는 코드가 좀 많으니 확인해보시면 좋을 듯 합니다.

3 Likes

감사합니다. 안내주신 내용으로 확인해보겠습니다. ^^

[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):
# 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 공개 버킷 검사):
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. 파이프라인 내 통합 방법

  1. Terraform 코드 변경 시 tfsec 실행
    • PR 단계에서 tfsec로 코드 취약점 점검
    1. Terraform Apply 후, 클라우드 리소스 상태 점검
    • AWS CLI/Azure CLI 또는 SDK를 활용해 Security Hub / Security Center 결과 조회
    • 또는 Cloud Custodian 정책 실행
    1. 결과 자동 알림 및 이슈 트래킹 연동
    • Slack, 이메일, Jira 등과 연동해 보안 이슈 자동 보고

5. 실무 팁 및 트러블슈팅

  • tfsec가 최신 Terraform 버전을 지원하지 않는 경우, GitHub 이슈 및 PR을 확인하고 직접 빌드하거나 버전 고정 고려
    • AWS Security Hub 활성화 및 권한 설정이 미흡하면 결과 조회 실패하므로 IAM 권한 정책 점검 필수
    • Cloud Custodian 정책 작성 시, 리소스 태그 기반 필터링으로 불필요한 리소스 스캔 최소화
    • Terraform state 파일과 실제 리소스 간 불일치 문제는 terraform refresh 명령어로 해결 가능

6. 추가 학습 및 참고 자료


필요시 Terraform, AWS, Azure CLI 명령어 및 정책 작성 샘플을 더 구체적으로 안내해 드릴 수 있습니다. 추가 질문 주시면 단계별 실무 가이드 제공해 드리겠습니다!