View a markdown version of this page

管理对角色管理器的访问权限 - AWS Identity and Access Management

管理对角色管理器的访问权限

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

角色管理器的权限

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

要使用角色管理器,用户需要拥有角色管理器代表其执行的操作的 IAM 权限。角色管理器通过 AcquireRole API 提供角色,这需要根据用户的权限评估每个底层 IAM 操作:

  • 如果账户中已存在与模板匹配的角色,则 AcquireRole 会返回该角色。这需要 iam:GetRole 权限。

  • 如果不存在匹配的角色,则 AcquireRole 会根据模板创建一个角色。这需要 iam:CreateRole 权限,以及模板所定义内容对应的权限:若模板添加内联策略,则需要 iam:PutRolePolicy 权限;若模板附加托管式策略,则需要 iam:AttachRolePolicy 权限。

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

角色管理器创建角色时,AWS 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" }

控制组织中的角色管理器

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

这些示例使用拒绝列表策略,这意味着您还需要 FullAWSAccess 或其他允许对组织实体执行操作的策略。您仍然需要使用基于身份的策略向主体授予权限。

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

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

阻止使用角色管理器的访问权限

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

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

阻止角色创建,通过角色管理器创建除外

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

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