我需要创建一个IAM策略,并且该策略将附加到用户。我想要的是,具有此策略的用户能够创建新的IAM角色和自定义策略,但是我不希望用户通过诸如iam:*或admin策略之类的操作来创建任何自定义策略。例如:
我的政策包含声明
{
"Sid": "LimitIamRoleAndPolicyAccess",
"Effect": "Allow",
"Action": [
"iam:AttachRolePolicy",
"iam:CreatePolicy",
"iam:CreatePolicyVersion",
"iam:CreateRole"
],
"Resource": "*",
"Condition": {
"ArnNotEquals": {
"iam:PolicyArn": [
"arn:aws:iam::aws:policy/AdministratorAccess",
"arn:aws:iam::*:group/Administrators",
"arn:aws:iam::aws:policy/IAMFullAccess"
]
}
}
上面的语句限制了用户对角色附加IAMFullAccess权限,但是该用户可以创建自定义策略并提供如下所示的json,以允许访问所有iam服务
{
"Effect": "Allow",
"Action": "iam:*",
"Resource": "*"
}
甚至更糟的是,他可以制定类似的政策
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
可以访问所有内容。我如何限制他们制定此类政策。对我来说重要的是,他们确实拥有iam:CreatePolicy权限,但他们不应该能够创建上述策略。
答案 0 :(得分:0)
要回答您的问题:否。一旦授予“ iam:CreatePolicy”,就无法控制用户可以将什么放入客户策略中。
您说用户拥有“ iam:CreatePolicy”非常重要。为何有特定原因?可能的解决方案可能是不允许您的用户创建策略,并允许他们将经过批准的AWS托管策略列表附加到他们创建的角色。这将需要您确定哪组AWS托管策略可以涵盖您希望用户授予自己的权限,而不授予您不希望他们拥有的任何权限。
如果您选择这种方式,将已批准的政策列入白名单,而不是将未批准的政策列入黑名单是一个好习惯。如果AWS将来某个时候发布新的类似上帝的政策,则用户将立即获得附加它的许可,因为它不会出现在黑名单中。使用白名单可以防止这种情况的发生。
答案 1 :(得分:0)
在用户策略的“ iam:CreateUser”权限上使用“ iam:permissionboundary”条件
"Condition": {"StringEquals":
{"iam:PermissionsBoundary": "arn:aws:iam::111122223333:policy/XCompanyBoundaries"}}
您的方案是to this example