Configura il motore di query e le autorizzazioni per creare una knowledge base con archivio dati strutturato - Amazon Bedrock

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configura il motore di query e le autorizzazioni per creare una knowledge base con archivio dati strutturato

Questo argomento descrive le autorizzazioni necessarie per connettere la knowledge base a un data store strutturato. Se prevedi di collegare una knowledge base Amazon Bedrock a un data store strutturato, devi soddisfare i prerequisiti. Per i requisiti generali di autorizzazione da soddisfare, consulta. Configurare le autorizzazioni per un utente o un ruolo per creare e gestire le knowledge base

Importante

L'esecuzione di query SQL arbitrarie può rappresentare un rischio per la sicurezza di qualsiasi applicazione. Text-to-SQL Si consiglia di adottare le precauzioni necessarie, ad esempio utilizzando ruoli limitati, database di sola lettura e sandboxing.

Amazon Bedrock Knowledge Bases utilizza Amazon Redshift come motore di query per interrogare il tuo data store. Un motore di query accede ai metadati da un archivio dati strutturato e utilizza i metadati per generare query SQL. Amazon Redshift è un servizio di data warehouse che utilizza SQL per analizzare dati strutturati in data warehouse, database e data lake.

Crea il motore di query Amazon Redshift

Puoi utilizzare Amazon Redshift Serverless o Amazon Redshift Provisioned a seconda del caso d'uso e connetterti a gruppi di lavoro o cluster per il tuo data warehouse. I dati sottostanti che il motore di Amazon Redshift può interrogare possono essere dati archiviati nativamente in cluster Amazon Redshift o dati che si trovano in modalità predefinita (ad AWS Glue Data Catalog esempio in Amazon S3, tra gli altri).

Se hai già creato un motore di query, puoi ignorare questo prerequisito. Altrimenti, esegui i seguenti passaggi per configurare il tuo motore di query Amazon Redshift provisioned o Amazon Redshift Serverless:

Per configurare un motore di query in Amazon Redshift è stato fornito
  1. Segui la procedura nella Fase 1: Crea un cluster Amazon Redshift di esempio nella Amazon Redshift Getting Started Guide.

  2. Prendi nota dell'ID del cluster.

  3. (Facoltativo) Per ulteriori informazioni sui cluster con provisioning di Amazon Redshift, consulta Amazon Redshift provisioned clusters nella Amazon Redshift Management Guide.

Per configurare un motore di query in Amazon Redshift Serverless
  1. Segui solo la procedura di configurazione descritta in Creazione di un data warehouse with Amazon Redshift Serverless nella Amazon Redshift Getting Started Guide e configuralo con le impostazioni predefinite.

  2. Nota l'ARN del gruppo di lavoro.

  3. (Facoltativo) Per ulteriori informazioni sui gruppi di lavoro Serverless di Amazon Redshift, consulta Workgroups and namespace nella Amazon Redshift Management Guide.

Configurazione delle autorizzazioni del motore di query Amazon Redshift

A seconda del motore di query Amazon Redshift che scegli, puoi configurare determinate autorizzazioni. Le autorizzazioni che configuri dipendono dal metodo di autenticazione. La tabella seguente mostra i metodi di autenticazione che possono essere utilizzati per diversi motori di query:

Metodo di autenticazione Amazon Redshift fornito Amazon Redshift Serverless
IAM Yes Yes
Nome utente del database Yes No No
AWS Secrets Manager Yes Yes

Amazon Bedrock Knowledge Bases utilizza un ruolo di servizio per connettere le knowledge base agli archivi di dati strutturati, recuperare dati da questi archivi di dati e generare query SQL basate sulle query degli utenti e sulla struttura degli archivi dati.

Nota

Se prevedi di utilizzare il per AWS Management Console creare una knowledge base, puoi ignorare questo prerequisito. La console creerà un ruolo del servizio Amazon Bedrock Knowledge Bases con le autorizzazioni appropriate.

Per creare un ruolo di servizio IAM personalizzato con le autorizzazioni appropriate, segui i passaggi in Creare un ruolo per delegare le autorizzazioni a una relazione di trust definita in Servizio AWS e allegare la relazione di fiducia definita in. Relazione di attendibilità

Quindi, aggiungi le autorizzazioni per la tua knowledge base per accedere al motore di query e ai database di Amazon Redshift. Espandi la sezione relativa al tuo caso d'uso:

