過剰な権限を許可する AWS IAM ポリシー

IAM 権限を必要な操作と対象リソースに絞ってください。

説明

IAM の許可ポリシーで全操作と全リソースを許可すると、業務に必要な範囲を超える権限を与える可能性があります。認証情報の漏えいや操作ミスによる被害を減らすため、必要な操作とリソースにアクセスを制限してください。

実際の要求には、明示的な拒否、アクセス許可の境界、組織ポリシーなども適用されます。リソース単位の制限に対応しない操作では、必要なアクションと適用可能な条件を制限してください。

想定される影響

  • 漏えいした認証情報により、不要なデータの閲覧・変更やリソース削除が可能になるおそれがあります。
  • 過剰な管理権限は、セキュリティ設定の変更や追加の権限付与によって被害を広げる可能性があります。

対処方法

  • 全操作の許可を必要な操作の一覧に置き換え、対応する操作をリソース ARN で制限してください。
  • 用途ごとに権限を分け、使用記録と業務要件に基づいて不要な許可を削除してください。
  • 変更後に必要な操作が成功し、未承認の操作が拒否されることを確認してください。

例

同じユーザーポリシーの範囲を絞る抜粋です。参照先の IAM ユーザーと S3 バケットは別途定義してください。オブジェクト読み取り以外も必要な場合は、追加権限を別途検討してください。

変更前

hcl
resource "aws_iam_user_policy" "full_access_policy" {
  name = "excess_policy"
  user = aws_iam_user.user.name

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
EOF
}

全操作・全リソースに Allow を付与しています。他の制御で制限される場合でも、不要に広い許可は削除してください。

変更後

hcl
resource "aws_iam_user_policy" "full_access_policy" {
  name = "excess_policy"
  user = aws_iam_user.user.name

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "${aws_s3_bucket.app_data.arn}/*"
    }
  ]
}
EOF
}

同じポリシーを指定バケット内のオブジェクト読み取りに限定しています。このステートメントはバケットの一覧取得や書き込みを許可しません。

参考資料