

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

# 为 Amazon Bedrock 代理创建服务角色
<a name="agents-permissions"></a>

要为代理使用自定义服务角色而不是 Amazon Bedrock 自动创建的角色，请按照创建[向 AWS 服务委派权限的角色中的步骤创建一个 IAM 角色并附加以下权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。
+ 信任策略
+ 包含以下基于身份的权限的策略：
  + 对 Amazon Bedrock 基础模型的访问权限。
  + 对包含代理中操作组的 OpenAPI 架构的 Amazon S3 对象的访问权限。
  + Amazon Bedrock 查询要附加到代理的知识库的权限。
  + 如果以下任何一种情况与您的应用场景相关，请将该语句添加到策略中，或将包含该语句的策略添加到服务角色中：
    + （可选）如果您启用多代理协作，需要获取别名和调用代理协作者的权限。
    + （可选）如果您将预调配吞吐量与代理别名关联，则需要权限来使用该预调配吞吐量进行模型调用。
    + （可选）如果您将护栏与代理关联，则需要权限来应用该护栏。如果该护栏使用 KMS 密钥加密，则服务角色还需要[解密密钥的权限](guardrails-permissions-kms.md)
    + （可选）如果您使用 KMS 密钥加密代理，则需要[解密密钥的权限](encryption-agents.md)。

无论是否使用自定义角色，您都还需要将**基于资源的策略**附加到用于执行代理中的操作组任务的 Lambda 函数，以便为服务角色提供访问这些函数的权限。有关更多信息，请参阅 [Resource-based 允许 Amazon Bedrock 调用操作组 Lambda 函数的策略](#agents-permissions-lambda)。

**Topics**
+ [信任关系](#agents-permissions-trust)
+ [Identity-based 代理服务角色的权限](#agents-permissions-identity)
+ [（可选）允许 Amazon Bedrock 将预配置吞吐量与您的代理别名一起使用的 Identity-based 策略](#agents-permissions-pt)
+ [（可选）允许 Amazon Bedrock 关联和调用代理合作者的 Identity-based 政策](#agents-permissions-mac)
+ [（可选）允许 Amazon Bedrock 与您的代理一起使用护栏的 Identity-based 政策](#agents-permissions-gr)
+ [（可选）允许 Amazon Bedrock 从 S3 访问文件以用于代码解释的 Identity-based 策略](#agents-permissions-files-ci)
+ [Resource-based 允许 Amazon Bedrock 调用操作组 Lambda 函数的策略](#agents-permissions-lambda)

## 信任关系
<a name="agents-permissions-trust"></a>

以下策略允许 Amazon Bedrock 担任此角色并创建和管理代理。根据需要{{${values}}}更换。该策略在 `Condition` 字段中包含了可选的条件键（参阅 [Amazon Bedrock 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)和 [AWS 全局条件上下文键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)），建议您将其作为最佳安全实践使用。

**注意**  
出于安全考虑，最佳做法是在创建特定的代理 ID 之后将其替换为特定的代理 ID。{{\*}}

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

****  

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

------

## Identity-based 代理服务角色的权限
<a name="agents-permissions-identity"></a>

附加以下策略以为服务角色提供权限，并{{${values}}}根据需要进行替换。策略包含以下语句。如果某个语句不适用于您的应用场景，可以省略。该策略在 `Condition` 字段中包含了可选的条件键（参阅 [Amazon Bedrock 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)和 [AWS 全局条件上下文键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)），建议您将其作为最佳安全实践使用。

**注意**  
如果您使用客户自主管理型 KMS 密钥加密代理，请参阅[加密 2025 年 1 月 22 日之前创建的代理的代理资源](encryption-agents.md)，了解需要添加的其他权限。
+ 借助 Amazon Bedrock 基础模型对代理编排中使用的提示进行模型推断的权限。
+ 在 Amazon S3 中访问代理的操作组 API 架构的权限。如果您的代理没有操作组，请省略此语句。
+ 访问与代理关联的知识库的权限。如果您的代理没有关联的知识库，请省略此语句。
+ 访问与代理关联的第三方（Pinecone 或 Redis Enterprise Cloud）知识库的权限。如果您的知识库是第一方（Amazon OpenSearch Serverless 或 Amazon Aurora），或者您的代理没有相关的知识库，请省略此声明。
+ 访问提示管理器中的提示的权限。如果您不打算在 Amazon Bedrock 控制台中与您的代理一起测试提示管理器中的提示，则省略此语句。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "{{AgentModelInvocationPermissions}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}::foundation-model/anthropic.claude-v2",
                "arn:aws:bedrock:{{us-east-1}}::foundation-model/anthropic.claude-v2:1",
                "arn:aws:bedrock:{{us-east-1}}::foundation-model/anthropic.claude-instant-v1"
            ]
        },
        {
            "Sid": "{{AgentActionGroupS3}}",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/SchemaJson"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "{{123456789012}}"
                }
            }
        },
        {
            "Sid": "{{AgentKnowledgeBaseQuery}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve",
                "bedrock:RetrieveAndGenerate"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:knowledge-base/{{knowledge-base-id}}"
            ]
        },
        {
            "Sid": "{{Agent3PKnowledgeBase}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:AssociateThirdPartyKnowledgeBase"
            ],
            "Resource": "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:knowledge-base/{{knowledge-base-id}}",
            "Condition": {
                "StringEquals": {
                    "bedrock:ThirdPartyKnowledgeBaseCredentialsSecretArn": "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/{{KeyId}}"
                }
            }
        },
        {
            "Sid": "{{AgentPromptManagementConsole}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetPrompt"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:prompt/{{prompt-id}}"
            ]
        }
    ]
}
```

------

**重要**  
如果您的代理直接使用[推理配置文件](inference-profiles-support.md)而不是基础模型，则必须对该`AgentModelInvocationPermissions`语句进行以下更改：  
将推理配置文件 ARN 添加到`Resource`列表中。格式为 `arn:aws:bedrock:{{region}}:{{account-id}}:inference-profile/{{inference-profile-id}}`。
将以下操作添加到`Action`列表中：  
`bedrock:InvokeModelWithResponseStream`
`bedrock:GetInferenceProfile`
`bedrock:GetFoundationModel`

## （可选）允许 Amazon Bedrock 将预配置吞吐量与您的代理别名一起使用的 Identity-based 策略
<a name="agents-permissions-pt"></a>

如果您将[预调配吞吐量](prov-throughput.md)与代理别名关联，请将以下基于身份的策略附加到服务角色或将该语句添加到[Identity-based 代理服务角色的权限](#agents-permissions-identity)部分的策略中。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {        
        "Sid": "UseProvisionedThroughput",
        "Effect": "Allow",
        "Action": [
            "bedrock:InvokeModel", 
            "bedrock:GetProvisionedModelThroughput"
        ],
        "Resource": [
            "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:provisioned-model/{{${provisioned-model-id}}}"
        ]
      }
    ]
}
```