Allega la seguente policy al tuo ruolo di servizio personalizzato per consentirgli di accedere ai tuoi dati e generare query utilizzandoli:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftDataAPIStatementPermissions", "Effect": "Allow", "Action": [ "redshift-data:GetStatementResult", "redshift-data:DescribeStatement", "redshift-data:CancelStatement" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "redshift-data:statement-owner-iam-userid": "${aws:userid}" } } }, { "Sid": "RedshiftDataAPIExecutePermissions", "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement" ], "Resource": [ "arn:aws:redshift:${Region}:${Account}:cluster:${Cluster}" ] }, { "Sid": "SqlWorkbenchAccess", "Effect": "Allow", "Action": [ "sqlworkbench:GetSqlRecommendations", "sqlworkbench:PutSqlGenerationContext", "sqlworkbench:GetSqlGenerationContext", "sqlworkbench:DeleteSqlGenerationContext" ], "Resource": "*" }, { "Sid": "GenerateQueryAccess", "Effect": "Allow", "Action": [ "bedrock:GenerateQuery" ], "Resource": "*" } ] }

È inoltre necessario aggiungere le autorizzazioni per consentire al ruolo di servizio di autenticarsi nel motore di query. Espandi una sezione per visualizzare le autorizzazioni per quel metodo.

IAM

Per consentire al tuo ruolo di servizio di autenticarsi sul tuo motore di query fornito da Amazon Redshift con IAM, collega la seguente policy al tuo ruolo di servizio personalizzato:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetCredentialsWithFederatedIAMCredentials", "Effect": "Allow", "Action": "redshift:GetClusterCredentialsWithIAM", "Resource": [ "arn:aws:redshift:${region}:${account}:dbname:${cluster}/${database}" ] } }
Database user

Per autenticarti come utente del database Amazon Redshift, collega la seguente policy al ruolo di servizio:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetCredentialsWithClusterCredentials", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "arn:aws:redshift:${region}:${account}:dbuser:${cluster}/${dbuser}", "arn:aws:redshift:${region}:${account}:dbname:${cluster}/${database}" ] } ] }
AWS Secrets Manager

Per consentire al tuo ruolo di servizio di autenticarsi sul motore di query fornito da Amazon Redshift con AWS Secrets Manager un segreto, procedi come segue:

  • Allega la seguente politica al ruolo:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "GetSecretPermissions", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:${region}:${account}:secret:${secretName}" ] } ] }

Le autorizzazioni da allegare dipendono dal metodo di autenticazione utilizzato. Espandi una sezione per visualizzare le autorizzazioni per un metodo.

IAM

Per consentire al tuo ruolo di servizio di autenticarsi sul tuo motore di query serverless Amazon Redshift con IAM, collega la seguente policy al tuo ruolo di servizio personalizzato:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftServerlessGetCredentials", "Effect": "Allow", "Action": "redshift-serverless:GetCredentials", "Resource": [ "arn:aws:redshift-serverless:${Region}:${Account}:workgroup:${WorkgroupId}" ] } ] }
AWS Secrets Manager

Per consentire al tuo ruolo di servizio di autenticarsi sul motore di query fornito da Amazon Redshift con AWS Secrets Manager un segreto, procedi come segue:

  • Allega la seguente politica al ruolo:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "GetSecretPermissions", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:${region}:${account}:secret:${secretName}" ] } ] }

Consenti al ruolo del servizio della Knowledge Base di accedere al tuo archivio dati

Assicurati che i tuoi dati siano archiviati in uno dei seguenti archivi di dati strutturati supportati:

  • Amazon Redshift

  • AWS Glue Data Catalog (AWS Lake Formation)

La tabella seguente riassume i metodi di autenticazione disponibili per il motore di query, a seconda del data store in uso:

Metodo di autenticazione Amazon Redshift AWS Glue Data Catalog (AWS Lake Formation)
IAM Yes Yes
Nome utente del database Yes No No
AWS Secrets Manager Yes No No

Per informazioni su come configurare le autorizzazioni per il tuo ruolo di servizio Amazon Bedrock Knowledge Bases per accedere al tuo data store e generare query basate su di esso, espandi la sezione corrispondente al servizio in cui si trova il tuo data store:

