

# 更新角色信任策略
<a name="id_roles_update-role-trust-policy"></a>

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

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


## 更新角色信任策略（控制台）
<a name="id_roles_update-trust-policy-console"></a>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1. 登录受信任外部 AWS 账户。

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

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

1. 请执行以下操作之一：
   + 要编辑某个客户 托管策略，请选择该策略的名称，选择**编辑策略**，然后选择 **JSON** 选项卡。您不能编辑 AWS 托管策略。AWS 托管策略随 AWS 图标 (![\[Orange cube icon indicating a policy is managed by AWS.\]](http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/images/policy_icon.png)) 一起显示。有关 AWS 托管策略与客户托管策略之间的差别的更多信息，请参阅[托管策略与内联策略](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. 按照屏幕上的提示完成策略的编辑。

## 更新角色信任策略（AWS CLI）
<a name="id_roles-update-trust-policy-cli"></a>

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

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

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

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

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

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

------
#### [ 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.aws.amazon.com/cli/latest/reference/iam/update-assume-role-policy.html)

**允许受信任外部账户中的用户使用角色 (AWS 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.aws.amazon.com/cli/latest/reference/iam/create-policy.html)

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

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

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

## 更新角色信任策略（AWS API）
<a name="id_roles-update-trust-policy-api"></a>

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

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

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

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

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

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

------
#### [ 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.aws.amazon.com/IAM/latest/APIReference/API_UpdateAssumeRolePolicy.html)

**允许可信外部账户中的用户使用角色 (AWS 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.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicy.html)

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

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

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