В настоящее время у меня есть эта политика (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}"
]
}
}
}
Но никаких кубиков. Это просто глобальное условие, которое не позволяет добавлять ВСЕ пользователей в группы, чего я не хочу. Кто-нибудь придумал решение этого?