我该如何使用权限边界限制 IAM 用户和角色的范围,以及防止权限升级?

上次更新时间:2020 年 9 月 11 日

我该如何创建权限边界策略,以限制 AWS Identity and Access Management (IAM) 管理员访问权限并防止权限升级?

解决方法

使用以下 IAM 策略示例来提供这些限制:

任何由 IAM 管理员创建的 IAM 委托人都具有对 AWS 资源进行访问的完整权限。完整的 AWS 资源访问权限取决于基于身份的策略,因为权限边界本身不会提供权限。 该策略会限制 IAM 委托人访问与 AWS Billing and Cost Management 相关的服务。 IAM 委托人无法更改权限边界,从而使自己具有访问受限制服务的权限。 IAM 管理员无法创建比他们拥有更高权限的 IAM 委托人。 由 IAM 管理员创建的 IAM 委托人无法创建比 IAM 管理员拥有更高权限的 IAM 委托人。

将此策略另存为托管策略,并且命名为 ScopePermissions。使用您的账户 ID 替换 YourAccount_ID

{
    "Version": "2012-10-17",
    "Statement": ,
            "Resource": "*"
        },
        {
            "Sid": "DenyPermBoundaryIAMPolicyAlteration",
            "Effect": "Deny",
            "Action": ,
            "Resource": 
        },
        {
            "Sid": "DenyRemovalOfPermBoundaryFromAnyUserOrRole",
            "Effect": "Deny",
            "Action": ,
            "Resource": ,
            "Condition": {
                "StringEquals": {
                    "iam:PermissionsBoundary": "arn:aws:iam::YourAccount_ID:policy/ScopePermissions"
                }
            }
        },
        {
            "Sid": "DenyAccessIfRequiredPermBoundaryIsNotBeingApplied",
            "Effect": "Deny",
            "Action": ,
            "Resource": ,
            "Condition": {
                "StringNotEquals": {
                    "iam:PermissionsBoundary": "arn:aws:iam::YourAccount_ID:policy/ScopePermissions"
                }
            }
        },
        {
            "Sid": "DenyUserAndRoleCreationWithOutPermBoundary",
            "Effect": "Deny",
            "Action": ,
            "Resource": ,
            "Condition": {
                "StringNotEquals": {
                    "iam:PermissionsBoundary": "arn:aws:iam::YourAccount_ID:policy/ScopePermissions"
                }
            }
        }
    ]
}

要测试此策略:

1. 创建一个新的 IAM 用户,名为 Bob

2. 将 AdministratorAccess 策略直接附加到 Bob,并附加 ScopePermissions 作为权限边界。

3. 以 Bob 的身份登录 AWS 管理控制台。然后,尝试:

访问 AWS Billing and Cost Management 服务 Cost Explorer。 删除 Bob 的权限边界。 创建新的不具有权限边界的 IAM 用户和角色。 创建一个名为 Alice 并实施权限边界的 IAM 用户,然后将 AdministratorAccess 策略作为基于身份的策略附加到 Alice

4. 以 Alice 的身份登录 AWS 管理控制台,然后尝试:

访问 AWS Billing and Cost Management 服务 Cost Explorer。 删除 Alice 的权限边界。 创建新的不具有权限边界的 IAM 用户和角色。

权限边界将确保:

Bob 不会在不附加权限边界 ScopePermissions 的情况下创建新的用户。 由 Bob 创建的 IAM 用户和角色具有与 Bob 相同或更低的权限。 BobAlice 不能更改获取权限边界的 IAM 策略,例如,删除该策略的默认版本。 BobAlice 不能更改或删除所实施的其本身或其他用户的权限边界。 权限边界拒绝对受限制的服务进行访问。 Alice 会展现出与 Bob 相同的权限,防止权限升级。如果 Alice 创建新的 IAM 用户,则该新用户不会拥有比 Bob 更高的权限。此权限边界确保不会创建没有权限边界的 IAM 委托人,从而防止权限升级。