------

## （可选）允许 Amazon Bedrock 关联和调用代理合作者的 Identity-based 政策
<a name="agents-permissions-mac"></a>

如果您启用[多代理协作](agents-multi-agent-collaboration.md)，则需要将以下基于身份的策略附加到服务角色或将该语句添加到[Identity-based 代理服务角色的权限](#agents-permissions-identity)中的策略。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AmazonBedrockAgentMultiAgentsPolicyProd",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetAgentAlias",
                "bedrock:InvokeAgent"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:{{agent-alias}}/{{${agent-id}}}/{{${agent-alias-id}}}"
            ]
        }
    ]
}
```

------

## （可选）允许 Amazon Bedrock 与您的代理一起使用护栏的 Identity-based 政策
<a name="agents-permissions-gr"></a>

如果您将[护栏](guardrails.md)与代理关联，则需要将以下基于身份的策略附加到服务角色或将该语句添加到[Identity-based 代理服务角色的权限](#agents-permissions-identity)部分的策略中。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "{{ApplyGuardrail}}",
            "Effect": "Allow",
            "Action": "bedrock:ApplyGuardrail",
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:guardrail/{{${guardrail-id}}}"
            ]
        }
    ]
}
```

------

## （可选）允许 Amazon Bedrock 从 S3 访问文件以用于代码解释的 Identity-based 策略
<a name="agents-permissions-files-ci"></a>

如果启用[在 Amazon Bedrock 中启用代码解释](agents-enable-code-interpretation.md)，请将以下基于身份的策略附加到服务角色，或者将该声明添加到[代理服务角色Identity-based 权限](https://docs.aws.amazon.com//bedrock/latest/userguide/agents-permissions.html#agents-permissions-identity)中的策略中。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {       
        "Sid": "AmazonBedrockAgentFileAccess", 
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:GetObjectVersionAttributes",
            "s3:GetObjectAttributes"
        ],
        "Resource": [
            "arn:aws:s3:::[[customerProvidedS3BucketWithKey]]"
        ]
      }
    ]
}
```

------

## Resource-based 允许 Amazon Bedrock 调用操作组 Lambda 函数的策略
<a name="agents-permissions-lambda"></a>

按照对 Lamb [da 使用基于资源的策略](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)中的步骤操作，将以下基于资源的策略附加到 Lambda 函数，以允许 Amazon Bedrock 访问代理操作组的 Lambda 函数，必要时将其替换。{{${values}}}该策略在 `Condition` 字段中包含了可选的条件键（参阅 [Amazon Bedrock 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)和 [AWS 全局条件上下文键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)），建议您将其作为最佳安全实践使用。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "{{AccessLambdaFunction}}",
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:{{us-east-1}}:{{123456789012}}:function:{{function-name}}",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceAccount": "{{123456789012}}"
                },
                "ArnLike": {
                    "AWS:SourceArn": "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:agent/{{${agent-id}}}"
                }
            }
        }
    ]
}
```

------