

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

# Amazon WorkSpaces 应用程序跨服务混乱副手预防
<a name="confused-deputy"></a>

混淆代理问题是一个安全问题，即没有执行操作权限的实体可能会迫使更具权限的实体执行该操作。在 AWS中，跨服务模拟可能会使账户资源容易受到混淆代理问题的影响。一项服务（*调用服务*）调用另一项服务（*被调用服务*）时，可能会发生跨服务模拟。调用服务可以操纵被调用服务使用其权限对客户的资源进行操作，而调用服务本身没有执行这些操作的权限。为了防止这种情况，我们 AWS 提供了一些工具，帮助您保护所有服务的数据，这些服务委托人有权访问您账户中的资源。

我们建议在资源策略中使用 `aws:SourceArn` 和 `aws:SourceAccount` 全局条件上下文键，以限制访问这些资源时的权限。以下指南详细介绍了使用这些键保护资源时的建议和要求：
+ 如果您只希望将一个资源与跨服务访问相关联，请使用 `aws:SourceArn`。
+ 如果您想允许指定账户中的任何资源与跨服务使用相关联，请使用 `aws:SourceAccount`。
+ 如果 `aws:SourceArn` 键不包含账户 ID，您必须使用两个全局条件上下文键（`aws:SourceArn` 和 `aws:SourceAccount`）来限制权限。
+ 如果使用两个全局条件上下文键，并且 `aws:SourceArn` 值包含账户 ID，则在同一策略语句中使用时，`aws:SourceAccount` 键必须使用相同的账户 ID。

防止混淆代理问题的有效方法是使用要允许的资源的确切 Amazon 资源名称（ARN）。如果您不知道资源的完整 ARN，请针对 ARN 未知部分使用带有通配符（如 \*）的 `aws:SourceArn` 全局条件上下文键。如果要指定多个资源，也可以在 ARN 中使用通配符。例如，您可以将 ARN 格式化为 `arn:aws:{{servicename}}::{{region-name}}::{{your AWS 账户 ID}}:*`。

**Topics**
+ [示例： WorkSpaces 应用程序服务角色跨服务混淆副手预防](example-confused-deputy.md)
+ [示例： WorkSpaces 应用程序舰队机器角色跨服务混淆副手预防](example-fleet-machine.md)
+ [示例： WorkSpaces 应用程序弹性队列会话脚本 Amazon S3 存储桶策略跨服务混淆副手预防](example-elastic-fleets.md)
+ [示例： WorkSpaces 应用程序应用程序 Amazon S3 存储桶策略跨服务混淆了副手预防](example-s3-bucket.md)