

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

# Cross-service 混乱的副手预防
<a name="cross-service-confused-deputy-prevention"></a>

混淆代理问题是一个安全性问题，即不具有某操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。在中 AWS，跨服务模仿可能会导致混乱的副手问题。 Cross-service当一个服务（调用服务）调用另一个服务（*被**调用的服务*）时，可能会发生模仿行为。可以操纵调用服务以使用其权限对另一个客户的资源进行操作，否则该服务不应有访问权限。为了防止这种情况，我们 AWS 提供了一些工具，帮助您保护所有服务的数据，这些服务委托人已被授予访问您账户中资源的权限。

我们建议在资源策略中使用[https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)和[https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)全局条件上下文密钥来限制为资源 AWS Backup 提供其他服务的权限。如果使用两个全局条件上下文键，在同一策略语句中使用时，`aws:SourceAccount` 值和 `aws:SourceArn` 值中的账户必须使用相同的账户 ID。

 AWS Backup 用于代表您发布 Amazon SNS 主题时，的值`aws:SourceArn`必须是 AWS Backup 文件库。

防范混淆代理问题最有效的方法是使用 `aws:SourceArn` 全局条件上下文键和资源的完整 ARN。如果不知道资源的完整 ARN，或者正在指定多个资源，请针对 ARN 未知部分使用带有通配符（`*`）的 `aws:SourceArn` 全局上下文条件键。例如 `arn:aws::{{servicename}}::{{123456789012}}:*`。

以下示例显示了如何在中使用`aws:SourceArn`和`aws:SourceAccount`全局条件上下文键 AWS Backup 来防止出现混淆的副手问题。将以下语句添加到您的 *KMS 密钥策略*中，以拒绝服务委托`backup-storage.amazonaws.com`人执行 KMS 操作，除非请求来自您指定的备份文件库和账户：

```
{
  "Sid": "Deny Backup Storage confused deputy",
  "Effect": "Deny",
  "Principal": {
    "Service": "backup-storage.amazonaws.com"
  },
  "Action": [
    "kms:Decrypt",
    "kms:RetireGrant",
    "kms:GenerateDataKey"
  ],
  "Resource": "*",
  "Condition": {
    "StringNotEquals": {
      "aws:SourceAccount": "{{123456789012}}"
    },
    "ArnNotLike": {
      "aws:SourceArn": "arn:aws::backup:{{us-east-1}}:{{123456789012}}:backup-vault:*"
    }
  }
}
```

{{us-east-1}}用您的 AWS 区域 和{{123456789012}}您的 AWS 账户 ID 替换。除非请求来自您指定账户和地区的备份保管库，否则此策略拒绝 AWS Backup 存储服务主体使用您的 KMS 密钥。