【问题标题】:Trying to give IAM user rights to create and assign roles, but limit the type of policies available尝试授予 IAM 用户创建和分配角色的权限,但限制可用的策略类型
【发布时间】:2020-09-13 17:14:25
【问题描述】:

我正在尝试授予用户创建角色的权限(因为我没有提供创建访问密钥的权限)。

我想出了一个允许用户创建和分配角色的策略。 我遇到的问题是,现在用户可以使用“AdministratorAccess”策略创建角色,即使他们不是管理员。有没有办法拒绝选项列表中的某些政策?

以下是通过提供的向导完成的策略。

谢谢,

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "iam:CreateInstanceProfile",
        "iam:UpdateAssumeRolePolicy",
        "iam:ListRoleTags",
        "iam:UntagRole",
        "iam:PutRolePermissionsBoundary",
        "iam:TagRole",
        "iam:RemoveRoleFromInstanceProfile",
        "iam:CreateRole",
        "iam:AttachRolePolicy",
        "iam:PutRolePolicy",
        "iam:ListInstanceProfilesForRole",
        "iam:PassRole",
        "iam:DetachRolePolicy",
        "iam:DeleteRolePolicy",
        "iam:ListAttachedRolePolicies",
        "iam:ListRolePolicies",
        "iam:ListPolicies",
        "iam:GetRole",
        "iam:ListRoles",
        "iam:DeleteRole",
        "iam:UpdateRoleDescription",
        "iam:CreateServiceLinkedRole",
        "iam:UpdateRole",
        "iam:DeleteServiceLinkedRole",
        "iam:GetRolePolicy"
      ],
      "Resource": "*",
      "Condition": {
        "BoolIfExists": {
          "aws:MultiFactorAuthPresent": "true"
        }
      }
    }
  ]
}

编辑:2020 年 6 月 26 日 我尝试按照建议使用权限边界,但也许我的理解仍然不足。我制定了一项新政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyAdmin",
            "Effect": "Deny",
            "Action": [
                "iam:*"
            ],
            "Resource": "*",
            "Condition": {
                "ArnEquals": {
                    "iam:PolicyArn": [
                        "arn:aws:iam::aws:policy/AdministratorAccess"
                    ]
                }
            }
        }
    ]
}

我认为这意味着在涉及管理员访问策略时拒绝任何/所有 iam 操作。但是,结果是所有角色分配/创建都被拒绝,即使附加的策略不是 AdministratorAccess。但是,如果我设置一个策略并添加一个 ArnNotEquals AdministratorAccess 的条件 - 那么我似乎能够做我想做的事(只是将它用作策略,而不是作为边界)

根据我所看到的,权限边界可能是正确的方法,但我还不能完全理解,所以我犹豫是否将其标记为“正确答案”。

【问题讨论】:

标签: amazon-web-services amazon-iam


【解决方案1】:

您可以使用 AWS IAM 权限边界:Permissions Boundaries for IAM Entities - AWS Identity and Access Management

“权限边界是一项高级功能,用于使用托管策略设置基于身份的策略可以授予 IAM 实体的最大权限。实体的权限边界允许它仅执行其基于身份的策略及其权限边界所允许的操作。“

这是 AWS 安全博客上的分步介绍:Delegate permission management to developers by using IAM permissions boundaries | AWS Security Blog

【讨论】:

    【解决方案2】:

    因此,使用 John Rotenstein 的指示并最终意识到我哪里出错了获得我想要的方法是向用户添加以下权限边界:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "BoundaryAllowAllNotAdminAccess",
                "Effect": "Allow",
                "Action": "*",
                "Resource": "*",
                "Condition": {
                    "ArnNotEquals": {
                        "iam:PolicyArn": [
                            "arn:aws:iam::aws:policy/AdministratorAccess"
                        ]
                    }
                }
            }
        ]
    }
    

    我出错的地方是我认为我需要拒绝,但边界是一个 AND 限制,所以我可以允许所有,只要它不是 AdministratorAccess,然后其他策略将提供实际操作/资源,AWS 将允许只要它不使用 AdministratorAccess。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 2021-10-16
      • 2019-07-13
      • 2020-06-01
      相关资源
      最近更新 更多