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

メンバーがユーザーを追加できる IAM グループを制限してください。

説明

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

Resource には追加先のグループ ARN を指定します。グループを制限するだけでは追加するユーザーは限定されないため、ユーザーと追加先の両方を承認する必要があります。アクセス許可の境界、組織のポリシー、明示的な拒否は、追加されたユーザーのアクセスを引き続き制限できます。

想定される影響

  • 未承認のユーザーが、より強い権限を持つグループのアクセス権限を得る可能性があります。
  • メンバー変更による権限付与が、既存の承認手順を迂回するおそれがあります。

対処方法

一般グループから不要な iam:AddUserToGroup を削除し、メンバー管理は承認済みの管理ロールで行ってください。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:AddUserToGroup",
        ]
        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 の参照操作に限定します。他のポリシーのメンバー管理権限と参照範囲も確認してください。

参考資料