创建附加到用户的IAM策略,限制用户通过某些操作创建自定义托管策略

时间:2018-06-23 09:23:15

标签: amazon-web-services amazon-iam aws-iam

我需要创建一个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权限,但他们不应该能够创建上述策略。

2 个答案:

答案 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

相关问题