Creación de un rol de servicio para bases de conocimientos de Amazon Bedrock - Amazon Bedrock

Creación de un rol de servicio para bases de conocimientos de Amazon Bedrock

Para usar un rol personalizado para una base de conocimientos en lugar del que Amazon Bedrock crea automáticamente, cree un rol de IAM y asocie los siguientes permisos siguiendo los pasos que se indican en Crear un rol para delegar permisos a un servicio de AWS. Incluya solo los permisos necesarios para su propia seguridad.

nota

Una política no se puede compartir entre varios roles cuando se usa el rol de servicio.

  • Relación de confianza

  • Acceso a los modelos base de Amazon Bedrock

  • Acceso al origen de datos en el que almacena los datos

  • (Si crea una base de datos vectorial en Amazon OpenSearch Service) Acceso a su colección de OpenSearch Service

  • (Si crea una base de datos vectorial en Amazon Aurora) Acceso al clúster de Aurora

  • (Si crea una base de datos vectorial en Pinecone o Redis Enterprise Cloud) Permisos de AWS Secrets Manager para autenticar su cuenta de Pinecone o Redis Enterprise Cloud

  • (Opcional) Si cifra alguno de los siguientes recursos con una clave KMS, permisos para descifrar la clave (consulte Cifrado de recursos de bases de conocimientos).

    • Su base de conocimientos

    • Orígenes de datos para bases de conocimientos

    • Su base de datos vectorial en Amazon OpenSearch Service

    • El secreto de su base de datos vectorial de terceros en AWS Secrets Manager

    • Un trabajo de ingesta de datos

Relación de confianza

La siguiente política permite a Amazon Bedrock asumir este rol y crear y gestionar bases de conocimientos. A continuación se muestra un ejemplo de política que puede utilizar. Puede restringir el alcance del permiso mediante una o más claves de contexto de condiciones globales. Para obtener más información, consulte las claves de contexto de condición globales de AWS. Configure el valor aws:SourceAccount en el ID de su cuenta. Use la condición ArnEquals o ArnLike para restringir el alcance a bases de conocimiento específicas.

nota

Como práctica recomendada por motivos de seguridad, sustituya el * por identificadores de bases de conocimiento específicas después de crearlas.

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

Permisos para acceder a los modelos de Amazon Bedrock

Asocie la siguiente política para proporcionar permisos al rol para usar modelos de Amazon Bedrock para incrustar sus datos de origen.

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

Permisos de acceso a los orígenes de datos

Seleccione uno de los siguientes orígenes de datos para asociar los permisos necesarios para el rol.

Permisos de acceso al origen de datos en Amazon S3

Si su origen de datos es Amazon S3, asocie la siguiente política para proporcionar permisos para que el rol acceda al bucket de S3 al que se conectará como origen de datos.

Si ha cifrado estos orígenes de datos con una clave de AWS KMS, asocie los permisos para descifrar la clave al rol siguiendo los pasos que se indican en Permisos para descifrar la clave AWS KMS de los orígenes de datos en 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" } } } ] }

Permisos de acceso al origen de datos de Confluence

nota

El conector del origen de datos de Confluence está en versión preliminar y sujeta a cambios.

Asocie la siguiente política para conceder permisos al rol para acceder a Confluence.

nota

secretsmanager:PutSecretValue solo se necesita si utiliza la autenticación OAuth 2.0 con un token de actualización.

El token de acceso a OAuth 2.0 de Confluence tiene un período de caducidad predeterminado de 60 minutos. Si este token caduca mientras se está sincronizando el origen de datos (trabajo de sincronización), Amazon Bedrock utilizará el token de actualización proporcionado para regenerar este token. Esta regeneración actualiza los tokens de acceso y de actualización. Para mantener los tokens actualizados desde el trabajo de sincronización actual al siguiente trabajo de sincronización, Amazon Bedrock necesita permisos de escritura o colocación para las credenciales 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" ] } } } ] }

