IaC 스캐닝: 코드로서의 인프라 보안
코드형 인프라(IaC) 혁신적인 인프라 관리, 그러나 이는 또한 새로운 유형의 위험을 야기했습니다. 잘못된 구성. S3 버킷 공개, 과도한 권한을 부여한 보안 그룹, 암호화되지 않은 저장 데이터베이스는 모두 IaC 스캐닝을 통해 배포 전에 가로챌 수 있는 구성 오류입니다.
IaC 스캐닝 도구는 Terraform, CloudFormation, ARM 템플릿을 분석합니다. 안전하지 않은 구성을 찾아 비교하는 Kubernetes 매니페스트 및 기타 IaC 형식 CIS 벤치마크와 같은 모범 사례 및 규정 준수 표준을 사용합니다.
무엇을 배울 것인가
- 클라우드 보안에 IaC 스캐닝이 필수적인 이유
- Checkov: IaC용 다중 프레임워크 스캐너
- tfsec: Terraform 관련 분석
- KICS: Checkmarx의 범용 스캐너
- Sentinel 및 Conftest를 사용하는 Terraform에 대한 사용자 지정 정책
- CI/CD 파이프라인에 통합
가장 일반적인 잘못된 구성
클라우드 구성 오류가 원인입니다. 보안 사고의 65% 클라우드 환경에서. 가장 빈번한 것은 다음과 같습니다.
구성이 잘못된 상위 10개 클라우드
| # | 잘못된 구성 | 위험 |
|---|---|---|
| 1 | 공용 스토리지 버킷 | 데이터 유출, 데이터 유출 |
| 2 | 보안 그룹 0.0.0.0/0 | 무단 액세스 |
| 3 | 암호화되지 않은 데이터베이스 | 규정 위반, 데이터 도난 |
| 4 | 로깅이 비활성화되었습니다. | 법의학의 무능력 |
| 5 | IAM 정책이 너무 관대함 | 권한 승격 |
| 6 | 저장소에서 버전 관리가 비활성화되었습니다. | 데이터 손실, 랜섬웨어 |
| 7 | SSH는 전 세계에 공개됩니다. | 무차별 대입, 서버 침해 |
| 8 | IaC 변수의 비밀 | 자격 증명 노출 |
| 9 | 백업이 구성되지 않았습니다. | 영구적인 데이터 손실 |
| 10 | 강제되지 않은 TLS | 중간자, 데이터 가로채기 |
Checkov: 다중 프레임워크 스캐너
체코프 Bridgecrew(현재 Prisma Cloud) 및 가장 완벽한 IaC 스캐너 Terraform, CloudFormation, ARM, Kubernetes, Helm, Dockerfile에 대한 사전 정의된 정책 1000개 이상 그리고 서버리스. 또한 Python 및 YAML의 사용자 지정 정책도 지원합니다.
# Installare Checkov
pip install checkov
# Scan di file Terraform
checkov -d terraform/ --framework terraform
# Scan con output SARIF
checkov -d terraform/ -o sarif --output-file checkov-results.sarif
# Scan con filtro severity
checkov -d terraform/ --check HIGH --check CRITICAL
# Scan di un Dockerfile
checkov -f Dockerfile --framework dockerfile
# Scan di manifest Kubernetes
checkov -d k8s/ --framework kubernetes
# Skip check specifici
checkov -d terraform/ --skip-check CKV_AWS_18,CKV_AWS_19
GitHub Actions의 Checkov 통합
# .github/workflows/iac-scanning.yml
name: IaC Security Scan
on:
pull_request:
paths:
- "terraform/**"
- "k8s/**"
- "Dockerfile"
jobs:
checkov:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Checkov Scan
uses: bridgecrewio/checkov-action@master
with:
directory: terraform/
framework: terraform
output_format: sarif
output_file_path: checkov-results.sarif
soft_fail: false
check: HIGH,CRITICAL
- name: Upload SARIF
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: checkov-results.sarif
tfsec: Terraform 특정 분석
tfsec (현재 Trivy의 일부) 및 스캔하는 전용 Terraform 스캐너 보안 구성 오류를 찾는 HCL 파일입니다. 특히 빠르고 정확하며, Terraform 모듈 및 변수를 지원합니다.
# Installare tfsec
brew install tfsec
# Scan base
tfsec terraform/
# Scan con output SARIF
tfsec terraform/ --format sarif --out tfsec-results.sarif
# Scan con severita minima
tfsec terraform/ --minimum-severity HIGH
# Escludere check specifici
tfsec terraform/ --exclude aws-s3-enable-versioning
KICS: 범용 스캐너
KICS(인프라를 코드로 안전하게 유지) Checkmarx와 오픈 스캐너 15개 이상의 IaC 플랫폼을 지원하는 소스입니다. 특히 조직에 유용합니다. 여러 IaC 기술을 사용하고 단일 도구를 원하는 사람.
# Eseguire KICS con Docker
docker run -v /path/to/project:/path checkmarx/kics:latest scan \
-p /path \
-o /path/results \
--report-formats sarif,json \
--fail-on high,critical
Terraform에 대한 사용자 정의 정책
사전 정의된 정책 외에도 다음을 생성해야 하는 경우가 많습니다. 맞춤 정책 사양 조직을 위해. 다음은 Conftest/Rego의 예입니다.
# policy/terraform/aws_security.rego
package terraform.aws
# Tutti i bucket S3 devono avere encryption
deny[msg] {
resource := input.resource.aws_s3_bucket[name]
not resource.server_side_encryption_configuration
msg := sprintf("S3 bucket '%s' deve avere encryption abilitata", [name])
}
# RDS deve avere backup abilitato
deny[msg] {
resource := input.resource.aws_db_instance[name]
resource.backup_retention_period == 0
msg := sprintf("RDS instance '%s' deve avere backup abilitato (retention > 0)", [name])
}
# Nessun security group con ingress 0.0.0.0/0 su SSH
deny[msg] {
resource := input.resource.aws_security_group[name]
ingress := resource.ingress[_]
ingress.from_port <= 22
ingress.to_port >= 22
cidr := ingress.cidr_blocks[_]
cidr == "0.0.0.0/0"
msg := sprintf("Security group '%s' non deve permettere SSH (22) da 0.0.0.0/0", [name])
}
Sentinel을 사용한 Terraform 정책 시행
IaC 스캐닝 도구 비교
- 체코프: 가장 완벽한 1000개 이상의 정책, 다중 프레임워크, Python/YAML의 사용자 정의 정책
- tfsec: Terraform에 특화되고 빠르며 Trivy에 통합됨
- KICS: 범용, 15개 이상의 플랫폼, 다중 IaC 환경에 적합
- 콘테스트: 유연성, Rego 사용, 맞춤형 정책에 적합
- 보초: 기본 Terraform Cloud, 통합 정책 시행
IaC 스캔 모범 사례
- 모든 PR에서 스캔: 모든 IaC 변경 사항은 병합 전에 검증되어야 합니다.
- 심각도 기반 차단: HIGH 및 CRITICAL의 경우 배포를 차단하고 MEDIUM의 경우 경고
- 맞춤 정책: 조직의 표준에 맞는 정책을 만듭니다.
- 기준선 및 진행: 기준선을 설정하고 점차적으로 결과를 줄입니다.
- 사전 커밋 후크: 푸시하기 전에 로컬에서 tfsec/checkov를 실행합니다.
- 드리프트 감지: IaC 상태와 실제 인프라 간의 드리프트를 모니터링합니다.
결론
IaC 스캐닝은 오류의 근본 원인인 잘못된 구성을 방지하는 데 필수적입니다. 클라우드 보안 사고. Checkov, tfsec 및 사용자 정의 정책을 통해 조직은 다음을 수행할 수 있습니다. 각 인프라 변경 사항이 프로덕션에 도달하기 전에 자동으로 검증됩니다.
다음 기사에서는 살펴보겠습니다. 런타임 보안, 모니터링 분석 Falco, eBPF 및 이상 탐지 시스템을 통해 실시간으로 애플리케이션을 보호합니다. 생산 중.







