

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 角色信任关系的可选条件
<a name="conditions-for-role-trust"></a>

要为您的 AWS Control Tower 环境额外增加一道安全防护，您可以在角色信任策略中施加条件，以限制与 AWS Control Tower 中某些角色交互的账户和资源。例如，您可以进一步限制对 `AWSControlTowerAdmin` 角色的访问，因为它允许广泛的访问权限。

为帮助防止攻击者访问您的资源，请手动编辑您的 AWS Control Tower 信任策略，以在策略语句中添加至少一个 `aws:SourceArn` 或 `aws:SourceAccount` 条件。作为额外安全最佳实践，您可以添加 `aws:SourceArn` 条件，因为它比 `aws:SourceAccount` 更具针对性，可将访问权限限制在特定账户和特定资源范围内。

如果您不知道资源的完整 ARN，或者您正在指定多个资源，则可以针对 ARN 未知部分使用带有通配符（\$1）的 `aws:SourceArn` 条件。例如，如果您不想指定区域，则可以使用 `arn:aws:controltower:*:123456789012:*`。

以下示例演示了如何将 `aws:SourceArn` IAM 条件与您的 IAM 角色信任策略结合使用。在您的信任关系中添加该**AWSControlTowerAdmin**角色的条件，因为 AWS Control Tower 服务委托人会与之交互。

如示例所示，源 ARN 的格式为：`arn:aws:controltower:${HOME_REGION}:${CUSTOMER_AWSACCOUNT_id}:*`

将字符串 `${HOME_REGION}` 和 `${CUSTOMER_AWSACCOUNT_id}` 替换为您自己的主区域和调用账户的账户 ID。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "controltower.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:controltower:us-west-2:012345678901:*"
        }
      }
    }
  ]
}
```

------

在示例中，指定为 `arn:aws:controltower:us-west-2:012345678901:*` 的源 ARN 是唯一被允许执行 `sts:AssumeRole` 操作的 ARN。换句话说，只有能够登录到 `us-west-2` 区域中账户 ID `012345678901` 的用户，才可以执行需要针对 AWS Control Tower 服务（指定为 `controltower.amazonaws.com`）的这一特定角色及信任关系的操作。

下一个示例显示了应用于角色信任策略的 `aws:SourceAccount` 和 `aws:SourceArn` 条件。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "controltower.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "012345678901"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:controltower:us-west-2:012345678901:*"
        }
      }
    }
  ]
}
```

------

该示例展示了 `aws:SourceArn` 条件语句，并添加了 `aws:SourceAccount` 条件语句。有关更多信息，请参阅 [防止跨服务模拟](prevent-confused-deputy.md)。

 有关 AWS Control Tower 中权限策略的一般信息，请参阅 [管理对资源的访问权限](access-control-manage-access-intro.md)。

**建议**

我们建议您为 AWS Control Tower 创建的角色添加条件，因为这些角色由其他 AWS 服务直接担任。有关更多信息，请参阅本节前面所示的示例。**AWSControlTowerAdmin**对于 AWS Config 记录器角色，我们建议添加 `aws:SourceArn` 条件，将 Config 记录器 ARN 指定为允许的源 ARN。

对于所有托管账户中[可由 AWS Control Tower Audit 账户担任**AWSControlTowerExecution**的角色或其他编程](https://docs.aws.amazon.com/controltower/latest/userguide/roles-how.html)角色，我们建议您在这些角色的信任策略中添加`aws:PrincipalOrgID`条件，以验证访问资源的委托人是否属于正确 AWS 组织中的账户。请勿添加 `aws:SourceArn` 条件语句，因为它无法按预期工作。

**注意**  
如果出现偏移，AWS Control Tower 角色可能会在某些情况下被重置。如果您对角色进行了自定义，建议您定期重新检查这些角色。