Per concedere al tuo ruolo di servizio Amazon Bedrock Knowledge Bases l'accesso al tuo database Amazon Redshift, usa l'editor di query di Amazon Redshift v2 ed esegui i seguenti comandi SQL:

  1. (Se esegui l'autenticazione con IAM e non è già stato creato un utente per il tuo database) Esegui il comando seguente, che utilizza CREATE USER per creare un utente del database e consentirgli di autenticarsi tramite IAM, sostituendolo ${service-role} con il nome del ruolo di servizio Amazon Bedrock Knowledge Bases personalizzato che hai creato:

    CREATE USER "IAMR:${service-role}" WITH PASSWORD DISABLE;
    Importante

    Se utilizzi il ruolo di servizio Amazon Bedrock Knowledge Bases creato per te nella console e poi sincronizzi il tuo data store prima di eseguire questo passaggio, l'utente verrà creato per te, ma la sincronizzazione avrà esito negativo perché all'utente non sono state concesse le autorizzazioni per accedere al tuo data store. Prima della sincronizzazione, devi eseguire il seguente passaggio.

  2. Concedi a un'identità i permessi per recuperare informazioni dal tuo database eseguendo il comando GRANT.

    IAM
    GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "IAMR:${serviceRole}";
    Database user
    GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${dbUser}";
    AWS Secrets Manager username
    GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${secretsUsername}";
    Importante

    Non concedere CREATE o UPDATE DELETE accedere. La concessione di queste azioni può comportare una modifica involontaria dei dati.

    Per un controllo più preciso sulle tabelle a cui è possibile accedere, puoi sostituire nomi di tabelle ALL TABLES specifici con la seguente notazione:. ${schemaName} ${tableName} Per ulteriori informazioni su questa notazione, vedere la sezione Oggetti di interrogazione in Interrogazioni tra database.

    IAM
    GRANT SELECT ON ${schemaName}.${tableName} TO "IAMR:${serviceRole}";
    Database user
    GRANT SELECT ON ${schemaName}.${tableName} TO "${dbUser}";
    AWS Secrets Manager username
    GRANT SELECT ON ${schemaName}.${tableName} TO "${secretsUsername}";
  3. Se hai creato un nuovo schema nel database Redshift, esegui il comando seguente per concedere a un'identità i permessi per il nuovo schema.

    GRANT USAGE ON SCHEMA ${schemaName} TO "IAMR:${serviceRole}";

Per concedere al ruolo del servizio Amazon Bedrock Knowledge Bases l'accesso al tuo AWS Glue Data Catalog data store, usa l'editor di query di Amazon Redshift v2 ed esegui i seguenti comandi SQL:

  1. Esegui il comando seguente, che utilizza CREATE USER per creare un utente del database e consentirgli l'autenticazione tramite IAM, sostituendolo ${service-role} con il nome del ruolo di servizio Amazon Bedrock Knowledge Bases personalizzato che hai creato:

    CREATE USER "IAMR:${service-role}" WITH PASSWORD DISABLE;
    Importante

    Se utilizzi il ruolo di servizio Amazon Bedrock Knowledge Bases creato per te nella console e poi sincronizzi il tuo data store prima di eseguire questo passaggio, l'utente verrà creato per te, ma la sincronizzazione avrà esito negativo perché all'utente non sono state concesse le autorizzazioni per accedere al tuo data store. Prima della sincronizzazione, devi eseguire il seguente passaggio.

  2. Concedi al ruolo di servizio le autorizzazioni per recuperare informazioni dal tuo database eseguendo il seguente comando GRANT:

    GRANT USAGE ON DATABASE awsdatacatalog TO "IAMR:${serviceRole}";
    Importante

    Non concedere CREATE o UPDATE DELETE accedere. La concessione di queste azioni può comportare una modifica involontaria dei dati.

  3. Per consentire l'accesso ai tuoi AWS Glue Data Catalog database, assegna le seguenti autorizzazioni al ruolo di servizio:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "glue:GetDatabases", "glue:GetDatabase", "glue:GetTables", "glue:GetTable", "glue:GetPartitions", "glue:GetPartition", "glue:SearchTables" ], "Resource": [ "arn:aws:glue:${Region}:${Account}:table/${DatabaseName}/${TableName}", "arn:aws:glue:${Region}:${Account}:database/${DatabaseName}", "arn:aws:glue:${Region}:${Account}:catalog" ] } ] }
  4. Concedi le autorizzazioni per il tuo ruolo di servizio tramite AWS Lake Formation (per ulteriori informazioni su Lake Formation e sulla sua relazione con Amazon Redshift, consulta Fonti di dati per Redshift) procedendo come segue:

    1. Accedi a AWS Management Console, e apri la console Lake Formation all'indirizzo https://console.aws.amazon.com/lakeformation/.

    2. Seleziona Autorizzazioni dati dal riquadro di navigazione a sinistra.

    3. Concedi le autorizzazioni per il ruolo di servizio che stai utilizzando per Amazon Bedrock Knowledge Bases.

    4. Concedi le autorizzazioni Descrivi e Seleziona per i tuoi database e tabelle.

  5. A seconda dell'origine dati utilizzata AWS Glue Data Catalog, potrebbe essere necessario aggiungere le autorizzazioni per accedere a tale origine dati (per ulteriori informazioni, consulta la sezione AWS Glue Dipendenza da altro). Servizi AWS Ad esempio, se la tua origine dati si trova in una posizione Amazon S3, dovrai aggiungere la seguente dichiarazione alla politica di cui sopra.

    { "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::${BucketName}", "arn:aws:s3:::${BucketName}/*" ] }
  6. (Facoltativo) Se lo utilizzi AWS KMS per crittografare i dati in Amazon S3 AWS Glue Data Catalog oppure, devi aggiungere le autorizzazioni al ruolo per decrittografare i dati sulla chiave KMS.

    { "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:${Region}:${Account}:key/{KmsId}", "arn:aws:kms:${Region}:${Account}:key/{KmsId}" ], "Effect": "Allow" }