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

Posted

技术标签:

【中文标题】创建附加到用户的 IAM 策略,限制用户使用某些操作创建自定义托管策略【英文标题】:Creating an IAM policy attached to a user restricting user from creating custom managed policy with some actions 【发布时间】:2018-06-23 09:23:14 【问题描述】:

我需要创建一个 IAM 策略,并且该策略将附加到用户。我想要的是,具有此策略的用户能够创建新的 IAM 角色和自定义策略,但我不希望用户使用 iam:* 或管理策略等操作创建任何自定义策略。例如:

我的保单包含声明

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

【问题讨论】:

【参考方案1】:

对用户策略的“iam:CreateUser”权限使用“iam:permissionboundary”条件

"Condition": "StringEquals": 
                "iam:PermissionsBoundary": "arn:aws:iam::111122223333:policy/XCompanyBoundaries"

你的场景是一样的to this example

【讨论】:

以上是关于创建附加到用户的 IAM 策略,限制用户使用某些操作创建自定义托管策略的主要内容,如果未能解决你的问题,请参考以下文章

限制启动实例的 Amazon IAM 用户策略

使用 Boto3 将 IAM 用户附加到 IAM 组

使用 IAM 策略模拟器测试 IAM 策略

是否必须创建 IAM 用户才能使用 AWS CodeCommit?

如何将 IAM 角色分配给用户或组

如何在 boto3 中获取 iam 用户的内联策略文档?