学習用インフラプロジェクトTerraGoatのセキュリティ検証
TerraGoatはBridgecrewが提供する意図的に脆弱性を組み込んだTerraformプロジェクトです。本記事ではAWS環境におけるIAM権限設定の典型的な誤りを通じて、どのようなデータ漏洩リスクが生じうるかを具体的に解説します。
1. ワイルドカードリソース指定の危険性
terraform/aws/iam.tfに記載された以下のような全リソース対象の権限設定は重大なセキュリティリスクを伴います。
{
"Statement": [
{
"Action": [
"ec2:DescribeInstances",
"s3:GetObject",
"lambda:InvokeFunction"
],
"Effect": "Allow",
"リソース": "arn:aws:s3:::target-bucket/*"
}
]
}
このように特定リソースを明示せずに"*"を使用すると、すべてのリソースにアクセス可能になってしまうため、アクセスキー漏洩時の被害範囲が拡大します。
2. 設定ファイルへの機密情報出力問題
以下の出力定義はTerraform状態ファイルに機密情報を残す重大な誤りです。
出力 "利用者名" {
値 = aws_iam_user.管理者.name
}
出力 "アクセスキー" {
値 = aws_iam_access_key.管理者.encrypted_secret
}
機密情報はTerraformのsensitiveフラグを使用して出力を保護する対策が必要です。
3. サービス操作の無制限許可
"ec2:*"や"s3:*"といったサービス全体の権限を付与する設定は、不要な操作まで許可してしまうため、特定API操作に権限を限定すべきです。
4. 長期アクセスキーの運用リスク
アクセスキーの自動ローテーション機能を実装しない場合、永久に有効なキーが存在し続けるため、以下の設定で6ヶ月ごとの強制ローテーションを推奨します。
リソース "aws_iam_account_password_policy" "ポリシー" {
パスワード再利用 = 24
有効期限 = 180
}
5. 多要素認証の欠如
IAMユーザー設定にMFA要件が含まれていない場合、単一の資格情報でシステムにアクセス可能になってしまうため、必須セキュリティ対策の一つです。
6. クロスアカウントアクセスのリスク
リソース指定が曖昧な場合、信頼設定された他アカウントのリソースにもアクセス可能になってしまう可能性があります。
7. 環境条件による制限の欠如
IPアドレスや時間帯などによるアクセス制限を設けない場合、盗難された資格情報が全世界どこからでも利用可能になってしまいます。
8. 運用時の権限見直し不足
使用頻度の低い権限が放置されることで、攻撃面が広がるため、定期的な権限レビューが必要です。
9. 最小権限原則の未適用
必要最小限の権限設定を行わないと、想定外の操作が可能になるため、特定アクションのみを許可する細かいポリシー設計が求められます。
IAMセキュリティ強化のベストプラクティス
- 特定リソースARNの明示的指定
- 必要最小限のAPI操作許可
- アクセスキーの自動ローテーション
- MFAの強制設定
- 条件付きポリシーの活用(IP制限等)
- 機密情報の出力回避
- 権限の定期的な見直し
- 権限境界ポリシーの適用