IAM ユーザーの iam:AddUserToGroup 権限の確認

ユーザーが自身や他のユーザーを追加できる IAM グループを制限してください。

説明

IAM ユーザーに広い iam:AddUserToGroup を許可すると、自身や他の IAM ユーザーを同じアカウントのグループに追加できます。追加先のグループによって実効権限が増える場合、自身や制御可能な他のユーザーの権限昇格に利用されるおそれがあります。

Resource は追加先のグループ ARN を指定するもので、追加するユーザーの ARN を指定する範囲ではありません。ユーザーと追加先の両方を確認する必要があります。アクセス許可の境界、組織のポリシー、明示的な拒否は、付与された権限を引き続き制限できます。

想定される影響

  • ユーザーが承認を受けずに、権限の強いグループのアクセス権限を得る可能性があります。
  • 他のユーザーに不要な権限が付与され、機密リソースへのアクセスが拡大するおそれがあります。

対処方法

一般ユーザーから不要な iam:AddUserToGroup を削除し、メンバー変更は承認済みの管理ロールで行ってください。Resource を必要な追加先グループ ARN に限定し、変更の承認手順で追加するユーザーを確認してください。必要な変更が機能し、未承認の追加が阻止されることを試験し、変更ログを確認してください。

例

同じユーザーとインラインポリシーを維持し、グループメンバーの変更権限を削除する比較です。

変更前

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

resource "aws_iam_user_policy" "example" {
  name = "test_inline_policy"
  user = aws_iam_user.example.name

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

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

変更後

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

resource "aws_iam_user_policy" "example" {
  name = "test_inline_policy"
  user = aws_iam_user.example.name

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

この許可文には EC2 の参照操作だけを残します。他のポリシーによるグループメンバーの変更権限と参照範囲も確認してください。

参考資料