IAM グループの iam:PutRolePolicy 権限の確認

グループメンバーが変更できるロールのインラインポリシーを制限してください。

説明

グループを通じて広い iam:PutRolePolicy を許可すると、メンバーがロールのインラインポリシーを追加・更新できます。変更したロールを引き受けるか、そのロールを使うワークロードを制御できれば、拡大した権限を利用できるおそれがあります。

ロールポリシーの変更だけでは信頼ポリシーは変わらず、ロールを引き受ける権限も付与されません。対象ロールの境界、組織ポリシー、明示的な拒否も引き続き適用されます。

想定される影響

  • ロールを使うサービスに、不要なリソースへのアクセス権限が追加される可能性があります。
  • 未承認のロールポリシー変更が、複数のワークロードの実行権限に影響するおそれがあります。

対処方法

一般のグループに不要な iam:PutRolePolicy を削除してください。必要な変更は承認済みの管理ロールで行い、Resource を対象ロール ARN に限定してください。ロールを使う経路とポリシー内容を確認し、正常な作業が成功し、未承認の変更が阻止されることを試験してください。

例

同じグループとインラインポリシーで、ロールポリシーの変更権限を減らす比較です。

変更前

hcl
resource "aws_iam_group" "example" {
  name = "cosmic"
}

resource "aws_iam_group_policy" "example" {
  name  = "test_inline_policy"
  group = aws_iam_group.example.name

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = [
          "iam:PutRolePolicy",
        ]
        Effect   = "Allow"
        Resource = "*"
      },
    ]
  })
}

メンバーに、ロール全体のインラインポリシーを追加・更新する権限を付与します。

変更後

hcl
resource "aws_iam_group" "example" {
  name = "cosmic"
}

resource "aws_iam_group_policy" "example" {
  name  = "test_inline_policy"
  group = aws_iam_group.example.name

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = [
          "ec2:Describe*",
        ]
        Effect   = "Allow"
        Resource = "*"
      },
    ]
  })
}

この許可文を EC2 の参照操作に限定します。他のポリシーにあるロール変更権限と、参照操作の必要性も確認してください。

参考資料