本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 Amazon Bedrock 代理创建服务角色
要为代理使用自定义服务角色而不是 Amazon Bedrock 自动创建的角色,请按照创建角色向 AWS 服务委派权限中的步骤创建一个 IAM 角色并附加以下权限。
-
信任策略
-
包含以下基于身份的权限的策略:
-
对 Amazon Bedrock 基础模型的访问权限。
-
对包含代理中操作组的 OpenAPI 架构的 Amazon S3 对象的访问权限。
-
Amazon Bedrock 查询要附加到代理的知识库的权限。
-
如果以下任何一种情况与您的应用场景相关,请将该语句添加到策略中,或将包含该语句的策略添加到服务角色中:
-
(可选)如果您启用多代理协作,则具有获取别名和调用代理协作者的权限。
-
(可选)如果您将预调配吞吐量与代理别名关联,则需要权限来使用该预调配吞吐量进行模型调用。
-
(可选)如果您将防护机制与代理关联,则需要权限来应用该防护机制。如果该防护机制使用 KMS 密钥加密,则服务角色还需要解密密钥的权限
-
(可选)如果您使用 KMS 密钥加密代理,则需要解密密钥的权限。
无论是否使用自定义角色,您都还需要将基于资源的策略附加到用于执行代理中的操作组任务的 Lambda 函数,以便为服务角色提供访问这些函数的权限。有关更多信息,请参阅 基于资源的策略,允许 Amazon Bedrock 调用操作组 Lambda 函数。
信任关系
以下策略允许 Amazon Bedrock 担任此角色并创建和管理代理。根据需要${values}
更换。该策略在 Condition
字段中包含了可选的条件键(参阅 Amazon Bedrock 的条件键和 AWS 全局条件上下文键),建议您将其作为最佳安全实践使用。
出于安全考虑,最佳做法是在创建特定的代理 IDs 之后将其替换为特定的代理。*
- 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/*
"
}
}
}
]
}
代理服务角色的基于身份的权限。
附加以下策略以为服务角色提供权限,并${values}
根据需要进行替换。策略包含以下语句。如果某个语句不适用于您的应用场景,可以省略。该策略在 Condition
字段中包含了可选的条件键(参阅 Amazon Bedrock 的条件键和 AWS 全局条件上下文键),建议您将其作为最佳安全实践使用。
-
借助 Amazon Bedrock 基础模型对代理编排中使用的提示进行模型推断的权限。
-
在 Amazon S3 中访问代理的操作组 API 架构的权限。如果您的代理没有操作组,请省略此语句。
-
访问与代理关联的知识库的权限。如果您的代理没有关联的知识库,请省略此语句。
-
访问与代理关联的第三方(Pinecone 或 Redis Enterprise Cloud)知识库的权限。如果您的知识库是第一方(Amazon OpenSearch Serverless 或 Amazon Aurora),或者您的代理没有相关的知识库,请省略此声明。
-
从 Prompt 管理中访问提示的权限。如果您不打算在 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:::bucket/path/to/schema
"
],
"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/${key-id}
"
}
}
},
{
"Sid": "AgentPromptManagementConsole
",
"Effect": "Allow",
"Action": [
"bedrock:GetPrompt"
],
"Resource": [
"arn:aws:bedrock:us-east-1
:123456789012
:prompt/prompt-id
"
]
}
]
}
(可选)基于身份的策略,允许 Amazon Bedrock 使用与代理别名关联的预调配吞吐量
如果您将预调配吞吐量与代理别名关联,请将以下基于身份的策略附加到服务角色或将该语句添加到代理服务角色的基于身份的权限。部分的策略中。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "UsePT
",
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:GetProvisionedModelThroughput"
],
"Resource": [
"arn:aws:bedrock:us-east-1
:123456789012
:${provisioned-model-id}
"
]
}
]
}
(可选)基于身份的策略,允许 Amazon Bedrock 关联和调用代理合作者
如果您启用多代理协作,请将以下基于身份的策略附加到服务角色或在中的策略中添加该声明。代理服务角色的基于身份的权限。
- 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 使用与代理关联的防护机制
如果您将防护机制与代理关联,则需要将以下基于身份的策略附加到服务角色或将该语句添加到代理服务角色的基于身份的权限。部分的策略中。
- 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 中的文件以用于代码解释
如果您启用了 在 Amazon Bedrock 中启用代码解释,请将以下基于身份的策略附加到服务角色,或者将该语句添加到代理服务角色的基于身份的权限部分的策略中。
- 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 函数
按照对 Lamb da 使用基于资源的策略中的步骤操作,将以下基于资源的策略附加到 Lambda 函数,以允许 Amazon Bedrock 访问代理操作组的 Lambda 函数,必要时将其替换。${values}
该策略在 Condition
字段中包含了可选的条件键(参阅 Amazon Bedrock 的条件键和 AWS 全局条件上下文键),建议您将其作为最佳安全实践使用。
- 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}
"
}
}
}
]
}