

# IAM 角色管理
角色管理

您必须先对用户授予切换到您创建的角色的权限，然后用户、应用程序或服务才能使用该角色。您可使用附加到组或用户的任何策略授予所需权限。本部分描述如何授予用户使用角色的权限。它还解释了用户如何从 Amazon Web Services 管理控制台、Tools for 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 个字符。

**Topics**
+ [

## 查看角色访问
](#roles-modify_prerequisites)
+ [

## 基于访问信息生成策略
](#roles-modify_gen-policy)
+ [

# 向用户授予切换角色的权限
](id_roles_use_permissions-to-switch.md)
+ [

# 向用户授予权限以将角色传递给 Amazon 服务
](id_roles_use_passrole.md)
+ [

# 撤销 IAM 角色临时安全凭证
](id_roles_use_revoke-sessions.md)
+ [

# 更新服务相关角色
](id_roles_update-service-linked-role.md)
+ [

# 更新角色信任策略
](id_roles_update-role-trust-policy.md)
+ [

# 更新角色的权限
](id_roles_update-role-permissions.md)
+ [

# 更新角色的设置
](id_roles_update-role-settings.md)
+ [

# 删除角色或实例配置文件
](id_roles_manage_delete.md)

## 查看角色访问


在更改角色的权限之前，您应查看其最近的服务级别活动。这非常重要，因为您不想删除使用它的主体（个人或应用程序）的访问权限。有关查看上次访问的信息的更多信息，请参阅 [使用上次访问的信息优化 Amazon 中的权限](access_policies_last-accessed.md)。

## 基于访问信息生成策略


有时，您可能会向 IAM 实体（用户或角色）授予超出其需要的权限。为帮助您优化授予的权限，您可以根据实体的访问活动生成 IAM policy。IAM 访问分析器会查看您的 Amazon CloudTrail 日志并生成一个策略模板，其中包含实体在指定日期范围内使用的权限。您可以使用模板创建具有精细权限的托管策略，然后将其附加到 IAM 实体。这样，您仅需授予用户或角色与特定使用案例中的 Amazon 资源进行交互所需的权限。要了解更多信息，请参阅 [IAM Acess Analyzer 策略生成](https://docs.amazonaws.cn/IAM/latest/UserGuide/access-analyzer-policy-generation.html)。

# 向用户授予切换角色的权限
授予切换角色的权限

当管理员[创建用于跨账户存取的角色](id_roles_create_for-user.md)时，您在拥有角色和资源的账户（信任账户）和包含用户的账户（可信账户）之间建立了信任。为此，信任账户的管理员指定可信账号为角色的信任策略中的 `Principal`。这*可能*会允许可信账户中的任何用户担任该角色。要完成配置，可信账户的管理员必须为该账户中的特定组或用户提供切换到该角色的权限。

**要授予切换到角色的权限**

1. 作为可信账户的管理员，请为用户创建新策略，或编辑现有策略以添加所需元素。有关更多信息，请参阅 [创建或编辑策略](#roles-usingrole-createpolicy)。

1. 然后，选择您希望如何分享角色信息：
   + 角色链接：****向用户发送链接，以使用户进入已填写所有详细信息的 **Switch Role**（切换角色）页面。
   + 账户 ID 或别名：****为每位用户提供角色名称以及账户 ID 号或账户别名。用户随后转到 **Switch Role** 页面，然后手动添加详细信息。

   有关更多信息，请参阅 [向用户提供信息](#roles-usingrole-giveuser)。

请注意，仅当您以 IAM 用户、SAML 联合角色或 web 身份联合角色登录时才能切换角色。如果您以 Amazon Web Services 账户根用户身份登录，则无法切换角色。

**重要**  
您无法将 Amazon Web Services 管理控制台中的角色切换到需要 [ExternalId](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id) 值的角色。您只能通过调用支持 `ExternalId` 参数的 [https://docs.amazonaws.cn/STS/latest/APIReference/API_AssumeRole.html](https://docs.amazonaws.cn/STS/latest/APIReference/API_AssumeRole.html) API 来切换到此类角色。

**备注**  
本主题讨论了用户**的策略，因为您最终会向用户授予完成任务的权限。但是，我们建议您不要向单个用户直接授予权限。当用户担任某个角色时，系统会为他们分配与该角色相关的权限。
当您在 Amazon Web Services 管理控制台中切换角色时，控制台总是使用您的原始凭证对切换操作进行授权。无论您作为 IAM 用户、SAML 联合角色还是 Web 联合身份角色登录，上述情形均适用。例如，如果您切换到角色 A，则 IAM 使用您的原始用户或联合角色凭证确定是否允许您担任角色 A。如果您在*使用 RoleA 时*尝试切换到 RoleB，则会使用您的**原始**用户或联合角色凭证对您的尝试进行授权。RoleA 凭证不用于此操作。

**Topics**
+ [

## 创建或编辑策略
](#roles-usingrole-createpolicy)
+ [

## 向用户提供信息
](#roles-usingrole-giveuser)

## 创建或编辑策略


向用户授予担任角色权限的策略必须包括一个语句，该语句对以下项具有 `Allow` 影响：
+ `sts:AssumeRole` 操作
+ `Resource` 元素中该角色的 Amazon Resource Name (ARN)

获得了该策略（通过组成员资格或直接附加）的用户可以切换所列资源上的角色。

**注意**  
如果将 `Resource` 设置为 `*`，则用户可在信任用户账户的任何账户中担任何角色。（换言之，角色的信任策略将用户的账户指定为 `Principal`）。作为最佳实践，我们建议您遵循[最低权限原则](http://en.wikipedia.org/wiki/Principle_of_least_privilege)并仅为用户所需的角色指定完整的 ARN。

以下示例所显示的策略允许用户仅在一个账户中担任角色。此外，该策略使用通配符 (\$1) 来指定用户仅在角色名称以字母 `Test` 开头时才能切换到该角色。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111122223333:role/Test*"
    }
}
```

------

**注意**  
角色向用户授予的权限不会添加到用户已获得的权限。当用户切换到某个角色时，用户可临时放弃其原始权限以换取由该角色授予的权限。用户退出该角色时，将自动恢复原始用户权限。例如，假如用户的权限允许使用 Amazon EC2 实例，但是角色的权限策略未授予这些权限。在这种情况下，使用角色时，用户无法在控制台中使用 Amazon EC2 实例。此外，通过 `AssumeRole` 获取的临时凭证无法以编程方式使用 Amazon EC2 实例。

## 向用户提供信息


创建角色并向用户授予切换为该角色的权限后，您必须为用户提供以下信息：
+ 角色的名称。
+ 包含该角色的 ID 或账户别名

通过向用户发送使用账户 ID 和角色名称预配置的链接，可为用户简化访问。完成**创建角色**向导后，您可以选择**查看角色**横幅，或在任何已启用跨账户角色的**角色摘要**页面上查看角色链接。

您还可使用以下格式手动构建链接。请用您的账户 ID 或别名及角色名称替换以下示例中的两个参数：

`https://signin.aws.amazon.com/switchrole?account=your_account_ID_or_alias&roleName=optional_path/role_name`

我们建议您将用户定向到 [从用户切换到 IAM 角色（控制台）](id_roles_use_switch-role-console.md) 以指导他们完成该过程。要排除您在担任角色时可能遇到的常见问题，请参阅 [我无法代入角色](troubleshoot_roles.md#troubleshoot_roles_cant-assume-role)。

**注意事项**
+ 如果您以编程方式创建角色，则可使用路径以及名称创建角色。如果执行此操作，则必须向用户提供完整的路径和角色名称，以便他们可以在 Amazon Web Services 管理控制台 的 **Switch Role**（切换角色）页面输入该角色。例如：`division_abc/subdivision_efg/role_XYZ`。
+ 如果您以编程方式创建角色，则您可以添加最长 512 个字符的 `Path` 以及 `RoleName`。角色名称最多可以有 64 个字符。但是，要通过 Amazon Web Services 管理控制台 中的**切换角色**功能使用角色，则组合的 `Path` 和 `RoleName` 不能超过 64 个字符。
+ 为了安全起见，您可以[查看 Amazon CloudTrail 日志](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds)以了解已在 Amazon 中执行操作的人员。您可以在角色信任策略中使用 `sts:SourceIdentity` 条件键，以要求用户在代入角色时指定身份。例如，您可以要求 IAM 用户指定自己的用户名作为其源身份。这可以帮助您确定哪个用户在 Amazon 中执行了具体的操作。有关更多信息，请参阅 [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity)。您可以使用 [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname)，以要求用户在代入角色时指定会话名称。这可以帮助您在不同主体使用角色时区分角色会话。

# 向用户授予权限以将角色传递给 Amazon 服务
授予权限以将角色传递给服务

要配置多项 Amazon 服务，您必须将 IAM 角色*传递*给相应服务。这允许该服务稍后代入该角色并代表您执行操作。对于大多数服务，您只需在设置期间（而不是服务每次代入角色时）将角色传递给服务。例如，假定您的一款应用程序在 Amazon EC2 实例上运行。该应用程序需要临时凭证来进行身份验证，以及授权应用程序在 Amazon 中执行操作的权限。在设置该应用程序时，您必须将角色传递给 Amazon EC2，以便与提供这些凭证的实例一起使用。通过向角色附加 IAM policy，您为在实例上运行的应用程序定义权限。该应用程序每次需要执行角色允许的操作时都会担任该角色。

要将角色（及其权限）传递至 Amazon 服务，用户必须具有*传递角色* 至服务的权限。这有助于管理员确保仅批准的用户可配置具有能够授予权限的角色的服务。要允许用户将角色传递至 Amazon 服务，您必须向用户的 IAM 用户、角色或组授予 `PassRole` 权限。

**警告**  
只能使用 `PassRole` 权限将 IAM 角色传递给使用同一 Amazon 账户的服务。要将账户 A 中的角色传递给账户 B 中的服务，必须首先在账户 B 中创建一个可以代入账户 A 中角色的 IAM 角色，然后才能将账户 B 中的角色传递给该服务。有关更多信息，请参阅 [IAM 中的跨账户资源访问](access_policies-cross-account-resource-access.md)。
请勿试图通过标记角色然后在带有 `iam:PassRole` 操作的策略中使用 `ResourceTag` 条件键来控制谁可以传递角色。这种方法没有可靠的结果。

设置 `PassRole` 权限时，应确保用户所传递角色的权限不会超过您希望该用户拥有的权限。例如，可能不允许 Alice 执行任何 Amazon S3 操作。如果 Alice 可以将角色传递给允许 Amazon S3 操作的服务，则该服务可以在执行作业时代表 Alice 执行 Amazon S3 操作。

在指定服务相关角色时，您还必须拥有将该角色传递给服务的权限。在某些服务中执行操作时，该服务自动在您的账户中创建一个服务相关角色。例如，在首次创建自动扩缩组时，Amazon EC2 Auto Scaling 会为您创建 `AWSServiceRoleForAutoScaling` 服务相关角色。如果您在创建自动扩缩组时尝试指定服务相关角色，但您没有 `iam:PassRole` 权限，则会收到错误。如果您没有明确指定角色，则不需要 `iam:PassRole` 权限，默认情况下，对该组执行的所有操作都使用 `AWSServiceRoleForAutoScaling` 角色。要了解哪些服务支持服务相关角色，请参阅[使用 IAM 的 Amazon 服务](reference_aws-services-that-work-with-iam.md)。要了解在哪些服务中执行操作时自动创建服务相关角色，请选择**是**链接并查看该服务的服务相关角色文档。

在任何使用角色分配服务权限的 API 操作中，用户都可以将角色 ARN 作为参数进行传递。该服务随后检查该用户是否拥有 `iam:PassRole` 权限。要限制用户只传递批准的角色，您可以使用 IAM policy 语句的 `iam:PassRole` 元素筛选 `Resources` 权限。

您可以在 JSON 策略中使用 `Condition` 元素来测试所有 Amazon 请求的请求上下文中所包含键的值。要了解有关在策略中使用条件键的更多信息，请参阅 [IAM JSON 策略元素：Condition](reference_policies_elements_condition.md)。`iam:PassedToService` 条件键可用于指定可将角色传递到的服务的服务主体。要了解有关在策略中使用 `iam:PassedToService` 条件键的更多信息，请参阅 [iam:PassedToService](reference_policies_iam-condition-keys.md#ck_PassedToService)。

**示例 1**  
假设您要授予用户在启动实例时能够将任意批准角色组传递至 Amazon EC2 服务的能力。您需要三个部分：
+ IAM *权限策略*附加到确定角色可执行哪些任务的角色。将权限范围限定为仅角色必须执行的操作，以及角色进行这些操作所需的资源。您可以使用 Amazon 托管的或客户创建的 IAM 权限策略。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": {
          "Effect": "Allow",
          "Action": [ "A list of the permissions the role is allowed to use" ],
          "Resource": [ "A list of the resources the role is allowed to access" ]
      }
  }
  ```

------
+ 允许服务担任角色的*信任策略*。例如，您可以将以下信任策略与具有 `UpdateAssumeRolePolicy` 操作的角色进行附加。该信任策略允许 Amazon EC2 使用角色和附加在角色上的权限。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": {
          "Sid": "TrustPolicyStatementThatAllowsEC2ServiceToAssumeTheAttachedRole",
          "Effect": "Allow",
          "Principal": { "Service": "ec2.amazonaws.com" },
         "Action": "sts:AssumeRole"
      }
  }
  ```

------
+ 附加至 IAM 用户的 IAM *permissions policy*（权限策略），允许该用户仅传递已获批准的那些策略。您通常将 `iam:GetRole` 添加至 `iam:PassRole`，使用户能够获取准备进行传递的角色的详细信息。在此示例中，用户只能传递位于指定账户中并且名称以 `EC2-roles-for-XYZ-` 开头的角色：

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iam:GetRole",
                  "iam:PassRole"
              ],
              "Resource": "arn:aws:iam::111122223333:role/EC2-roles-for-XYZ-*"
          }
      ]
  }
  ```

------

现在用户可以启动具有所分配角色的 Amazon EC2 实例。实例上运行的应用程序可以通过实例配置文件元数据访问角色的临时许可。附加到角色的许可策略确定实例可以执行的任务。

**示例 2**  
Amazon Relational Database Service (Amazon RDS) 支持名为 **Enhanced Monitoring**（增强监控）的功能。此功能使 Amazon RDS 能够使用代理监控数据库实例。它还允许 Amazon RDS 将指标记录到 Amazon CloudWatch Logs 中。要启用此功能，您必须创建一个服务角色，以便为 Amazon RDS 提供监控指标和将指标写入日志的权限。

**为 Amazon RDS 增强监控创建角色**

1. 登录 Amazon Web Services 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

1. 选择 **角色**，然后选择 **创建角色**。

1. 选择 **Amazon 服务**角色类型，然后在**适用于其他 Amazon Web Services 服务 的使用案例**中，选择 **RDS** 服务。选择 **RDS - Enhanced Monitoring**（RDS - 增强监控），然后选择 **Next**（下一步）。

1. 选择 **AmazonRDSEnhancedMonitoringRole** 权限策略。

1. 选择**下一步**。

1. 对于 **Role name**（角色名称），键入有助于标识此角色作用的角色名称。角色名称在您的 Amazon Web Services 账户内必须是唯一的。在策略中使用角色名称或将其作为 ARN 的一部分时，角色名称区分大小写。在控制台中向客户显示角色名称时（例如在登录过程中），角色名称不区分大小写。由于多个实体可能引用该角色，因此，角色创建完毕后，您将无法编辑角色名称。

1. （可选）对于 **Description**（描述），输入新角色的描述。

1. （可选）通过以键值对的形式附加标签来向用户添加元数据。有关在 IAM 中使用标签的更多信息，请参阅 [Amazon Identity and Access Management 资源的标签](id_tags.md)。

1. 检查角色，然后选择**创建角色**。

角色自动获得授予 `monitoring.rds.amazonaws.com` 服务担任角色权限的信任策略。在此之后，Amazon RDS 可执行 `AmazonRDSEnhancedMonitoringRole` 策略允许的所有操作。

您希望使用增强监控的用户需要包括允许用户列出 RDS 角色的语句和允许用户传递角色的语句的策略，如下所示。使用您的账号，然后使用您在步骤 6 中提供的名称替换角色名称。

```
    {
      "Sid": "PolicyStatementToAllowUserToListRoles",
      "Effect": "Allow",
      "Action": ["iam:ListRoles"],
      "Resource": "*"
    },
    {
        "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole",
        "Effect": "Allow",
        "Action": [ "iam:PassRole" ],
        "Resource": "arn:aws:iam::account-id:role/RDS-Monitoring-Role"
    }
```

您可以将该语句与另一策略中的语句进行合并，或将此语句放在其自身策略中。如要指定用户可传递以 `RDS-` 开始的任何角色，您可以在资源 ARN 中使用通配符替换角色名称，如下所示。

```
        "Resource": "arn:aws:iam::account-id:role/RDS-*"
```

## Amazon CloudTrail 日志中的 `iam:PassRole` 操作


 `PassRole` 不是 API 调用。`PassRole` 是一种权限，意味着不会为 IAM `PassRole` 生成 CloudTrail 日志。要查看向 CloudTrail 中的哪个 Amazon Web Services 服务 传递了哪些角色，您必须查看创建或修改接收相应角色的 Amazon 资源的 CloudTrail 日志。例如，角色在创建时会传递给 Amazon Lambda 函数。`CreateFunction` 操作的日志显示了传递给该函数的角色记录。

# 撤销 IAM 角色临时安全凭证
撤销角色临时凭证

**警告**  
如果您执行此页面上的步骤，则通过担任角色创建的具有当前会话的所有用户对所有 Amazon 操作和资源的访问将被拒绝。这会导致用户丢失未保存的工作。

在允许用户访问具有较长的会话持续时间（例如 12 小时）的 Amazon Web Services 管理控制台 时，用户的临时凭证不会很快过期。如果用户无意中向未授权第三方公开其凭证，则第三方在会话的持续时间内将具有访问权限。不过，如果需要，可以撤销对某个特定时间点之前发布的角色凭证的所有权限。指定时间之前发布的该角色的所有临时凭证将变得无效。这将强制所有用户重新进行身份验证并请求新的凭证。

 

**注意**  
您无法撤销*[服务相关角色](id_roles.md#iam-term-service-linked-role)*对会话的权限。

在使用本主题中的过程撤消角色的权限时，Amazon 会向角色附加新的内联策略来拒绝对所有操作的所有权限。它包括仅当用户在撤销权限时的某个时间点*之前* 代入角色的情况下应用限制的情况。如果用户在您撤销权限*之后* 代入角色，则拒绝策略不适用于该用户。

有关拒绝访问的更多信息，请参阅 [禁用临时安全凭证的权限](id_credentials_temp_control-access_disable-perms.md)。

**重要**  
此拒绝策略适用于指定角色的所有用户，而不只是适用于具有持续时间更长的控制台会话的用户。

## 从角色撤消会话权限所需的最低权限


要从角色成功撤消会话权限，您必须具有该角色的 `PutRolePolicy` 权限。这允许您将 `AWSRevokeOlderSessions` 内联策略附加到该角色。

## 撤消会话权限


您可以撤消某个角色的会话权限，以拒绝代入该角色的任何用户的所有权限。

**注意**  
您不能编辑 IAM 中根据 IAM Identity Center 权限集创建的角色。您必须在 IAM Identity Center 中撤消用户的活动权限集会话。有关更多信息，请参阅《*IAM Identity Center 用户指南*》中的[撤消由权限集创建的活动 IAM 角色会话](https://docs.amazonaws.cn/singlesignon/latest/userguide/useraccess.html#revoke-user-permissions)。

**立即拒绝对角色凭证的任何当前用户的所有权限**

1. 登录 Amazon Web Services 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

1. 在导航窗格中，选择**角色**，然后选择要撤消其权限的角色的名称（而不是复选框）。

1. 在所选角色的 **Summary** 页面上，选择 **Revoke sessions** 选项卡。

1. 在 **Revoke sessions** 选项卡上，选择 **Revoke active sessions**。

1. Amazon 要求您确认此操作。选择**我确认我正在撤消此角色的所有活动会话。**复选框，然后在对话框中选择**撤消活动会话**。

   然后 IAM 会将名为 `AWSRevokeOlderSessions` 的策略附加到角色。选择**撤消活动会话**后，此策略将拒绝在过去已经以及未来大约 30 秒钟将会代入该角色的用户的所有访问权限。此未来时间选项考虑了策略的传播延迟，以便处理在更新后的策略在给定区域生效之前获得或续订的新会话。任何在您选择“撤消活动会话”之后超过大约 30 秒代入角色的用户均不受影响。要了解为什么更改并非始终立即可见，请参阅 [我所做的更改可能不会立即可见](troubleshoot.md#troubleshoot_general_eventual-consistency)。

**注意**  
如果您稍后再次选择**撤消活动会话**，则将刷新策略中的日期和时间戳，并将再次拒绝在新的指定时间之前代入角色的任何用户的所有访问权限。

以这种方式调用会话的有效用户必须获得临时凭证，新会话才能继续工作。在凭证过期前，Amazon CLI 会缓存凭证。要强制 CLI 删除并刷新已失效的缓存证书，请运行以下命令之一：

**Linux、macOS 或 Unix**

```
$ rm -r ~/.aws/cli/cache
```

**Windows**

```
C:\> del /s /q %UserProfile%\.aws\cli\cache
```

## 在指定时间之前撤消会话权限


 您也可以使用 Amazon CLI 或 SDK 在策略的 Condition 元素中指定 `aws:TokenIssueTime` 键的值，随时撤消会话权限。

当 `aws:TokenIssueTime` 的值早于指定的日期和时间时，该策略会拒绝所有权限。`aws:TokenIssueTime` 的值对应于临时安全凭证的确切创建时间。`aws:TokenIssueTime` 值仅存在于使用临时安全凭证签署的 Amazon 请求的上下文中，因此，该策略中的 Deny 语句不会影响使用该 IAM 用户的长期凭证签署的请求。

该策略还可以附加到角色。在这种情况下，该策略只会影响由该角色在指定日期和时间之前创建的临时安全凭证。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "DateLessThan": {"aws:TokenIssueTime": "2014-05-07T23:47:00Z"}
    }
  }
}
```

------

以这种方式调用会话的有效用户必须获得临时凭证，新会话才能继续工作。在凭证过期前，Amazon CLI 会缓存凭证。要强制 CLI 删除并刷新已失效的缓存证书，请运行以下命令之一：

**Linux、macOS 或 Unix**

```
$ rm -r ~/.aws/cli/cache
```

**Windows**

```
C:\> del /s /q %UserProfile%\.aws\cli\cache
```

# 更新服务相关角色


您用来编辑服务相关角色的方法取决于服务。某些服务可能允许您从服务控制台、API 或 CLI 编辑服务相关角色的权限。但是，创建服务相关角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。您可以从 IAM 控制台、API 或 CLI 编辑任何角色的描述。

有关哪些服务支持使用服务相关角色的信息，请参阅 [使用 IAM 的 Amazon 服务](reference_aws-services-that-work-with-iam.md) 并查找其在**服务相关角色**列中为**是**的服务。要了解服务是否支持编辑服务相关角色，请选择 **Yes** 链接以查看该服务的服务相关角色文档。

## 编辑服务相关角色描述（控制台）


您可以使用 IAM 控制台编辑服务相关角色的描述。

**编辑服务相关角色的描述（控制台）**

1. 在 IAM 控制台的导航窗格中，选择**角色**。

1. 以下代码示例显示如何将 IAM 策略附加到用户。

1. 在 **Role description** 的最右侧，选择 **Edit**。

1. 在框中输入新描述，然后选择 **Save（保存）**。

## 编辑服务相关角色描述 (Amazon CLI)


您可以从 Amazon CLI 使用 IAM 命令编辑服务相关角色的描述。

**更改服务相关角色描述 (Amazon CLI)**

1. （可选）要查看角色的当前描述，请运行以下命令：

   ```
   aws iam [get-role](https://docs.amazonaws.cn/cli/latest/reference/iam/get-role.html) --role-name ROLE-NAME
   ```

   通过 CLI 命令使用角色名称（并非 ARN）指向角色。例如，如果某个角色的 ARN 为 `arn:aws:iam::123456789012:role/myrole`，则将该角色称为 **myrole**。

1. 要更新服务相关角色的描述，请运行以下命令：

   ```
   aws iam [update-role](https://docs.amazonaws.cn/cli/latest/reference/iam/update-role.html) --role-name ROLE-NAME --description OPTIONAL-DESCRIPTION
   ```

## 编辑服务相关角色描述 (Amazon API)


您可以使用 Amazon API 编辑服务相关角色的描述。

**更改服务相关角色的描述 (Amazon API)**

1. （可选）要查看角色的当前描述，请调用以下操作，并指定角色的名称：

   Amazon API：[GetRole](https://docs.amazonaws.cn/IAM/latest/APIReference/API_GetRole.html) 

1. 要更新角色的描述，请调用以下操作，并指定角色的名称（和可选描述）：

   Amazon API：[UpdateRole](https://docs.amazonaws.cn/IAM/latest/APIReference/API_UpdateRole.html) 

# 更新角色信任策略


要更改可担任角色的人员，您必须修改角色的信任策略。您无法修改*[服务相关角色](id_roles.md#iam-term-service-linked-role)*的信任策略。

**备注**  
如果用户被列为角色的信任策略中的主体，但无法担任该角色，请检查用户的[权限边界](access_policies_boundaries.md)。如果为用户设置了权限边界，则它必须允许该 `sts:AssumeRole` 操作。
要允许用户在角色会话中重新代入当前角色，请将角色 ARN 或 Amazon Web Services 账户 ARN 指定为角色信任策略中的主体。提供计算资源（例如 Amazon EC2、Amazon ECS、Amazon EKS 和 Lambda）的 Amazon Web Services 服务会提供临时凭证并自动更新这些凭证。这样可以确保您始终拥有一组有效的凭证。对于这些服务，无需重新代入当前角色即可获得临时凭证。但是，如果您需要传递 [会话标签](id_session-tags.md) 或者 [会话策略](access_policies.md#policies_session)，则需要重新代入当前角色。


## 更新角色信任策略（控制台）


**更改 Amazon Web Services 管理控制台 中的角色信任策略**

1. 登录 Amazon Web Services 管理控制台，打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

1. 在 IAM 控制台的导航窗格中，选择**角色**。

1. 在您的账户的角色列表中，选择要修改的角色的名称。

1. 选择 **Trust relationships**（信任关系）选项卡，然后选择 **Edit trust policy**（编辑信任策略）。

1. 根据需要编辑信任策略。要添加其他可担任角色的主体，请在 `Principal` 元素中指定他们。例如，以下策略代码段演示如何在 `Principal` 元素中引用两个 Amazon Web Services 账户：

   ```
   "Principal": {
     "AWS": [
       "arn:aws:iam::111122223333:root",
       "arn:aws:iam::444455556666:root"
     ]
   },
   ```

   如果您指定其他账户中的主体，将账户添加到角色的信任策略只是建立跨账户信任关系工作的一半而已。默认情况下，受信任账户中的任何用户均无法担任角色。新的受信任账户的管理员必须授予用户担任角色的权限。为此，管理员必须创建或编辑附加到用户以允许该用户访问 `sts:AssumeRole` 操作的策略。有关更多信息，请参阅以下过程或[向用户授予切换角色的权限](id_roles_use_permissions-to-switch.md)。

   以下策略代码段演示如何在 `Principal` 元素中引用两个 Amazon 服务：

   ```
   "Principal": {
     "Service": [
       "opsworks.amazonaws.com",
       "ec2.amazonaws.com"
     ]
   },
   ```

1. 在编辑完信任策略后，请选择 **Update policy**（更新策略）以保存所做更改。

   有关策略结构和语法的更多信息，请参阅[Amazon Identity and Access Management 中的策略和权限](access_policies.md)和[IAM JSON 策略元素参考](reference_policies_elements.md)。

**允许可信外部账户中的用户使用角色（控制台）**

有关此过程的更多详细信息，请参阅[向用户授予切换角色的权限](id_roles_use_permissions-to-switch.md)。

1. 登录受信任外部 Amazon Web Services 账户。

1. 确定将权限附加到用户还是附加到组。在 IAM 控制台的导航窗格中，相应选择 **Users**（用户）或 **User Groups**（用户组）。

1. 选择您要向其授予访问权限的用户或组的名称，然后选择 **Permissions** 选项卡。

1. 请执行以下操作之一：
   + 要编辑某个客户 托管策略，请选择该策略的名称，选择**编辑策略**，然后选择 **JSON** 选项卡。您不能编辑 Amazon 托管策略。Amazon 托管策略随 Amazon 图标 (![\[Orange cube icon indicating a policy is managed by Amazon.\]](http://docs.amazonaws.cn/IAM/latest/UserGuide/images/policy_icon.png)) 一起显示。有关 Amazon 托管策略与客户托管策略之间的差别的更多信息，请参阅[托管策略与内联策略](access_policies_managed-vs-inline.md)。
   + 要编辑某个内联策略，请选择该策略名称旁边的箭头，然后选择 **Edit policy**。

1. 在策略编辑器中，添加一个新的 `Statement` 元素，指定以下内容：

   ```
   {
     "Effect": "Allow",
     "Action": "sts:AssumeRole",
     "Resource": "arn:aws:iam::ACCOUNT-ID:role/ROLE-NAME"
   }
   ```

   将语句中的 ARN 替换为用户可担任的角色的 ARN。

1. 按照屏幕上的提示完成策略的编辑。

## 更新角色信任策略（Amazon CLI）


您可以使用 Amazon CLI 更改可担任角色的人员。

**修改角色信任策略 (Amazon CLI)**

1. （可选）如果不知道要修改的角色的名称，请运行以下命令以列出账户中的角色：
   + [aws iam list-roles](https://docs.amazonaws.cn/cli/latest/reference/iam/list-roles.html)

1. （可选）要查看角色当前的信任策略，请运行以下命令：
   + [aws iam get-role](https://docs.amazonaws.cn/cli/latest/reference/iam/get-role.html)

1. 要修改可访问角色的受信任主体，请创建带有已更新信任策略的文本文件。您可以使用任何文本编辑器构件策略。

   例如，以下信任策略说明了如何在 `Principal` 元素中引用两个 Amazon Web Services 账户。这允许两个单独的 Amazon Web Services 账户 中的用户代入此角色。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"AWS": [
               "arn:aws:iam::111122223333:root",
               "arn:aws:iam::444455556666:root"
           ]},
           "Action": "sts:AssumeRole"
       }
   }
   ```

------

   如果您指定其他账户中的主体，将账户添加到角色的信任策略只是建立跨账户信任关系工作的一半而已。默认情况下，受信任账户中的任何用户均无法担任角色。新的受信任账户的管理员必须授予用户担任角色的权限。为此，管理员必须创建或编辑附加到用户以允许该用户访问 `sts:AssumeRole` 操作的策略。有关更多信息，请参阅以下过程或[向用户授予切换角色的权限](id_roles_use_permissions-to-switch.md)。

1. 要使用您刚刚创建的文件来更新信任策略，请运行以下命令：
   + [aws iam update-assume-role-policy](https://docs.amazonaws.cn/cli/latest/reference/iam/update-assume-role-policy.html)

**允许受信任外部账户中的用户使用角色 (Amazon CLI)**

有关此过程的更多详细信息，请参阅[向用户授予切换角色的权限](id_roles_use_permissions-to-switch.md)。

1. 创建一个 JSON 文件，其中包含授予担任角色的权限的权限策略。例如，下面的策略包含最低必需权限：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::111122223333:role/ROLE-NAME"
       }
   }
   ```

------

   将语句中的 ARN 替换为用户可担任的角色的 ARN。

1. 运行以下命令来将包含信任策略的 JSON 文件上传到 IAM：
   + [aws iam create-policy](https://docs.amazonaws.cn/cli/latest/reference/iam/create-policy.html)

   此命令的输出包含策略的 ARN。请记录此 ARN，因为您在后面的步骤中需要它。

1. 决定要将策略附加到哪个用户或组。如果不知道目标用户或组的名称，请使用下列命令之一列出账户中的用户或组：
   + [aws iam list-users](https://docs.amazonaws.cn/cli/latest/reference/iam/list-users.html)
   + [aws iam list-groups](https://docs.amazonaws.cn/cli/latest/reference/iam/list-groups.html)

1. 使用以下命令之一，将您在上一步中创建的策略附加到用户或组：
   + [aws iam attach-user-policy](https://docs.amazonaws.cn/cli/latest/reference/iam/attach-user-policy.html)
   + [aws iam attach-group-policy](https://docs.amazonaws.cn/cli/latest/reference/iam/attach-group-policy.html)

## 更新角色信任策略（Amazon API）


您可以使用 Amazon API 更改可担任角色的人员。

**修改角色信任策略 (Amazon API)**

1. （可选）如果不知道要修改的角色的名称，请调用以下操作以列出账户中的角色：
   + [ListRoles](https://docs.amazonaws.cn/IAM/latest/APIReference/API_ListRoles.html)

1. （可选）要查看角色当前的信任策略，请调用以下操作：
   + [GetRole](https://docs.amazonaws.cn/IAM/latest/APIReference/API_GetRole.html)

1. 要修改可访问角色的受信任主体，请创建带有已更新信任策略的文本文件。您可以使用任何文本编辑器构件策略。

   例如，以下信任策略说明了如何在 `Principal` 元素中引用两个 Amazon Web Services 账户。这允许两个单独的 Amazon Web Services 账户 中的用户代入此角色。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"AWS": [
               "arn:aws:iam::111122223333:root",
               "arn:aws:iam::444455556666:root"
           ]},
           "Action": "sts:AssumeRole"
       }
   }
   ```

------

   如果您指定其他账户中的主体，将账户添加到角色的信任策略只是建立跨账户信任关系工作的一半而已。默认情况下，受信任账户中的任何用户均无法担任角色。新的受信任账户的管理员必须授予用户担任角色的权限。为此，管理员必须创建或编辑附加到用户以允许该用户访问 `sts:AssumeRole` 操作的策略。有关更多信息，请参阅以下过程或[向用户授予切换角色的权限](id_roles_use_permissions-to-switch.md)。

1. 要使用您刚刚创建的文件来更新信任策略，请调用以下操作：
   + [UpdateAssumeRolePolicy](https://docs.amazonaws.cn/IAM/latest/APIReference/API_UpdateAssumeRolePolicy.html)

**允许可信外部账户中的用户使用角色 (Amazon API)**

有关此过程的更多详细信息，请参阅[向用户授予切换角色的权限](id_roles_use_permissions-to-switch.md)。

1. 创建一个 JSON 文件，其中包含授予担任角色的权限的权限策略。例如，下面的策略包含最低必需权限：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::111122223333:role/ROLE-NAME"
       }
   }
   ```

------

   将语句中的 ARN 替换为用户可担任的角色的 ARN。

1. 调用以下操作来将包含信任策略的 JSON 文件上传到 IAM：
   + [CreatePolicy](https://docs.amazonaws.cn/IAM/latest/APIReference/API_CreatePolicy.html)

   此操作的输出包含策略的 ARN。请记录此 ARN，因为您在后面的步骤中需要它。

1. 决定要将策略附加到哪个用户或组。如果不知道目标用户或组的名称，请调用下列操作之一列出账户中的用户或组：
   + [ListUsers](https://docs.amazonaws.cn/IAM/latest/APIReference/API_ListUsers.html)
   + [ListGroups](https://docs.amazonaws.cn/IAM/latest/APIReference/API_ListGroups.html)

1. 调用以下操作之一，将您在上一步中创建的策略附加到用户或组：
   +  API：[AttachUserPolicy](https://docs.amazonaws.cn/IAM/latest/APIReference/API_AttachUserPolicy.html)
   + [AttachGroupPolicy](https://docs.amazonaws.cn/IAM/latest/APIReference/API_AttachGroupPolicy.html)

# 更新角色的权限
更新角色权限

使用以下过程更新角色的权限策略和权限边界。

## 先决条件：查看角色访问权限


在更改角色的权限之前，您应查看其最近的服务级别活动。这非常重要，因为您不想删除使用它的主体（个人或应用程序）的访问权限。有关查看上次访问的信息的更多信息，请参阅 [使用上次访问的信息优化 Amazon 中的权限](access_policies_last-accessed.md)。

## 更新角色的权限策略
更新权限策略

要更改该角色允许的权限，请修改该角色的权限策略。您无法修改 IAM 中的*[服务相关角色](id_roles.md#iam-term-service-linked-role)*的权限策略。您可能能够修改依赖角色的服务中的权限策略。要检查服务是否支持此功能，请参阅[使用 IAM 的 Amazon 服务](reference_aws-services-that-work-with-iam.md)并查找**服务相关角色**中列为**是**的服务。请选择**是**与查看该服务的服务关联角色文档的链接。

### 更新角色权限策略（控制台）


**更改角色允许的权限 (控制台)**

1. 通过 [https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/) 打开 IAM 控制台。

1. 在 IAM 控制台的导航窗格中，选择**角色**。

1. 选择要修改的角色的名称，然后选择**权限**选项卡。

1. 请执行以下操作之一：
   + 要编辑某个现有客户托管策略，请选择该策略的名称，然后选择 **Edit policy**。
**注意**  
您不能编辑 Amazon 托管策略。Amazon 托管策略随 Amazon 图标 (![\[Orange cube icon indicating a policy is managed by Amazon.\]](http://docs.amazonaws.cn/IAM/latest/UserGuide/images/policy_icon.png)) 一起显示。有关 Amazon 托管策略与客户托管策略之间的差别的更多信息，请参阅[托管策略与内联策略](access_policies_managed-vs-inline.md)。
   + 要将现有的托管策略附加到角色，请选择 **Add permissions**（添加权限），然后选择 **Attach policies**（附加策略）。
   + 要编辑现有内联策略，请展开策略并选择 **Edit**（编辑）。
   + 要嵌入新的内联策略，请选择 **Add permissions**（添加权限），然后选择 **Create inline policy**（创建内联策略）。
   + 若要从角色中移除现有策略，请选中策略名称旁边的复选框，然后选择**删除**。

### 更新角色权限策略（Amazon CLI）


要更改该角色允许的权限，请修改该角色的权限策略。您无法修改 IAM 中的*[服务相关角色](id_roles.md#iam-term-service-linked-role)*的权限策略。您可能能够修改依赖角色的服务中的权限策略。要检查服务是否支持此功能，请参阅[使用 IAM 的 Amazon 服务](reference_aws-services-that-work-with-iam.md)并查找**服务相关角色**中列为**是**的服务。请选择**是**与查看该服务的服务关联角色文档的链接。

**更改角色允许的权限 (Amazon CLI)**

1. （可选）如需查看当前与角色关联的权限，请运行以下命令：

   1. [aws iam list-role-policies](https://docs.amazonaws.cn/cli/latest/reference/iam/list-role-policies.html)（用于列出内联策略）

   1. [aws iam list-attached-role-policies](https://docs.amazonaws.cn/cli/latest/reference/iam/list-attached-role-policies.html)（用于列出托管策略）

1. 对于更新角色的权限所使用的命令，根据您是在更新托管策略还是内联策略而有所不同。

   要更新托管策略，请运行以下命令以创建托管策略的新版本：
   + [aws iam create-policy-version](https://docs.amazonaws.cn/cli/latest/reference/iam/create-policy-version.html)

   要更新内联策略，请运行以下命令：
   + [aws iam put-role-policy](https://docs.amazonaws.cn/cli/latest/reference/iam/put-role-policy.html)

### 更新角色权限策略（Amazon API）


要更改该角色允许的权限，请修改该角色的权限策略。您无法修改 IAM 中的*[服务相关角色](id_roles.md#iam-term-service-linked-role)*的权限策略。您可能能够修改依赖角色的服务中的权限策略。要检查服务是否支持此功能，请参阅[使用 IAM 的 Amazon 服务](reference_aws-services-that-work-with-iam.md)并查找**服务相关角色**中列为**是**的服务。请选择**是**与查看该服务的服务关联角色文档的链接。

**更改角色允许的权限 (Amazon API)**

1. （可选）如需查看当前与角色关联的权限，请调用以下操作：

   1. [ListRolePolicies](https://docs.amazonaws.cn/IAM/latest/APIReference/API_ListRolePolicies.html)（用于列出内联策略）

   1. [ListAttachedRolePolicies](https://docs.amazonaws.cn/IAM/latest/APIReference/API_ListAttachedRolePolicies.html)（用于列出托管策略）

1. 对于更新角色的权限所使用的操作，根据您是在更新托管策略还是内联策略而有所不同。

   要更新托管策略，请调用以下操作以创建托管策略的新版本：
   + [CreatePolicyVersion](https://docs.amazonaws.cn/IAM/latest/APIReference/API_CreatePolicyVersion.html)

   要更新内联策略，请调用以下操作：
   + [PutRolePolicy](https://docs.amazonaws.cn/IAM/latest/APIReference/API_PutRolePolicy.html)

## 更新角色的权限边界
更新权限边界

要更改对某角色允许的最大权限，请修改角色的[权限边界](access_policies_boundaries.md)。

### 更新角色权限边界（控制台）
更新权限边界（控制台）

**更改用于设置角色的权限边界的策略**

1. 登录 Amazon Web Services 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

1. 在导航窗格中，选择**角色**。

1. 选择具有您要更改的 [权限边界](access_policies_boundaries.md) 的角色名称。

1. 选择**权限**选项卡。如有必要，打开 **Permissions boundary**（权限边界）部分，然后选择 **Change boundary**（更改边界）。

1. 选择要用于权限边界的策略。

1. 选择 **Change boundary**（更改边界）。

   在某个人下次担任该角色后，您所做的更改才会生效。

### 更新角色权限边界（Amazon CLI）
更新权限边界（Amazon CLI）

**更改用于设置角色的权限边界的托管策略 (Amazon CLI)**

1. （可选）要查看角色的当前[权限边界](access_policies_boundaries.md)，请运行以下命令：
   + [aws iam get-role](https://docs.amazonaws.cn/cli/latest/reference/iam/get-role.html)

1. 要使用不同的托管策略来更新角色的权限边界，请运行以下命令：
   + [aws iam put-role-permissions-boundary](https://docs.amazonaws.cn/cli/latest/reference/iam/put-role-permissions-boundary.html)

   角色只能具有一个设置为权限边界的托管策略。如果您更改权限边界，则会更改允许的角色的最大权限。

### 更新角色权限边界（Amazon API）
更新权限边界（API）

**更改用于设置角色的权限边界的托管策略 (Amazon API)**

1. （可选）要查看角色的当前[权限边界](access_policies_boundaries.md)，请调用以下操作：
   + [GetRole](https://docs.amazonaws.cn/IAM/latest/APIReference/API_GetRole.html)

1. 要使用不同的托管策略来更新角色的权限边界，请调用以下操作：
   + [PutRolePermissionsBoundary](https://docs.amazonaws.cn/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   角色只能具有一个设置为权限边界的托管策略。如果您更改权限边界，则会更改允许的角色的最大权限。

# 更新角色的设置
更新角色设置

使用以下过程更新角色的描述或更改角色的最长会话持续时间。

## 更新角色描述


要更改角色的描述，请修改描述文本。

### 更新角色描述（控制台）


**更改角色的描述 (控制台)**

1. 登录 Amazon Web Services 管理控制台，打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

1. 在 IAM 控制台的导航窗格中，选择**角色**。

1. 以下代码示例显示如何将 IAM 策略附加到用户。

1. 在 **Summary**（摘要）部分中，选择 **Edit**（编辑）。

1. 在框中键入新描述，然后选择 **Save changes (保存更改)**。

### 更新角色描述（Amazon CLI）


**更改角色的描述 (Amazon CLI)**

1. （可选）要查看角色的当前描述，请运行以下命令：
   + [aws iam get-role](https://docs.amazonaws.cn/cli/latest/reference/iam/get-role.html)

1. 要更新角色的描述，请带描述参数运行以下命令：
   + [aws iam update-role](https://docs.amazonaws.cn/cli/latest/reference/iam/update-role.html)

### 更新角色描述（Amazon API）


**更改角色的描述 (Amazon API)**

1. （可选）要查看角色当前的描述，请调用以下操作：
   + [GetRole](https://docs.amazonaws.cn/IAM/latest/APIReference/API_GetRole.html) 

1. 要更新角色的描述，请带描述参数调用以下操作：
   + [UpdateRole](https://docs.amazonaws.cn/IAM/latest/APIReference/API_UpdateRole.html)

## 更新角色的最长会话持续时间


要为使用控制台、Amazon CLI 或 Amazon API 代入的角色指定最大会话持续时间设置，请修改最大会话持续时间设置值。该设置可以具有 1 小时到 12 小时之间的值。如果未指定值，则应用默认最大值 (1 小时)。该设置不限制 Amazon 服务建立的会话。

### 更新最长角色会话持续时间（控制台）
<a name="id_roles_modify_max-session"></a>

**更改使用控制台、Amazon CLI 或 Amazon API 担任的角色的最大会话持续时间设置（控制台）**

1. 登录 Amazon Web Services 管理控制台，打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

1. 在 IAM 控制台的导航窗格中，选择**角色**。

1. 以下代码示例显示如何将 IAM 策略附加到用户。

1. 在 **Summary**（摘要）部分中，选择 **Edit**（编辑）。

1. 对于 **Maximum session duration**（最大会话持续时间），请选择一个值。您还可以选择 **Custom duration**（自定义持续时间）并输入一个值（以秒为单位）。

1. 选择**保存更改**。

   在某个人下次担任该角色后，您所做的更改才会生效。要了解如何撤销该角色的现有会话，请参阅[撤销 IAM 角色临时安全凭证](id_roles_use_revoke-sessions.md)。

在预设情况下，在 Amazon Web Services 管理控制台 中的 IAM 用户会话为 12 小时。在控制台内切换角色的 IAM 用户被授予角色最大会话持续时间或用户会话中的剩余时间（以较少者为准）。

从 Amazon CLI 或 Amazon API 代入角色的任何人都可以请求更长的会话，最多达到这个最大值。`MaxSessionDuration` 设置确定可请求的最大角色会话的持续时间。
+ 要使用 Amazon CLI 指定会话持续时间，请使用 `duration-seconds` 参数。要了解更多信息，请参阅[切换到 IAM 角色（Amazon CLI）](id_roles_use_switch-role-cli.md)。
+ 要使用 Amazon API 指定会话持续时间，请使用 `DurationSeconds` 参数。要了解更多信息，请参阅[切换到 IAM 角色（Amazon API）](id_roles_use_switch-role-api.md)。

### 更新最长角色会话持续时间（Amazon CLI）


**注意**  
从 Amazon CLI 或 API 中担任角色的任何人都可以使用 `duration-seconds` CLI 参数或 `DurationSeconds` API 参数请求更长的会话。`MaxSessionDuration` 设置确定可使用 `DurationSeconds` 参数请求的最大角色会话持续时间。如果用户未指定 `DurationSeconds` 参数值，其安全凭证的有效期为 1 小时。

**使用 Amazon CLI (Amazon CLI) 更改担任的角色的最大会话持续时间设置**

1. （可选）要查看角色的当前最大会话持续时间设置，请运行以下命令：
   + [aws iam get-role](https://docs.amazonaws.cn/cli/latest/reference/iam/get-role.html)

1. 要更新角色的最大会话持续时间设置，请带 `max-session-duration` CLI 参数或 `MaxSessionDuration` API 参数运行以下命令：
   + [aws iam update-role](https://docs.amazonaws.cn/cli/latest/reference/iam/update-role.html)

   在某个人下次担任该角色后，您所做的更改才会生效。要了解如何撤销该角色的现有会话，请参阅[撤销 IAM 角色临时安全凭证](id_roles_use_revoke-sessions.md)。

### 更新最长角色会话持续时间（Amazon API）


**注意**  
从 Amazon CLI 或 API 中担任角色的任何人都可以使用 `duration-seconds` CLI 参数或 `DurationSeconds` API 参数请求更长的会话。`MaxSessionDuration` 设置确定可使用 `DurationSeconds` 参数请求的最大角色会话持续时间。如果用户未指定 `DurationSeconds` 参数值，其安全凭证的有效期为 1 小时。

**使用 API 更改担任的角色的最大会话持续时间设置 (Amazon API)**

1. （可选）要查看角色的当前最大会话持续时间设置，请调用以下操作：
   + [GetRole](https://docs.amazonaws.cn/IAM/latest/APIReference/API_GetRole.html) 

1. 要更新角色的最大会话持续时间设置，请带 `max-sessionduration` CLI 参数或 `MaxSessionDuration` API 参数调用以下操作：
   + [UpdateRole](https://docs.amazonaws.cn/IAM/latest/APIReference/API_UpdateRole.html)

   在某个人下次担任该角色后，您所做的更改才会生效。要了解如何撤销该角色的现有会话，请参阅[撤销 IAM 角色临时安全凭证](id_roles_use_revoke-sessions.md)。

# 删除角色或实例配置文件


如果您不再需要某个角色，我们建议您删除该角色及其关联的权限。这样您就没有未被主动监控或维护的未使用实体。

如果该角色与 EC2 实例关联，您还可以从实例配置文件中删除角色，然后删除实例配置文件。

**警告**  
确保您没有使用要删除的角色或实例配置文件运行任何 Amazon EC2 实例。删除与正在运行的实例关联的角色或实例配置文件将中断该实例上正在运行的所有应用程序。

如果您不希望永久删除角色，则可以禁用角色。为此，请更改角色的策略，然后撤消所有当前会话。例如，您可以将策略添加到拒绝访问所有 Amazon 的角色。您还可以编辑信任策略，以拒绝任何试图代入此角色的用户的访问。有关撤消会话的更多信息，请参阅 [撤销 IAM 角色临时安全凭证](id_roles_use_revoke-sessions.md)。

**Topics**
+ [

## 查看角色访问权限
](#roles-delete_prerequisites)
+ [

## 删除服务相关角色
](#id_roles_manage_delete_slr)
+ [

## 删除 IAM 角色（控制台）
](#roles-managingrole-deleting-console)
+ [

## 创建 IAM 角色 (Amazon CLI)
](#roles-managingrole-deleting-cli)
+ [

## 删除 IAM 角色 (Amazon API)
](#roles-managingrole-deleting-api)
+ [

## 相关信息
](#roles-managingrole-deleting-related-info)

## 查看角色访问权限


在删除角色之前，建议您查看上次使用角色的时间。可使用 Amazon Web Services 管理控制台、Amazon CLI 或 Amazon API 完成此操作。如果您不希望从使用该角色的用户处删除访问权限，则应查看此信息。

角色的上次活动日期可能与**上次访问时间**选项卡中报告的上次日期不相符。[**上次访问时间**](access_policies_last-accessed-view-data.md)选项卡仅报告角色的权限策略所允许服务的活动。角色的上次活动日期包括访问最后一次尝试 Amazon 中的任何服务。

**注意**  
角色上次活动和上次访问数据的跟踪周期为 400 天。如果您的地区在一年内开始支持这些功能，则此时间段可能会缩短。角色可能在 400 天之前使用过。有关跟踪周期的更多信息，请参阅[Amazon 跟踪上次访问信息的位置](access_policies_last-accessed.md#last-accessed_tracking-period)。

**查看上次使用角色的时间（控制台）**

1. 登录 Amazon Web Services 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

1. 在导航窗格中，选择**角色**。

1. 查找要查看其活动的角色的行。您可以使用搜索字段缩小结果范围。查看**上一个活动**列以查看距离上次使用角色的天数。如果在跟踪周期内未使用该角色，则表将显示**无**。

1. 选择角色的名称可查看更多信息。角色的**摘要**页面还包括**上一个活动**，显示上次使用角色的日期。如果在过去 400 天内未使用该角色，则**上一个活动**中显示**在跟踪期间未被访问**。

**查看上次使用角色的时间 (Amazon CLI)**  
`[aws iam get-role](https://docs.amazonaws.cn/cli/latest/reference/iam/get-role.html)` – 运行此命令返回有关角色的信息，包括 `RoleLastUsed` 对象。此对象包含上次使用角色的 `Region` 和 `LastUsedDate`。如果存在 `RoleLastUsed` 但不包含值，则在跟踪周期内未使用该角色。

**查看上次使用角色的时间 (Amazon API)**  
`[GetRole](https://docs.amazonaws.cn/IAM/latest/APIReference/GetRole.html)` – 调用此操作以返回有关角色的信息，包括 `RoleLastUsed` 对象。此对象包含上次使用角色的 `Region` 和 `LastUsedDate`。如果存在 `RoleLastUsed` 但不包含值，则在跟踪周期内未使用该角色。

## 删除服务相关角色


您用来删除服务相关角色的方法取决于服务。在某些情况下，无需手动删除服务相关角色。例如，在服务中完成特定操作 (如删除资源) 时，服务可能为您删除服务相关角色。在其他情况下，服务可能支持从服务控制台、API 或 Amazon CLI 中手动删除服务相关角色。

查看链接服务中*[服务相关角色](id_roles.md#iam-term-service-linked-role)*的文档以了解如何删除该角色。您可以转至控制台中的 IAM **Roles**（角色）页面来查看您的账户中的服务相关角色。服务相关角色在表的 **Trusted entities**（可信实体）列中随 **(Service-linked role)** [（服务相关角色）] 一起显示。角色的 **Summary**（摘要）页面上的横幅也指示角色是服务相关角色。

如果服务不包括有关删除服务相关角色的文档，您可以使用 IAM 控制台、Amazon CLI 或 API 来删除角色。

## 删除 IAM 角色（控制台）


当您使用 Amazon Web Services 管理控制台 删除角色时，IAM 会自动分离与该角色关联的托管式策略。此外，它还会自动删除任何与该角色关联的内联策略，以及包含该角色的任何 Amazon EC2 实例配置文件。

**重要**  
在某些情况下，某个角色可能与 Amazon EC2 实例配置文件关联，并且该角色和实例配置文件可能同名。在这种情况下，您可以使用 Amazon Web Services 管理控制台删除角色和实例配置文件。对于您在控制台中创建的角色和实例配置文件，会自动建立这种关联。如果您从 Amazon CLI、Tools for Windows PowerShell 或 Amazon API 创建角色，则角色和实例配置文件可能具有不同的名称。在这种情况下，您无法使用控制台删除它们。而是必须使用 Amazon CLI、Tools for Windows PowerShell 或 Amazon API 首先从实例配置文件中删除该角色。然后必须采取单独的步骤删除该角色。

**删除角色 (控制台)**

1. 登录 Amazon Web Services 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

1. 在导航窗格中，选择**角色**，然后选中要删除的角色旁的复选框。

1. 在页面的顶部，选择 **Delete**（移除）。

1. 在确认对话框中，查看上次访问的信息，该信息显示每个选定角色上次访问 Amazon 服务的时间。这样可帮助您确认角色当前是否处于活动状态。如果要继续操作，请在文本输入字段中输入角色的名称，然后选择 **Delete**（删除）。如果确定，您就可以继续执行删除操作，即使仍在加载上次访问的信息。

**注意**  
您不能使用控制台删除实例配置文件，除非它与角色同名。实例配置文件在删除角色的过程中被删除，如上述步骤所述。要在不删除角色的情况下删除实例配置文件，必须使用 Amazon CLI 或 Amazon API。有关更多信息，请参阅以下部分。

## 创建 IAM 角色 (Amazon CLI)


当您使用 Amazon CLI 删除角色时，必须先删除与角色关联的内联策略。您还必须分离与该角色关联的托管式策略。如果您想要删除包含角色的关联实例配置文件，必须分别删除。

**删除角色 (Amazon CLI)**

1. 如果您不知道要删除的角色的名称，请输入以下命令列出账户中的角色：

   ```
   aws iam list-roles
   ```

   该列表包括各个角色的 Amazon Resource Name (ARN)。通过 CLI 命令使用角色名称（并非 ARN）指向角色。例如，如果某个角色的 ARN 为 `arn:aws:iam::123456789012:role/myrole`，则将该角色称为 **myrole**。

1. 从该角色所关联的全部实例配置文件中删除该角色。

   1. 要列出与角色关联的所有实例配置文件，请输入以下命令：

      ```
      aws iam list-instance-profiles-for-role --role-name role-name
      ```

   1. 要从某个实例配置文件中删除该角色，请为每个实例配置文件输入以下命令：

      ```
      aws iam remove-role-from-instance-profile --instance-profile-name instance-profile-name --role-name role-name
      ```

1. 删除与角色相关的全部策略。

   1. 要列出角色中的所有内联策略，请输入以下命令：

      ```
      aws iam list-role-policies --role-name role-name
      ```

   1. 要删除角色中的每个内联策略，请为每个策略输入以下命令：

      ```
      aws iam delete-role-policy --role-name role-name --policy-name policy-name
      ```

   1. 要列出附加到角色的所有托管策略，请输入以下命令：

      ```
      aws iam list-attached-role-policies --role-name role-name
      ```

   1. 要从角色中分离每个托管策略，请为每个策略输入以下命令：

      ```
      aws iam detach-role-policy --role-name role-name --policy-arn policy-arn
      ```

1. 输入以下命令可删除角色：

   ```
   aws iam delete-role --role-name role-name
   ```

1. 如果您没有计划重新使用与角色相关联的实例配置文件，则可以输入以下命令来删除它们：

   ```
   aws iam delete-instance-profile --instance-profile-name instance-profile-name
   ```

## 删除 IAM 角色 (Amazon API)


当您使用 IAM API 删除角色时，必须先删除与角色关联的内联策略。您还必须分离与该角色关联的托管式策略。如果您想要删除包含角色的关联实例配置文件，必须分别删除。

**删除角色 (Amazon API)**

1. 要列出角色所关联的所有实例配置文件，请调用 [ListInstanceProfilesForRole](https://docs.amazonaws.cn/IAM/latest/APIReference/API_ListInstanceProfilesForRole.html)。

   要从实例配置文件删除该角色，请调用 [RemoveRoleFromInstanceProfile](https://docs.amazonaws.cn/IAM/latest/APIReference/API_RemoveRoleFromInstanceProfile.html)。必须提交角色名称和实例配置文件名称。

   如果您不会重用与角色相关联的实例配置文件，请调用 [DeleteInstanceProfile](https://docs.amazonaws.cn/IAM/latest/APIReference/API_DeleteInstanceProfile.html) 来删除它。

1. 要列出一个角色的所有内联策略，请调用 [ListRolePolicies](https://docs.amazonaws.cn/IAM/latest/APIReference/API_ListRolePolicies.html)。

   要删除该角色所关联的所有内联策略，请调用 [DeleteRolePolicy](https://docs.amazonaws.cn/IAM/latest/APIReference/API_DeleteRolePolicy.html)。必须提交角色名称和内联策略名称。

1. 要列出附加到角色的所有托管式策略，请调用 [ListAttachedRolePolicies](https://docs.amazonaws.cn/IAM/latest/APIReference/API_ListAttachedRolePolicies.html)。

   要分离附加到角色的托管式策略，请调用 [DetachRolePolicy](https://docs.amazonaws.cn/IAM/latest/APIReference/API_DetachRolePolicy.html)。必须提交角色名称和托管策略 ARN。

1. 调用 [DeleteRole](https://docs.amazonaws.cn/IAM/latest/APIReference/API_DeleteRole.html) 删除角色。

## 相关信息


有关实例配置文件的基本信息，请参阅 [使用实例配置文件](id_roles_use_switch-role-ec2_instance-profiles.md)。

有关服务相关角色的一般信息，请参阅[创建服务相关角色](id_roles_create-service-linked-role.md)。