

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

# 防止跨服务混淆代理
<a name="iam-cross-service-confused-deputy-prevention"></a>

在中 AWS，当一个服务（调用服务）调用另一个服务（被调用的服务）时，可能会发生跨服务模拟。尽管调用服务不应具有适当的权限，但仍可操纵以对另一个客户的资源进行操作，这会导致代理混淆。

为了防止众议员感到困惑，我们 AWS 提供了一些工具，这些工具可帮助您保护所有服务的数据，这些服务使用者已被授予访问您账户中资源的权限。本节重点介绍 Managed Service for Apache Flink 特有的跨服务代理混淆预防事宜，但是，您可以在 *IAM 用户指南*的[代理混淆问题](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)部分了解有关此主题的更多信息。

在适用于 [Apache Flink 的托管服务环境中，我们建议在角色信任策略中使用 aws: SourceArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) [和 aws: SourceAccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全局条件上下文密钥，将对角色的访问权限限制为仅限由预期资源生成的请求。

如果您只希望将一个资源与跨服务访问相关联，请使用。`aws:SourceArn`如果您想允许该账户中的任何资源与跨服务使用操作相关联，请使用。`aws:SourceAccount`

`aws:SourceArn` 的值必须是 Managed Service for Apache Flink 使用的资源 ARN，该资源使用以下格式指定：`arn:aws:kinesisanalytics:region:account:resource`。

解决代理混淆问题的推荐方法，是将 `aws:SourceArn` 全局条件上下文键与完整资源 ARN 结合使用。

如果不知道资源的完整 ARN，或者正在指定多个资源，请针对 ARN 未知部分使用带有通配符 (\$1) 的 `aws:SourceArn` 键。例如：`arn:aws:kinesisanalytics::111122223333:*`。

您向 Managed Service for Apache Flink 提供的角色策略以及为您生成的角色的信任策略都可以使用这些密钥。

为了防止出现代理混淆的问题，请执行以下步骤：

**防止出现代理混淆问题**

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

1. 选择**角色**，然后选择要修改的角色。

1. 选择**编辑信任策略**。

1. 在**编辑信任策略**页面上，将默认 JSON 策略替换为使用 `aws:SourceArn` 和 `aws:SourceAccount` 全局条件上下文密钥中的一个或两个的策略。请参阅以下示例策略：

1. 选择**更新策略**。

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

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Principal":{
               "Service":"kinesisanalytics.amazonaws.com"
            },
            "Action":"sts:AssumeRole",
            "Condition":{
               "StringEquals":{
                  "aws:SourceAccount":"Account ID"
               },
               "ArnEquals":{
                  "aws:SourceArn":"arn:aws:kinesisanalytics:us-east-1:123456789012:application/my-app"
               }
            }
         }
      ]
   }
   ```

------