

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

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

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

我们建议在资源策略中[使用 a [ ws: SourceArn ](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 和 aws: SourceAccount ](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 全局条件上下文密钥来限制 Amazon Bedrock 向资源 AgentCore 提供其他服务的权限。如果您只希望将一个资源与跨服务访问相关联，请使用。`aws:SourceArn`如果您想允许该账户中的任何资源与跨服务使用操作相关联，请使用。`aws:SourceAccount`

防范混淆代理问题最有效的方法是使用 `aws:SourceArn` 全局条件上下文键和资源的完整 ARN。如果您不知道资源的完整 ARN，或者要指定多个资源，请为 ARN 的未知部分使用带有通配符 (\*) 的`aws:SourceArn`全局上下文条件密钥。例如，arn: aws: servicename: \*: 123456789012: \*。

如果 `aws:SourceArn` 值不包含账户 ID，例如 Amazon S3 存储桶 ARN，您必须使用两个全局条件上下文键来限制权限。

以下示例说明如何在中使用`aws:SourceArn`和`aws:SourceAccount`全局条件上下文键 AgentCore 来防止出现混乱的代理问题。

```
{
"Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AssumeRolePolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "bedrock-agentcore.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
            "StringEquals": {
                "aws:SourceAccount": "123456789012"
            },
            "ArnLike": {
                "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:*"
            }
       }
    }
  ]
}
```