Назад | Перейти на главную страницу

Политика AWS IAM для всех, кроме вас самих

В настоящее время у меня есть эта политика (HCL)

data "aws_caller_identity" "current" {}

data "aws_iam_policy_document" "admin_policy_doc" {
  statement {
    sid = "DenyAccessToModifySelf"
    effect = "Deny"
    actions = [
      "iam:AddUserToGroup",
      "iam:AttachUserPolicy"
    ]

    resources = [
     "arn:aws:iam::${data.aws_caller_identity.current.account_id}:user/&{aws:username}",
    ]
  }

  statement {
    sid = "AllowIAMControl"
    effect = "Allow"
    actions = ["iam:*"]
    resources = ["*"]
  }
}

Это сделано для того, чтобы дать администратору возможность обновлять чужие разрешения, не обновляя свои собственные, в соответствии с разделением обязанностей и минимальными привилегиями. Однако кажется, что использование рассматриваемого ресурса на AddUserToGroup разрешение - это группа, а не пользователь. Следовательно, пользователь может добавить себя в более привилегированную группу, если у него есть это разрешение.

Я также пробовал использовать такие условия:

{
    "Sid": "DenyAccessToAddSelfToGroup",
    "Effect": "Deny",
    "Action": [
        "iam:AddUserToGroup"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:username": [
                "${aws:username}"
            ]
        }
    }
}

Но никаких кубиков. Это просто глобальное условие, которое не позволяет добавлять ВСЕ пользователей в группы, чего я не хочу. Кто-нибудь придумал решение этого?