IAM ロールの iam:AddUserToGroup 権限の確認

ロールによる IAM グループメンバーの変更権限を制限してください。

説明

iam:AddUserToGroup を持つロールを使う主体は、同じアカウントの IAM ユーザーをグループに追加できます。自身が制御できるユーザーを、より広い実効権限を付与するグループに追加すると、そのユーザーを通じた権限昇格の経路になるおそれがあります。

ロール自体は IAM グループに参加できません。ユーザーを追加しても呼び出し元ロールの権限は変わらず、そのユーザーとしてログインできるようにもなりません。Resource は追加先グループを限定するため、追加するユーザーも別途承認する必要があります。

想定される影響

  • 権限の強いグループに未承認のユーザーが追加され、アクセスが拡大する可能性があります。
  • 侵害された管理ロールが、ユーザーへの権限付与に悪用されるおそれがあります。

対処方法

ロールに不要な iam:AddUserToGroup を削除し、必要な場合は Resource を承認済みの追加先グループ ARN に限定してください。ロールを使用できる主体と追加するユーザーの両方を確認してください。ユーザーに適用される他の権限制限も確認し、必要なメンバー変更が機能し、未承認の追加が阻止されることを試験してください。

例

同じロールとインラインポリシーの抜粋です。省略した信頼ポリシーは、実際の構成に別途定義してください。

変更前

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

resource "aws_iam_role_policy" "example" {
  name = "test_inline_policy"
  role = aws_iam_role.example.name

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

このロールを使う主体に、アカウント内のグループ全体へユーザーを追加する権限を付与します。

変更後

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

resource "aws_iam_role_policy" "example" {
  name = "test_inline_policy"
  role = aws_iam_role.example.name

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

この許可文には EC2 の参照操作だけを残します。他のポリシーのユーザー追加権限と不要な参照権限も確認してください。

参考資料