

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

混淆代理是指被其它实体强迫执行操作的实体（服务或账户）。这种类型的模拟可能跨账户和跨服务发生。

为了防止混淆代理，Amazon 提供相应的工具，来帮您保护所有服务的服务委托人数据，这些服务委托人有权限访问 Amazon Web Services 账户中的资源。本节重点介绍的是网络监测仪特有的跨服务混淆代理人问题防范功能，您可以在《*IAM 用户指南*》的[混淆代理人问题](https://docs.amazonaws.cn/IAM/latest/UserGuide/confused-deputy.html)部分了解更多相关信息。

要限制 IAM 为网络监测仪提供的资源访问权限，我们建议使用资源策略中的全局条件上下文键 [https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)。

如果同时使用这些全局条件上下文键和包含 Amazon Web Services 账户 ID 的 `aws:SourceArn` 值，则 `aws:SourceAccount` 值和 `aws:SourceArn` 中的 Amazon Web Services 账户在同一策略语句中使用时，必须使用相同的 Amazon Web Services 账户 ID。

对于网络监测仪，您需要为 `aws:SourceAccount` 指定您的账户 ID，并为 `aws:SourceArn` 指定您的监控器 ARN。在跨服务访问场景中，您还需为 `aws:SourceArn` 使用监视器 ARN。

**注意**  
防范混淆代理问题最有效的方法是使用 `aws:SourceArn` 全局条件上下文键和资源的**完整 ARN**。如果您不知道完整 ARN，或正在指定多个资源，请针对 ARN 未知部分使用带有通配符 (`*`) 的 `aws:SourceArn` 全局上下文条件键。例如 `arn:aws:internetmonitor:us-east-1:111122223333:*`。

以下是有关说明如何防范出现混淆代理问题的代入角色策略的示例。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "ConfusedDeputyPreventionExamplePolicy",
    "Effect": "Allow",
    "Principal": {
      "Service": "internetmonitor.amazonaws.com"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "ArnLike": {
        "aws:SourceArn": "arn:aws:internetmonitor:us-east-1:111122223333:monitor/confused-deputy-monitor"
      },
      "StringEquals": {
        "aws:SourceAccount": "111122223333"
      }
    }
  }
}
```

------