本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 Amazon Bedrock 知识库创建服务角色
要将自定义角色用于知识库,而不是 Amazon Bedrock 自动创建的角色,请按照创建角色中的步骤创建 IAM 角色并附加以下权限,以向 AWS 服务委派权限。为了安全起见,请仅添加必要的权限。
注意
使用服务角色时,不能在多个角色之间共享策略。
-
信任关系
-
对 Amazon Bedrock 基础模型的访问权限
-
访问存储数据所在的数据来源
-
(如果您在亚马逊 OpenSearch 服务中创建矢量数据库)访问您的 OpenSearch 服务集合
-
(如果您在 Amazon Aurora 中创建向量数据库)访问 Aurora 集群
-
(如果您在Pinecone或中创建矢量数据库Redis Enterprise Cloud)对您的Pinecone或Redis Enterprise Cloud账户 AWS Secrets Manager 进行身份验证的权限
-
(可选)如果您使用 KMS 密钥加密以下任何资源,则还有解密密钥的权限(请参阅知识库资源的加密)。
-
知识库
-
知识库的数据来源
-
您在亚马逊 OpenSearch 服务中的矢量数据库
-
你的第三方矢量数据库的秘密 AWS Secrets Manager
-
数据提取作业
-
主题
信任关系
以下策略允许 Amazon Bedrock 担任此角色,并创建和管理知识库。下面所示为您可以使用的示例策略。您可以使用一个或多个全局条件上下文键来限制权限的范围。有关更多信息,请参阅 AWS 全局条件上下文键。将 aws:SourceAccount 值设置为您的账户 ID。使用 ArnEquals 或 ArnLike 条件将范围限制为特定的知识库。
注意
出于安全考虑,最佳做法是在创建后将其替换为特定的知识库 ID。*
访问 Amazon Bedrock 模型的权限
附加以下策略,以向角色提供使用 Amazon Bedrock 模型嵌入源数据的权限。
访问数据来源的权限
从以下数据来源中进行选择,为该角色附加必要的权限。
主题
访问 Amazon S3 中数据来源的权限
如果您的数据来源是 Amazon S3,请附加以下策略,以向角色提供访问您将作为数据来源进行连接的 S3 存储桶的权限。
如果您使用密 AWS KMS 钥加密了数据源,请按照中的步骤向角色授予解密密钥的权限。解密你的权限 AWS KMS Amazon S3 中数据源的密钥
访问您的 Confluence 数据来源的权限
注意
Confluence 数据来源连接器目前为预览版,可能随时发生变化。
附加以下策略,以向角色提供访问 Confluence 的权限。
注意
只有在使用带有刷新令牌的 OAuth 2.0 身份验证时才需要 secretsmanager:PutSecretValue。
Confluence OAuth2.0 访问令牌的默认到期时间为 60 分钟。如果此令牌在您的数据来源同步(同步作业)时过期,Amazon Bedrock 将使用提供的刷新令牌来重新生成此令牌。此重新生成操作会刷新访问令牌和刷新令牌。为了保持令牌从当前同步任务更新到下一个同步任务,Amazon Bedrock 需要您的密钥凭证的 write/put 权限。
访问你的 Microsoft SharePoint 数据源的权限
注意
SharePoint 数据源连接器处于预览版中,可能会发生变化。
附加以下策略为角色提供访问权限 SharePoint。
访问您的 Salesforce 数据来源的权限
注意
Salesforce 数据来源连接器目前为预览版,可能随时发生变化。
附加以下策略,以向角色提供访问 Salesforce 的权限。
访问您的 Web Crawler 数据源的权限
附加以下策略,为角色提供通过 Web Crawler 访问网站的权限。如果您的网站需要身份验证,请包括访问存储您的凭据的 AWS Secrets Manager 密钥的权限。
访问你的 Microsoft OneDrive 数据源的权限
附上以下策略,为角色提供访问 Microsoft 的权限 OneDrive。
访问您的 Google 云端硬盘数据源的权限
附上以下政策,为角色提供访问 Google 云端硬盘的权限。
解密您的权限 AWS KMS Amazon S3 中加密数据源的密钥
如果您使用 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/*" }
如果您在 BDA 中使用客户管理的 AWS KMS 密钥,还要附上以下策略。将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" } } }
多式联运存储目的地权限
当您为知识库配置多模式存储目标存储桶时,请附上以下 JSON IAM 策略。amzn-s3-demo-bucket替换为您的多模式存储桶的名称和account-id您的 AWS 账户 ID。此政策向您的知识库授予对 Amazon S3 中已解析的多模式内容的读取、写入和删除权限:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3MultimodalStorageListStatement", "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"], "Condition": { "StringEquals": { "aws:ResourceAccount": "account-id" } } }, { "Sid": "S3MultimodalStorageObjectStatement", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/*"], "Condition": { "StringEquals": { "aws:ResourceAccount": "account-id" } } } ] }
访问 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。在中输入您的亚马逊 OpenSearch 服务集合的编号${CollectionId}。您可以通过将多个集合添加到 Resource 列表中来允许访问这些集合。
访问 OpenSearch 托管集群中的矢量数据库的权限
如果您在 OpenSearch 托管集群中为知识库创建了矢量数据库,请将以下策略附加到您的 Amazon Bedrock 知识库服务角色以允许访问该域。将<region>和<accountId>替换为数据库所属的区域和账户 ID。您可以通过将这些域添加到 Resource 列表来允许访问这些域。有关配置用户权限的信息,请参阅 在 Amazon Bedrock 知识库中使用 OpenSearch 托管集群所需的先决条件和权限。
访问 Amazon Aurora 数据库集群的权限
注意
亚马逊 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 account。
要允许访问其他用户的 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 密钥策略所需的权限
如果使用该账户中的 AWS KMS 密钥对跨账户 Amazon S3 存储桶进行加密,则该 AWS KMS 密钥的策略需要以下策略。将${KbRoleArn}和${KmsKeyArn}替换为相应的值。
{ "Sid": "Example policy", "Effect": "Allow", "Principal": { "AWS": [ "${KbRoleArn}" ] }, "Action": [ "kms:Decrypt" ], "Resource": "${KmsKeyArn}" }