Permisos de acceder al origen de datos de Microsoft SharePoint

nota

El conector del origen de datos de SharePoint está en versión preliminar y sujeta a cambios.

Asocie la siguiente política para conceder permisos al rol para acceder a 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" ] } } } ] }

Permisos de acceso al origen de datos de Salesforce

nota

El conector del origen de datos de Salesforce está en versión preliminar y sujeta a cambios.

Asocie la siguiente política para conceder permisos al rol para acceder a 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" ] } } } ] }

Permisos para chatear con su documento

Asocie la siguiente política para proporcionar permisos al rol para usar modelos de Amazon Bedrock para chatear con su documento:

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

Si solo quiere conceder acceso a un usuario para chatear con su documento (y no RetrieveAndGenerate en todas las bases de conocimientos), utilice la siguiente política:

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

Si desea chatear con su documento y usar RetrieveAndGenerate en una base de conocimiento específica, proporcione un ${KnowledgeBaseArn} y utilice la siguiente 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" } ] }

Permisos para acceder a su índice GenAI de Amazon Kendra

Si ha creado un índice GenAI de Amazon Kendra para su base de conocimiento, asocie la siguiente política a su rol de servicio de Bases de conocimiento de Amazon Bedrock para permitir el acceso al índice. En la política, sustituya ${Partition}, ${Region}, ${AccountId} y ${IndexId} por los valores de su índice. Puede permitir el acceso a varios índices añadiéndolos a la lista Resource. Para permitir el acceso a todos los índices de su Cuenta de AWS, sustituya ${indexId} por un comodín (*).

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

Permisos para acceder a la base de datos vectorial en Amazon OpenSearch sin servidor

Si ha creado una base de datos vectorial en OpenSearch sin servidor para su base de conocimiento, asocie la siguiente política a su rol de servicio de Bases de conocimiento de Amazon Bedrock para permitir el acceso a la colección. Sustituya ${Region} y ${AccountId} por la región y el ID de cuenta a los que pertenece la base de datos. Introduzca el ID de su colección de Amazon OpenSearch Service en ${CollectionId}. Puede permitir el acceso a varias colecciones si las agrega a la lista de Resource.

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

Permisos para acceder a la base de datos vectorial en clústeres administrados de OpenSearch

Si ha creado una base de datos vectorial en un clúster administrado de OpenSearch para su base de conocimiento, asocie la siguiente política a su rol de servicio de Bases de conocimiento de Amazon Bedrock para permitir el acceso al dominio. Sustituya <region> y <accountId> por la región y el ID de cuenta a los que pertenece la base de datos. Puede permitir el acceso a varios dominios añadiéndolos a la lista Resource. Para obtener más información acerca de la configuración de permisos, consulte Requisitos previos y permisos necesarios para usar los clústeres administrados de OpenSearch con Bases de conocimiento de 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" ] } ] }

Permisos para acceder al clúster de base de datos de Amazon Aurora

nota

El clúster de Amazon Aurora debe residir en la misma Cuenta de AWS en la que se creó la base de conocimiento para Amazon Bedrock.

Si ha creado un clúster de base de datos (DB) en Amazon Aurora para la base de conocimientos, asocie la siguiente política al rol de servicio de bases de conocimientos de Amazon Bedrock para permitir el acceso al clúster de base de datos y proporcionarle permisos de lectura y escritura. Sustituya ${Region} y ${AccountId} por la región y el ID de cuenta a los que pertenece el clúster de base de datos. Introduzca el ID del clúster de base de datos de Amazon Aurora en ${DbClusterId}. Puede permitir el acceso a varios clústeres de bases de datos si las agrega a la 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}" ] } ] }

Permisos para acceder a la base de datos vectorial en Análisis por Amazon Neptune

