Criar um perfil de serviço para o Amazon Bedrock Knowledge Bases - Amazon Bedrock

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criar um perfil de serviço para o Amazon Bedrock Knowledge Bases

Para usar uma função personalizada para uma base de conhecimento em vez da que o Amazon Bedrock cria automaticamente, crie uma função do IAM e anexe as seguintes permissões seguindo as etapas em Criar uma função para delegar permissões a um AWS serviço. Inclua somente as permissões necessárias para sua própria segurança.

nota

Não é possível compartilhar uma política entre vários perfis quando o perfil de serviço é usado.

  • Relação de confiança

  • Acesso aos modelos de base do Amazon Bedrock

  • Acesso da fonte de dados ao local em que os dados são armazenados

  • (Se você criar um banco de dados vetoriais no Amazon OpenSearch Service) Acesso à sua coleção OpenSearch de serviços

  • (Se você criar um banco de dados de vetores do Amazon Aurora) Acesso ao cluster do Aurora

  • (Se você criar um banco de dados vetoriais em Pinecone ouRedis Enterprise Cloud) Permissões AWS Secrets Manager para autenticar sua conta Pinecone ou Redis Enterprise Cloud

  • (Opcional) Se você criptografar qualquer um dos recursos a seguir com uma chave do KMS, permissões para descriptografar a chave (consulte Criptografia de recursos da base de conhecimento):

    • Sua base de conhecimento

    • Fontes de dados para sua base de conhecimento

    • Seu banco de dados vetoriais no Amazon OpenSearch Service

    • O segredo do seu banco de dados vetoriais de terceiros em AWS Secrets Manager

    • Um trabalho de ingestão de dados

Relação de confiança

A política a seguir permite que o Amazon Bedrock assuma esse perfil e crie e gerencie bases de conhecimento. Veja a seguir um exemplo de política que você pode usar. É possível restringir o escopo da permissão usando uma ou mais chaves de contexto de condição global. Para obter mais informações, consulte Chaves de contexto de condição global da AWS. Defina o valor aws:SourceAccount para o ID da conta. Use a condição ArnEquals ou ArnLike para restringir o escopo a bases de conhecimento específicas.

nota

