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、および異常検出システムを使用してリアルタイムでアプリケーションを保護します 生産中です。