Si ha creado un gráfico de Análisis por Amazon Neptune para su base de conocimiento, asocie la siguiente política a su rol de servicio de Bases de conocimiento de Amazon Bedrock para permitir el acceso al gráfico. En la política, sustituya ${Region} y ${AccountId} por la región y el ID de cuenta a los que pertenece la base de datos. Sustituya ${GraphId} por los valores de su base de datos de gráficos.

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

Permisos para acceder a su almacén de vectores en Amazon S3 Vectors

Si decide usar Amazon S3 Vectors para su base de conocimiento, asocie la siguiente política a su rol de servicio de Bases de conocimiento de Amazon Bedrock para permitir el acceso al índice vectorial.

importante

La integración de Amazon S3 Vectors con Bases de conocimiento de Amazon Bedrock se encuentra en versión preliminar y está sujeta a cambios.

En la política, sustituya ${Region} y ${AccountId} por la región y el ID de cuenta a los que pertenece el índice vectorial. Sustituya ${BucketName} por el nombre de su bucket vectorial de S3 y ${IndexName} por el nombre de su índice vectorial. Para obtener más información acerca de Amazon S3 Vectors, consulte Configuración para usar Amazon S3 Vectors.

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

Permisos para acceder a una base de datos vectorial configurada con un secreto de AWS Secrets Manager

Si su base de datos vectorial se ha configurado con un secreto de AWS Secrets Manager, asocie la siguiente política a su rol de servicio de bases de conocimientos de servicio de Amazon Bedrock para permitir a AWS Secrets Manager autenticar su cuenta y acceder a la base de datos. Sustituya ${Region} y ${AccountId} por la región y el ID de cuenta a los que pertenece la base de datos. Sustituya ${SecretId} por el ID del secreto.

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

Si cifró su secreto con una clave AWS KMS, asocie los permisos para descifrar la clave al rol siguiendo los pasos que se indican en Permisos para descifrar un secreto de AWS Secrets Manager para el almacén vectorial que contiene su base de conocimientos.

Permisos para que AWS pueda administrar una clave de AWS KMS para el almacenamiento de datos transitorio durante la ingesta de datos

Para permitir la creación de una clave de AWS KMS para el almacenamiento de datos transitorio en el proceso de ingesta de su origen de datos, asocie la siguiente política a su rol de servicio de bases de conocimientos de Amazon Bedrock. Sustituya ${Region}, ${AccountId} y ${KeyId} por los valores correspondientes.

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

Permisos para que AWS administre un origen de datos desde la cuenta de AWS de otro usuario

Para permitir el acceso a la cuenta de AWS de otro usuario, debe crear un rol que permita el acceso entre cuentas a un bucket de Amazon S3 de la cuenta de otro usuario. Sustituya ${BucketName}, ${BucketOwnerAccountId} y ${BucketNameAndPrefix} por los valores correspondientes.

Se requieren permisos para el rol de base de conocimientos

El rol de base de conocimientos que se proporciona durante la creación de la base de conocimientos createKnowledgeBase requiere los siguientes permisos de 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" } } } ] }

Si el bucket de Amazon S3 se cifra con una clave de AWS KMS, también es necesario añadir lo siguiente al rol de base de conocimientos. Sustituya ${BucketOwnerAccountId} y ${Region} por los valores correspondientes.

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

Permisos necesarios en una política de bucket de Amazon S3 en diversas cuentas

El bucket de la otra cuenta requiere la siguiente política de bucket de Amazon S3. Sustituya ${KbRoleArn}, ${BucketName} y ${BucketNameAndPrefix} por los valores correspondientes.

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

Permisos requeridos en una política de claves de AWS KMS en diversas cuentas

Si el bucket de Amazon S3 de diversas cuentas se cifra con una clave de AWS KMS de esa cuenta, la política de la clave de AWS KMS exige la siguiente política. Sustituya ${KbRoleArn} y ${KmsKeyArn} por los valores correspondientes.

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