Como prática recomendada para fins de segurança, substitua-os * por uma base de conhecimento específica IDs depois de criá-los.

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:knowledge-base/*" } } } ] }

Permissões para acessar os modelos do Amazon Bedrock

Anexe a política a seguir a fim de fornecer permissões ao perfil para usar os modelos do Amazon Bedrock para incorporar os dados de origem.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:ListFoundationModels", "bedrock:ListCustomModels" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "bedrock:InvokeModel" ], "Resource": [ "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-embed-text-v1", "arn:aws:bedrock:us-east-1::foundation-model/cohere.embed-english-v3", "arn:aws:bedrock:us-east-1::foundation-model/cohere.embed-multilingual-v3" ] } ] }

Permissões para acessar as fontes de dados

Selecione uma das fontes de dados a seguir para anexar as permissões necessárias ao perfil.

Permissões para acessar as fontes de dados no Amazon S3

Se sua fonte de dados for o Amazon S3, anexe a política a seguir para permitir que o perfil acesse o bucket do S3 ao qual você se conectará como fonte de dados.

Se você criptografou a fonte de dados com uma AWS KMS chave, anexe permissões para descriptografar a chave à função seguindo as etapas em. Permissões para descriptografar sua AWS KMS chave para suas fontes de dados no Amazon S3

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "S3ListBucketStatement", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } }, { "Sid": "S3GetObjectStatement", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } } ] }

Permissões para acessar as fontes de dados do Confluence

nota

O conector de fonte de dados do Confluence está em versão de prévia e está sujeito a alterações.

Anexe a política a seguir para fornecer permissões para que o perfil acesse o Confluence.

nota

secretsmanager:PutSecretValuesó é necessário se você usar a autenticação OAuth 2.0 com um token de atualização.

O token de acesso do Confluence OAuth2 4.0 tem um tempo de expiração padrão de 60 minutos. Se esse token expirar enquanto a fonte de dados estiver em sincronização (trabalho de sincronização), o Amazon Bedrock usará o token de atualização fornecido para regenerar esse token. Essa regeneração atualiza os tokens de acesso e de atualização. Para manter os tokens atualizados da tarefa de sincronização atual para a próxima tarefa de sincronização, o Amazon Bedrock exige write/put permissões para suas credenciais secretas.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretId" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/KeyId" ], "Condition": { "StringLike": { "kms:ViaService": [ "secretsmanager.us-east-1.amazonaws.com" ] } } } ] }

Permissões para acessar sua fonte de SharePoint dados da Microsoft

nota

SharePoint o conector da fonte de dados está na versão prévia e está sujeito a alterações.

Anexe a política a seguir para fornecer permissões para o acesso da função SharePoint.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretId" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/KeyId" ], "Condition": { "StringLike": { "kms:ViaService": [ "secretsmanager.us-east-1.amazonaws.com" ] } } } ] }

Permissões para acessar as fontes de dados do Salesforce

nota

O conector de fonte de dados do Salesforce está em versão prévia e está sujeito a alterações.

Anexe a política a seguir para fornecer permissões para que o perfil acesse o Salesforce.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretId" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/KeyId" ], "Condition": { "StringLike": { "kms:ViaService": [ "secretsmanager.us-east-1.amazonaws.com" ] } } } ] }

Permissões para descriptografar sua AWS KMS chave para fontes de dados criptografadas no Amazon S3

Se você criptografou suas fontes de dados no Amazon S3 com uma AWS KMS chave, anexe a seguinte política à sua função de serviço do Amazon Bedrock Knowledge Bases para permitir que o Amazon Bedrock decifre sua chave. Substitua ${Region} e ${AccountId} pela região e o ID da conta aos quais a chave pertence. ${KeyId}Substitua pelo ID da sua AWS KMS chave.

{ "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" ] } } }] }

Permissões para conversar com seu documento

Anexe a política a seguir a fim de fornecer permissões para que o perfil use os modelos do Amazon Bedrock para executar conversar com seu documento:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:RetrieveAndGenerate" ], "Resource": "*" } ] }

Se você quiser conceder acesso a um usuário apenas para conversar com seu documento (e não RetrieveAndGenerate em todas as bases de conhecimento), use a seguinte política:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:RetrieveAndGenerate" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "bedrock:Retrieve" ], "Resource": "*" } ] }

Se você quiser conversar com seu documento e usá-lo RetrieveAndGenerate em uma Base de Conhecimento específica, forneça uma ${KnowledgeBaseArn} e use a seguinte política:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:RetrieveAndGenerate" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "bedrock:Retrieve" ], "Resource": "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/$KnowledgeBaseId" } ] }

Permissões para conteúdo multimodal

Ao trabalhar com conteúdo multimodal (imagens, áudio, vídeo), permissões adicionais são necessárias dependendo da sua abordagem de processamento.

Permissões do Nova Multimodal Embeddings

Ao usar o Nova Multimodal Embeddings, anexe a seguinte política para fornecer permissões para invocação assíncrona do modelo:

{ "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": "" } } }

Permissões do Bedrock Data Automation (BDA)

Ao usar o BDA para processar conteúdo multimodal, anexe a seguinte política:

{ "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/*" }

Se você usa AWS KMS chaves gerenciadas pelo cliente com o BDA, anexe também a seguinte política. Substitua account-idregion,, e key-id por seus valores específicos:

{ "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" } } }

Permissões para acessar seu Índice GenAI do Amazon Kendra

Se tiver criado Índice GenAI do Amazon Kendra para a base de conhecimento, anexe a política a seguir ao perfil de serviço das Bases de Conhecimento do Amazon Bedrock a fim de permitir acesso ao índice. Na política, substitua ${Partition}${Region},${AccountId}, e ${IndexId} pelos valores do seu índice. É possível permitir o acesso a vários índices adicionando-os à lista Resource. Para permitir o acesso a todos os índices do seuConta da AWS, ${IndexId} substitua por um caractere curinga (*).

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kendra:Retrieve", "kendra:DescribeIndex" ], "Resource": "arn:aws:kendra:us-east-1:123456789012:index/${IndexId}" } ] }

Permissões para acessar seu banco de dados vetoriais no Amazon OpenSearch Serverless

Se você criou um banco de dados vetorial no OpenSearch Serverless para sua base de conhecimento, anexe a seguinte política à sua função de serviço do Amazon Bedrock Knowledge Bases para permitir o acesso à coleção. Substitua ${Region} e ${AccountId} pela região e o ID da conta aos quais o banco de dados pertence. Insira o ID da sua coleção de OpenSearch serviços da Amazon em${CollectionId}. É possível permitir o acesso a várias coleções adicionando-as à lista Resource.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "aoss:APIAccessAll" ], "Resource": [ "arn:aws:aoss:us-east-1:123456789012:collection/${CollectionId}" ] } ] }

Permissões para acessar seu banco de dados vetoriais em clusters OpenSearch gerenciados

Se você criou um banco de dados vetoriais no OpenSearch Managed Cluster para sua base de conhecimento, anexe a seguinte política à sua função de serviço do Amazon Bedrock Knowledge Bases para permitir o acesso ao domínio. Substitua <region> e <accountId> pela região e o ID da conta aos quais o banco de dados pertence. É possível permitir o acesso a vários domínios adicionando-os à lista Resource. Para obter mais informações sobre a configuração de permissões, consulte Pré-requisitos e permissões necessários para usar clusters gerenciados do OpenSearch com as Bases de Conhecimento do Amazon Bedrock.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttpGet", "es:ESHttpPost", "es:ESHttpPut", "es:ESHttpDelete" ], "Resource": [ "arn:aws:es:us-east-1:123456789012:domain/domainName/indexName" ] }, { "Effect": "Allow", "Action": [ "es:DescribeDomain" ], "Resource": [ "arn:aws:es:us-east-1:123456789012:domain/domainName" ] } ] }

Permissões para acessar o cluster de banco de dados do Amazon Aurora

nota

O cluster Amazon Aurora deve residir no mesmo local em Conta da AWS que a base de conhecimento foi criada para o Amazon Bedrock.

Se tiver criado um cluster de banco de dados no Amazon Aurora para a base de conhecimento, anexe a política a seguir ao perfil de serviço do Amazon Bedrock Knowledge Bases a fim de permitir acesso ao cluster de banco de dados e fornecer permissões de leitura e gravação nele. Substitua ${Region} e ${AccountId} pela região e o ID da conta aos quais o cluster de banco de dados pertence. Insira o ID do seu cluster de banco de dados Amazon Aurora em. ${DbClusterId} É possível permitir acesso a vários clusters de banco de dados adicionando-os à lista Resource.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "RdsDescribeStatementID", "Effect": "Allow", "Action": [ "rds:DescribeDBClusters" ], "Resource": [ "arn:aws:rds:us-east-1:123456789012:cluster:${DbClusterId}" ] }, { "Sid": "DataAPIStatementID", "Effect": "Allow", "Action": [ "rds-data:BatchExecuteStatement", "rds-data:ExecuteStatement" ], "Resource": [ "arn:aws:rds:us-east-1:123456789012:cluster:${DbClusterId}" ] } ] }

Permissões para acessar o banco de dados de vetores no Amazon Neptune Analytics

Se tiver criado um grafo do Amazon Neptune Analytics para a base de conhecimento, anexe a política a seguir ao perfil de serviço das Bases de Conhecimento do Amazon Bedrock a fim de permitir acesso ao grafo. Na política, substitua ${Region} e ${AccountId} pela região e o ID da conta aos quais o banco de dados pertence. ${GraphId}Substitua pelos valores do seu banco de dados gráfico.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "NeptuneAnalyticsAccess", "Effect": "Allow", "Action": [ "neptune-graph:GetGraph", "neptune-graph:ReadDataViaQuery", "neptune-graph:WriteDataViaQuery", "neptune-graph:DeleteDataViaQuery" ], "Resource": [ "arn:aws:neptune-graph:us-east-1:123456789012:graph/${GraphId}" ] } ] }

Permissões para acessar seu armazenamento de vetores no Amazon S3 Vectors

Se você optar por usar o Amazon S3 Vectors para a base de conhecimento, anexe a política a seguir ao perfil de serviço das Bases de Conhecimento do Amazon Bedrock a fim de permitir acesso ao índice de vetores.

Na política, substitua ${Region} e ${AccountId} pela região e o ID da conta aos quais o índice vetorial pertence. ${BucketName}Substitua pelo nome do seu bucket vetorial do S3 e ${IndexName} pelo nome do seu índice vetorial. Para ter mais informações sobre o Amazon S3 Vectors, consulte Configurar o Amazon S3 Vectors para uso.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "S3VectorBucketReadAndWritePermission", "Effect": "Allow", "Action": [ "s3vectors:PutVectors", "s3vectors:GetVectors", "s3vectors:DeleteVectors", "s3vectors:QueryVectors", "s3vectors:GetIndex" ], "Resource": "arn:aws:s3vectors:us-east-1:123456789012:bucket/${BucketName}/index/${IndexName}" } ] }

Permissões para acessar um banco de dados vetorial configurado com um AWS Secrets Manager segredo

Se seu banco de dados vetoriais estiver configurado com um AWS Secrets Manager segredo, anexe a seguinte política à sua função de serviço do Amazon Bedrock Knowledge Bases AWS Secrets Manager para permitir a autenticação de sua conta para acessar o banco de dados. Substitua ${Region} e ${AccountId} pela região e o ID da conta aos quais o banco de dados pertence. ${SecretId}Substitua pelo ID do seu segredo.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:123456789012:secret:${SecretId}" ] } ] }

Se você criptografou seu segredo com uma AWS KMS chave, anexe permissões para descriptografar a chave à função seguindo as etapas em. Permissões para descriptografar um AWS Secrets Manager segredo para o armazenamento de vetores que contém sua base de conhecimento

Permissões AWS para gerenciar uma AWS KMS chave para armazenamento transitório de dados durante a ingestão de dados

Para permitir a criação de uma AWS KMS chave para armazenamento transitório de dados no processo de ingestão de sua fonte de dados, anexe a seguinte política à sua função de serviço da Amazon Bedrock Knowledge Bases. Substitua o ${Region}${AccountId}, e ${KeyId} pelos valores apropriados.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/${KeyId}" ] } ] }

Permissões AWS para gerenciar fontes de dados da AWS conta de outro usuário.

Para permitir o acesso à AWS conta de outro usuário, você deve criar uma função que permita o acesso entre contas a um bucket do Amazon S3 na conta de outro usuário. Substitua o ${BucketName}${BucketOwnerAccountId}, e ${BucketNameAndPrefix} pelos valores apropriados.

Permissões necessárias no perfil da base de conhecimento

O perfil da base de conhecimento fornecido durante a criação da base de conhecimento createKnowledgeBase requer as permissões do Amazon S3 a seguir.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "S3ListBucketStatement", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } }, { "Sid": "S3GetObjectStatement", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } } ] }

Se o bucket do Amazon S3 for criptografado usando uma AWS KMS chave, o seguinte também precisará ser adicionado à função da base de conhecimento. Substitua ${Region} a ${BucketOwnerAccountId} e pelos valores apropriados.

{ "Sid": "KmsDecryptStatement", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:${Region}:${BucketOwnerAccountId}:key/${KeyId}" ], "Condition": { "StringEquals": { "kms:ViaService": [ "s3.${Region}.amazonaws.com" ] } } }

Permissões necessárias em uma política de bucket do Amazon S3 entre contas

O bucket na outra conta exige a política de bucket do Amazon S3 a seguir. Substitua o ${KbRoleArn}${BucketName}, e ${BucketNameAndPrefix} pelos valores apropriados.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ListBucket", "Effect": "Allow", "Principal": { "AWS": "123456789012" }, "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] }, { "Sid": "GetObject", "Effect": "Allow", "Principal": { "AWS": "123456789012" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }

Permissões necessárias na política de AWS KMS chaves entre contas

Se o bucket do Amazon S3 entre contas for criptografado usando AWS KMS uma chave nessa conta, a política da chave exigirá AWS KMS a seguinte política. Substitua ${KmsKeyArn} a ${KbRoleArn} e pelos valores apropriados.

{ "Sid": "Example policy", "Effect": "Allow", "Principal": { "AWS": [ "${KbRoleArn}" ] }, "Action": [ "kms:Decrypt" ], "Resource": "${KmsKeyArn}" }