

# 管理对角色管理器的访问权限
<a name="id_roles_create_role-manager_enable-use"></a>

您可以在两个级别控制对角色管理器的访问权限。IAM 权限决定账户中可启用角色管理器以及使用其所提供角色的人员。在组织中，服务控制策略（SCP）决定了成员账户可以执行的操作。

## 角色管理器的权限
<a name="id_roles_create_role-manager_permissions"></a>

要启用或禁用角色管理器，您需要 `iam:PutAccountProperties` 权限。Amazon 托管式策略 `IAMFullAccess` 包含该权限。

要使用角色管理器，用户需要拥有角色管理器代表其执行的操作的 IAM 权限。角色管理器通过 `AcquireRole` API 提供角色，这需要根据用户的权限评估每个底层 IAM 操作：
+ 如果账户中已存在与模板匹配的角色，则 `AcquireRole` 会返回该角色。这需要 `iam:GetRole` 权限。
+ 如果不存在匹配的角色，则 `AcquireRole` 会根据模板创建一个角色。这需要 `iam:CreateRole` 权限，以及模板所定义内容对应的权限：若模板添加内联策略，则需要 `iam:PutRolePolicy` 权限；若模板附加托管式策略，则需要 `iam:AttachRolePolicy` 权限。

拥有完整 IAM 访问权限的用户拥有角色管理器所需的所有权限。要查看特定模板所需的确切操作，请使用 `GetRoleTemplateVersion` 检索模板并查看其策略。

角色管理器创建角色时，Amazon CloudTrail 会将此创建过程记录为单个 `AcquireRole` 事件。该事件显示调用了该操作的人员、所使用的角色模板和参数值，以及所创建的角色。

以下示例显示，角色管理器代表担任 `Admin` 角色的用户调用了 `AcquireRole` 操作，并使用 `PowerUserRoleTemplate` 角色模板创建了角色 `PowerUserRole`。

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROA123EXAMPLE:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "arn": "arn:aws:sts::123456789012:assumed-role/Admin/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "accountId": "123456789012",
        "accessKeyId": "ASIAWZYMLEXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROA123EXAMPLE",
                "arn": "arn:aws:iam::123456789012:role/Admin",
                "accountId": "123456789012",
                "userName": "Admin"
            },
            "attributes": {
                "creationDate": "2026-08-11T18:18:50Z",
                "mfaAuthenticated": "false"
            }
        },
        "onBehalfOf": {
            "userId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
            "identityStoreArn": "arn:aws:identitystore::111122223333:identitystore/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
        }
    },
    "eventTime": "2026-08-11T18:23:00Z",
    "eventSource": "iam.amazonaws.com",
    "eventName": "AcquireRole",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.0",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36",
    "requestParameters": {
        "templateArn": "arn:aws:iam::aws:role-template/iam.amazonaws.com/PowerUserRoleTemplate:1",
        "templateMinorVersion": 0,
        "replacementValues": {
            "AWSServiceName": {
                "values": [
                    "iam.amazonaws.com"
                ]
            }
        }
    },
    "responseElements": {
        "role": {
            "path": "/",
            "roleName": "PowerUserRole",
            "roleId": "AROA987EXAMPLE",
            "arn": "arn:aws:iam::123456789012:role/PowerUserRole",
            "createDate": "2026-08-11T18:23:00Z",
            "assumeRolePolicyDocument": "%7B%22Version%22:%222012-10-17%22,%22Statement%22:%5B%7B%22Effect%22:%22Allow%22,%22Principal%22:%7B%22Service%22:%22iam.amazonaws.com%22%7D,%22Action%22:%22sts:AssumeRole%22%7D%5D%7D"
        }
    },
    "requestID": "fde3dac0-73ac-491c-876b-EXAMPLE89c57",
    "eventID": "c93332cf-1429-4aee-bcaa-EXAMPLE3790d",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "eventCategory": "Management",
    "tlsDetails": {
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "iam.amazonaws.com"
    },
    "sessionCredentialFromConsole": "true"
}
```

## 控制组织中的角色管理器
<a name="id_roles_create_role-manager_scp"></a>

您可以使用 Amazon Organizations 服务控制策略（SCP）控制整个组织中的角色管理器。以下示例介绍了如何单独阻止启用角色管理器、阻止角色创建或阻止基于模板的角色创建。

这些示例使用[拒绝列表策略](https://docs.amazonaws.cn/organizations/latest/userguide/orgs_manage_policies_scps_evaluation.html#strategy_using_scps)，这意味着您还需要 `FullAWSAccess` 或其他允许对组织实体执行操作的策略。您仍然需要使用基于身份的策略向主体授予权限。

要防止成员账户通过控制台或 API 启用角色管理器，请拒绝 `iam:PutAccountProperties` 权限。直接通过 Organizations 创建新账户时，建议采用此策略。

```
{
    "Sid": "DenyRoleManagerEnablement",
    "Effect": "Deny",
    "Action": "iam:PutAccountProperties",
    "Resource": "*",
    "Condition": {
        "ForAnyValue:StringEquals": {
            "iam:AccountPropertyNamespaces": "RoleManager"
        }
    }
}
```

### 阻止使用角色管理器的访问权限
<a name="id_roles_create_role-manager_scp_block-use"></a>

要阻止使用角色管理器，请使用 `iam:RoleTemplateARN` 上下文键，它位于通过模板创建角色的 IAM 操作中。以下策略拒绝针对 `iam:RoleTemplateARN` 上下文键具有非空值的所有 IAM 操作。此策略不会阻止所有角色的创建，它仅阻止通过角色管理器创建角色，以及通过 SDK 创建基于模板的角色。

```
{
    "Sid": "DenyTemplatedRoleCreation",
    "Effect": "Deny",
    "Action": "iam:*",
    "Resource": "*",
    "Condition": {
        "Null": {
            "iam:RoleTemplateARN": false
        }
    }
}
```

### 阻止角色创建，通过角色管理器创建除外
<a name="id_roles_create_role-manager_scp_enable-only"></a>

要仅允许通过角色管理器创建角色，请使用以下策略来阻止非角色管理器方式的角色创建。此策略仍允许直接通过 SDK 创建基于模板的角色。

```
{
    "Sid": "DenyNonTemplatedRoleCreation",
    "Effect": "Deny",
    "Action": [
        "iam:CreateRole",
        "iam:AttachRolePolicy",
        "iam:PutRolePolicy",
        "iam:PutRolePermissionsBoundary",
        "iam:TagRole"
    ],
    "Resource": "*",
    "Condition": {
        "Null": {
            "iam:RoleTemplateARN": true
        }
    }
}
```

## 相关信息
<a name="id_roles_create_role-manager_enable-use_related"></a>
+ [使用角色管理器自动创建角色](id_roles_create_role-manager.md)
+ [对自动创建的角色应用最低权限](id_roles_create_role-manager_least-privilege.md)
+ [角色模板概述](id_roles_create_role-template.md)