

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

# 为 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 函数，以便为服务角色提供访问这些函数的权限。有关更多信息，请参阅 [基于资源的策略，允许 Amazon Bedrock 调用操作组 Lambda 函数](#agents-permissions-lambda)。

**Topics**
+ [信任关系](#agents-permissions-trust)
+ [代理服务角色的基于身份的权限。](#agents-permissions-identity)
+ [（可选）基于身份的策略，允许 Amazon Bedrock 使用与代理别名关联的预调配吞吐量](#agents-permissions-pt)
+ [（可选）基于身份的策略，用于允许 Amazon Bedrock 关联并调用代理协作者](#agents-permissions-mac)
+ [（可选）基于身份的策略，允许 Amazon Bedrock 使用与代理关联的护栏](#agents-permissions-gr)
+ [（可选）基于身份的策略，允许 Amazon Bedrock 访问 S3 中的文件以用于代码解释](#agents-permissions-files-ci)
+ [基于资源的策略，允许 Amazon Bedrock 调用操作组 Lambda 函数](#agents-permissions-lambda)

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

以下策略允许 Amazon Bedrock 担任此角色并创建和管理代理。根据需要*\$1\$1values\$1*更换。该策略在 `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)），建议您将其作为最佳安全实践使用。

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

------
#### [ 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/*"
                }
            }
        }
    ]
}
```

------

## 代理服务角色的基于身份的权限。
<a name="agents-permissions-identity"></a>

附加以下策略以为服务角色提供权限，并*\$1\$1values\$1*根据需要进行替换。策略包含以下语句。如果某个语句不适用于您的应用场景，可以省略。该策略在 `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"
            ]
        }
    ]
}
```

------

## （可选）基于身份的策略，允许 Amazon Bedrock 使用与代理别名关联的预调配吞吐量
<a name="agents-permissions-pt"></a>

如果您将[预调配吞吐量](prov-throughput.md)与代理别名关联，请将以下基于身份的策略附加到服务角色或将该语句添加到[代理服务角色的基于身份的权限。](#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 关联并调用代理协作者
<a name="agents-permissions-mac"></a>

如果您启用[多代理协作](agents-multi-agent-collaboration.md)，则需要将以下基于身份的策略附加到服务角色或将该语句添加到[代理服务角色的基于身份的权限。](#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 使用与代理关联的护栏
<a name="agents-permissions-gr"></a>

如果您将[护栏](guardrails.md)与代理关联，则需要将以下基于身份的策略附加到服务角色或将该语句添加到[代理服务角色的基于身份的权限。](#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 中的文件以用于代码解释
<a name="agents-permissions-files-ci"></a>

如果您启用了 [在 Amazon Bedrock 中启用代码解释](agents-enable-code-interpretation.md)，请将以下基于身份的策略附加到服务角色，或者将该语句添加到[代理服务角色的基于身份的权限](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]]"
        ]
      }
    ]
}
```

------

## 基于资源的策略，允许 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 函数，必要时将其替换。*\$1\$1values\$1*该策略在 `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}"
                }
            }
        }
    ]
}
```

------