

# 担任角色的方法
<a name="id_roles_manage-assume"></a>

您必须先对用户[授予切换到您创建的角色的权限](id_roles_use_permissions-to-switch.md)，然后用户、应用程序或服务才能使用该角色。您可使用附加到组或用户的任何策略授予所需权限。授予权限后，用户可以从 Amazon Web Services 管理控制台、适用于 Windows PowerShell 的工具、Amazon Command Line Interface（Amazon CLI）和 [https://docs.amazonaws.cn/STS/latest/APIReference/API_AssumeRole.html](https://docs.amazonaws.cn/STS/latest/APIReference/API_AssumeRole.html) API 中代入角色。

**重要**  
当您以编程方式而不是在 IAM 控制台中创建角色，则除最长可达 64 个字符的 `RoleName` 外，您还可以选择添加最长 512 个字符的 `Path`。不过，如果您打算通过 Amazon Web Services 管理控制台 中的 **Switch Role**（切换角色）功能使用角色，则组合的 `Path` 和 `RoleName` 不能超过 64 个字符。

用于代入角色的方法决定了谁可以代入该角色，以及角色会话可以持续多长时间。使用 `AssumeRole*` API 操作时，您所担任的 IAM 角色为资源。调用 `AssumeRole*` API 操作的用户或角色是主体。

下表比较了代入角色的方法。


|  担任角色的方法 |  **谁可以担任角色**  | **用于指定凭证生命周期的方法** |  **凭证生命周期 (最小值 \$1 最大值 \$1 默认值)**  | 
| --- | --- | --- | --- | 
| Amazon Web Services 管理控制台 | 用户或角色¹（通过[切换角色](id_roles_use_switch-role-console.md)） | Role（角色）“Summary（摘要）”页面上的 Maximum session duration（最长会话持续时间） | 15 分 \$1 最大会话持续时间设置² \$1 1 小时 | 
| [https://docs.amazonaws.cn/cli/latest/reference/sts/assume-role.html](https://docs.amazonaws.cn/cli/latest/reference/sts/assume-role.html) CLI 或 [https://docs.amazonaws.cn/STS/latest/APIReference/API_AssumeRole.html](https://docs.amazonaws.cn/STS/latest/APIReference/API_AssumeRole.html) API 操作 |  用户或角色¹ | duration-seconds CLI 或 DurationSeconds API 参数 | 15 分 \$1 最大会话持续时间设置² \$1 1 小时  | 
| [https://docs.amazonaws.cn/cli/latest/reference/sts/assume-role-with-saml.html](https://docs.amazonaws.cn/cli/latest/reference/sts/assume-role-with-saml.html) CLI 或 [https://docs.amazonaws.cn/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.amazonaws.cn/STS/latest/APIReference/API_AssumeRoleWithSAML.html) API 操作 | 使用 SAML 验证的任何用户 | duration-seconds CLI 或 DurationSeconds API 参数 | 15 分 \$1 最大会话持续时间设置² \$1 1 小时  | 
| [https://docs.amazonaws.cn/cli/latest/reference/sts/assume-role-with-web-identity.html](https://docs.amazonaws.cn/cli/latest/reference/sts/assume-role-with-web-identity.html) CLI 或 [https://docs.amazonaws.cn/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.amazonaws.cn/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) API 操作 | 使用 OIDC 提供者验证身份的任何用户 | duration-seconds CLI 或 DurationSeconds API 参数 | 15 分 \$1 最大会话持续时间设置² \$1 1 小时  | 
| 使用 [ 构造的](id_roles_providers_enable-console-custom-url.md)控制台 URLAssumeRole  | 用户或角色 | URL 中的 SessionDuration HTML 参数 | 15 分钟 \$1 12 小时 \$1 1 小时  | 
| 使用 [ 构造的](id_roles_providers_enable-console-custom-url.md)控制台 URLAssumeRoleWithSAML  | 使用 SAML 验证的任何用户 | URL 中的 SessionDuration HTML 参数 | 15 分钟 \$1 12 小时 \$1 1 小时 | 
| 使用 [ 构造的](id_roles_providers_enable-console-custom-url.md)控制台 URLAssumeRoleWithWebIdentity  | 使用 OIDC 提供者验证身份的任何用户 | URL 中的 SessionDuration HTML 参数 | 15 分钟 \$1 12 小时 \$1 1 小时  | 

¹ 使用一个角色的凭证代入其他角色称为[角色链](id_roles.md#iam-term-role-chaining)。使用角色链时，角色的会话持续时间限制为 1 小时。这适用于 Amazon Web Services 管理控制台 角色切换、Amazon CLI 和 API 操作。此限制不适用于最初通过用户凭证代入角色的人，也不适用于使用实例配置文件在 Amazon EC2 实例上运行的应用程序。

² 该设置可以具有 1 小时到 12 小时之间的值。有关修改最大会话持续时间设置的详细信息，请参阅 [IAM 角色管理](id_roles_manage.md)。该设置确定在获取角色凭证时可请求的最大会话持续时间。例如，在使用 [AssumeRole\$1](https://docs.amazonaws.cn/STS/latest/APIReference/API_AssumeRole.html) API 操作担任角色时，您可以使用 `DurationSeconds` 参数指定会话长度。可以使用该参数指定 900 秒（15 分钟）到角色的最大会话持续时间设置之间的角色会话长度。在控制台内切换角色的 IAM 用户被授予最大会话持续时间或其用户会话中的剩余时间（以较少者为准）。假定您在角色上设置 5 小时的最大持续时间。已登录到控制台 10 小时（默认最多 12 小时）的 IAM 用户切换到该角色。可用角色会话持续时间为 2 小时。要了解如何查看您的角色的最大值，请参阅本页后面的[更新角色的最长会话持续时间](id_roles_update-role-settings.md#id_roles_update-session-duration)。

**备注**  
最大会话持续时间设置不限制 Amazon 服务建立的会话。
Amazon EC2 IAM 角色凭证不受角色中配置的最长会话持续时间的限制。
要允许用户在角色会话中重新代入当前角色，请将角色 ARN 或 Amazon Web Services 账户 ARN 指定为角色信任策略中的主体。提供计算资源（例如 Amazon EC2、Amazon ECS、Amazon EKS 和 Lambda）的 Amazon Web Services 服务会提供临时凭证并自动更新这些凭证。这样可以确保您始终拥有一组有效的凭证。对于这些服务，无需重新代入当前角色即可获得临时凭证。但是，如果您需要传递 [会话标签](id_session-tags.md) 或者 [会话策略](access_policies.md#policies_session)，则需要重新代入当前角色。要了解如何修改角色信任策略以添加主体角色 ARN 或 Amazon Web Services 账户 ARN，请参阅 [更新角色信任策略](id_roles_update-role-trust-policy.md)。

**Topics**
+ [从用户切换到 IAM 角色（控制台）](id_roles_use_switch-role-console.md)
+ [切换到 IAM 角色（Amazon CLI）](id_roles_use_switch-role-cli.md)
+ [切换到 IAM 角色（Tools for Windows PowerShell）](id_roles_use_switch-role-twp.md)
+ [切换到 IAM 角色（Amazon API）](id_roles_use_switch-role-api.md)
+ [使用 IAM 角色向在 Amazon EC2 实例上运行的应用程序授予权限](id_roles_use_switch-role-ec2.md)
+ [使用实例配置文件](id_roles_use_switch-role-ec2_instance-profiles.md)