本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 Amazon Bedrock 知识库创建服务角色
要在知识库中使用自定义角色而不是 Amazon Bedrock 自动创建的角色,请按照创建角色向AWS服务委派权限中的步骤创建一个 IAM 角色并附加以下权限。为了安全起见,请仅添加必要的权限。
注意
使用服务角色时,不能在多个角色之间共享策略。
-
信任关系
-
对 Amazon Bedrock 基础模型的访问权限
-
访问存储数据所在的数据来源
-
(如果您在 Amazon OpenSearch 服务中创建矢量数据库)访问您的 OpenSearch 服务集合
-
(如果您在 Amazon Aurora 中创建向量数据库)访问 Aurora 集群
-
(如果您在Pinecone或中创建矢量数据库Redis Enterprise Cloud)对您的Pinecone或Redis Enterprise Cloud账户AWS Secrets Manager进行身份验证的权限
-
(可选)如果您使用 KMS 密钥加密以下任何资源,则还有解密密钥的权限(请参阅知识库资源的加密)。
-
知识库
-
知识库的数据来源
-
你在 Amazon OpenSearch 服务中的矢量数据库
-
您的第三方矢量数据库的秘密 AWS Secrets Manager
-
数据提取作业
-
主题
信任关系
以下策略允许 Amazon Bedrock 担任此角色,并创建和管理知识库。下面所示为您可以使用的示例策略。您可以使用一个或多个全局条件上下文键来限制权限的范围。有关更多信息,请参阅 AWS 全局条件上下文键。将 aws:SourceAccount 值设置为您的账户 ID。使用 ArnEquals 或 ArnLike 条件将范围限制为特定的知识库。
注意
出于安全目的的最佳实践,请在创建知识库 IDs 后将其替换为特定的知识库。*
访问 Amazon Bedrock 模型的权限
附加以下策略,以向角色提供使用 Amazon Bedrock 模型嵌入源数据的权限。
访问数据来源的权限
从以下数据来源中进行选择,为该角色附加必要的权限。
主题
访问 Amazon S3 中数据来源的权限
如果您的数据来源是 Amazon S3,请附加以下策略,以向角色提供访问您将作为数据来源进行连接的 S3 存储桶的权限。
如果您使用AWS KMS密钥加密了数据源,请按照中的步骤为角色授予解密密钥的权限。解密您在 Amazon S3 中的数据源的AWS KMS密钥的权限
访问您的 Confluence 数据来源的权限
注意
Confluence 数据来源连接器目前为预览版,可能随时发生变化。
附加以下策略,以向角色提供访问 Confluence 的权限。
注意
secretsmanager:PutSecretValue只有在使用带有刷新令牌的 OAuth 2.0 身份验证时才是必需的。
Confluen OAuth2 ce .0 访问令牌的默认到期时间为 60 分钟。如果此令牌在您的数据来源同步(同步作业)时过期,Amazon Bedrock 将使用提供的刷新令牌来重新生成此令牌。此重新生成操作会刷新访问令牌和刷新令牌。为了将令牌从当前同步任务更新到下一个同步任务,Amazon Bedrock 需要您的密钥凭证的 write/put 权限。
访问你的 Microsoft SharePoint 数据源的权限
注意
SharePoint 数据源连接器处于预览版,可能会发生变化。
附加以下策略为该角色提供访问权限 SharePoint。
访问您的 Salesforce 数据来源的权限
注意
Salesforce 数据来源连接器目前为预览版,可能随时发生变化。
附加以下策略,以向角色提供访问 Salesforce 的权限。
解密 Amazon S3 中加密数据源的AWS KMS密钥的权限
如果您使用AWS KMS密钥加密了 Amazon S3 中的数据源,请将以下策略附加到您的 Amazon Bedrock 知识库服务角色,以允许 Amazon Bedrock 解密您的密钥。将${Region}和${AccountId}替换为密钥所属的区域和账户 ID。${KeyId}替换为AWS KMS密钥的 ID。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:${Region}:${AccountId}:key/${KeyId}" ], "Condition": { "StringEquals": { "kms:ViaService": [ "s3.${Region}.amazonaws.com" ] } } }] }
与您的文档交互的权限
附加以下策略,以向角色提供使用 Amazon Bedrock 模型与文档交互的权限。
如果您只想授予用户与您的文档交互的权限(而不是在所有知识库中 RetrieveAndGenerate),请使用以下策略:
如果您既想与文档交谈,又想RetrieveAndGenerate在特定的知识库中使用${KnowledgeBaseArn},请提供并使用以下政策:
多模式内容的权限
处理多模式内容(图像、音频、视频)时,根据您的处理方法,需要额外的权限。
Nova 多模态嵌入权限
使用 Nova 多模态嵌入时,请附加以下策略以提供异步模型调用的权限:
{ "Sid": "BedrockInvokeModelStatement", "Effect": "Allow", "Action": ["bedrock:InvokeModel"], "Resource": [ "arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-*-multimodal-embeddings-*", "arn:aws:bedrock:us-east-1::async-invoke/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "" } } }, { "Sid": "BedrockGetAsyncInvokeStatement", "Effect": "Allow", "Action": ["bedrock:GetAsyncInvoke"], "Resource": ["arn:aws:bedrock:us-east-1::async-invoke/*"], "Condition": { "StringEquals": { "aws:ResourceAccount": "" } } }
基岩数据自动化 (BDA) 权限
使用 BDA 处理多式联运内容时,请附上以下政策:
{ "Sid": "BDAInvokeStatement", "Effect": "Allow", "Action": ["bedrock:InvokeDataAutomationAsync"], "Resource": [ "arn:aws:bedrock:us-east-1:aws:data-automation-project/public-rag-default", "arn:aws:bedrock:us-east-1::data-automation-profile/*" ] }, { "Sid": "BDAGetStatement", "Effect": "Allow", "Action": ["bedrock:GetDataAutomationStatus"], "Resource": "arn:aws:bedrock:us-east-1::data-automation-invocation/*" }
如果您将客户管理的AWS KMS密钥与 BDA 一起使用,请同时附上以下策略。用您的特定值替换account-idregion、和key-id:
{ "Sid": "KmsPermissionStatementForBDA", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": ["arn:aws:kms:region:account-id:key/key-id"], "Condition": { "StringEquals": { "aws:ResourceAccount": "account-id", "kms:ViaService": "bedrock.region.amazonaws.com" } } }
访问 Amazon Kendra GenAI 索引的权限
如果您为知识库创建了 Amazon Kendra GenAI 索引,请为 Amazon Bedrock 知识库服务角色附加以下策略,以允许其访问该索引。在策略中,将${Partition}、${Region}${AccountId}、和${IndexId}替换为索引的值。您可以通过将多个索引添加到 Resource 列表来允许访问这些索引。要允许访问您的中的每个索引AWS 账户,请替换${IndexId}为通配符 (*)。
在 Amazon OpenSearch Serverless 中访问您的矢量数据库的权限
如果您在 OpenSearch Serverless 中为知识库创建了矢量数据库,请将以下策略附加到您的 Amazon Bedrock 知识库服务角色以允许访问该馆藏。将${Region}和${AccountId}替换为数据库所属的区域和账户 ID。在中输入您的 Amazon OpenSearch 服务系列的 ID ${CollectionId}。您可以通过将多个集合添加到 Resource 列表中来允许访问这些集合。
在 OpenSearch 托管集群中访问矢量数据库的权限
如果您在 OpenSearch 托管集群中为知识库创建了矢量数据库,请将以下策略附加到您的 Amazon Bedrock 知识库服务角色以允许访问该域。将<region>和<accountId>替换为数据库所属的区域和账户 ID。您可以通过将这些域添加到 Resource 列表来允许访问这些域。有关配置用户权限的信息,请参阅 将 OpenSearch 托管集群与 Amazon Bedrock 知识库配合使用所需的先决条件和权限。
访问 Amazon Aurora 数据库集群的权限
注意
Amazon Aurora 集群必须与AWS 账户为亚马逊 Bedrock 创建知识库的集群位于同一集群中。
如果您在 Amazon Aurora 中为知识库创建了数据库(DB)集群,请为 Amazon Bedrock 知识库服务角色附加策略,以允许其访问该 DB 集群并提供对它的读写权限。将${Region}和${AccountId}替换为数据库集群所属的区域和账户 ID。在中输入您的亚马逊 Aurora 数据库集群的 ID ${DbClusterId}。您可以通过将多个 DB 集群添加到 Resource 列表来允许访问这些集群。
在 Amazon Neptune Analytics 分析数据库引擎中访问向量数据库的权限
如果您为知识库创建了 Amazon Neptune Analytics 分析数据库引擎图表,请为 Amazon Bedrock 知识库服务角色附加以下策略,以允许其访问该图表。在策略中,将${Region}和${AccountId}替换为数据库所属的区域和账户 ID。${GraphId}替换为图形数据库的值。
在 Amazon S3 Vectors 中访问向量存储的权限
如果您选择为知识库使用 Amazon S3 Vectors,请为 Amazon Bedrock 知识库服务角色附加以下策略,以允许其访问向量索引。
在策略中,将${Region}和${AccountId}替换为矢量索引所属的区域和账户 ID。${BucketName}替换为 S3 矢量存储桶的${IndexName}名称和矢量索引的名称。有关 Amazon S3 Vectors 的更多信息,请参阅设置使用 Amazon S3 Vectors。
访问配置了AWS Secrets Manager密钥的矢量数据库的权限
如果您的矢量数据库配置了AWS Secrets Manager密钥,请将以下策略附加到您的 Amazon Bedrock 知识库服务角色,AWS Secrets Manager以允许对您的账户进行身份验证以访问数据库。将${Region}和${AccountId}替换为数据库所属的区域和账户 ID。${SecretId}替换为您的密钥的 ID。
如果您使用密钥加密了您的密AWS KMS钥,请按照中的步骤为该角色授予解密密钥的权限。解密包含知识库的矢量存储的AWS Secrets Manager密钥的权限
AWS在数据摄取期间管理用于临时数据存储的AWS KMS密钥的权限
要允许在摄取数据源的过程中为临时数据存储创建AWS KMS密钥,请将以下策略附加到您的 Amazon Bedrock 知识库服务角色。将${Region}、和 ${AccountId}${KeyId},替换为相应的值。
管理来自其他用户AWS账户的数据源的权限。AWS
要允许访问其他用户的AWS账户,您必须创建一个允许跨账户访问其他用户账户中的 Amazon S3 存储桶的角色。将${BucketName}、和 ${BucketOwnerAccountId}${BucketNameAndPrefix},替换为相应的值。
知识库角色所需的权限
知识库创建 createKnowledgeBase 期间提供的知识库角色需要以下 Amazon S3 权限。
如果使用AWS KMS密钥对 Amazon S3 存储桶进行加密,则还需要将以下内容添加到知识库角色中。用相应的值替换和。${BucketOwnerAccountId} ${Region}
{ "Sid": "KmsDecryptStatement", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:${Region}:${BucketOwnerAccountId}:key/${KeyId}" ], "Condition": { "StringEquals": { "kms:ViaService": [ "s3.${Region}.amazonaws.com" ] } } }
跨账户 Amazon S3 存储桶策略所需的权限
其他账户中的存储桶需要以下 Amazon S3 存储桶策略。将${KbRoleArn}、和 ${BucketName}${BucketNameAndPrefix},替换为相应的值。
跨账户AWS KMS密钥策略所需的权限
如果跨账户 Amazon S3 存储桶使用该账户中的AWS KMS密钥进行加密,则AWS KMS密钥策略需要以下策略。用相应的值替换和。${KbRoleArn} ${KmsKeyArn}
{ "Sid": "Example policy", "Effect": "Allow", "Principal": { "AWS": [ "${KbRoleArn}" ] }, "Action": [ "kms:Decrypt" ], "Resource": "${KmsKeyArn}" }