Prerequisiti per la creazione di una knowledge base Amazon Bedrock con un data store 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à.

Prerequisiti per la creazione di una knowledge base Amazon Bedrock con un data store strutturato

Se prevedi di connettere una knowledge base Amazon Bedrock a un data store strutturato, devi soddisfare i prerequisiti descritti in questo argomento.

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.

Consulta i seguenti argomenti per assicurarti di avere configurato tutte le autorizzazioni necessarie.

Configura un motore di query Amazon Redshift

Amazon Bedrock Knowledge Bases utilizza Amazon Redshift come motore di query per interrogare il tuo data store. Se i tuoi dati si trovano già in un motore di query serverless o fornito da Amazon Redshift, puoi ignorare questo prerequisito. Altrimenti, configura uno dei seguenti tipi di motori di query:

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.

Raccogli informazioni sul tuo database

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)

Nota

Se i tuoi dati non si trovano in una delle fonti di dati di cui sopra, ma si trovano in un data store supportato per la scansione da AWS Glue, puoi configurare un crawler per scrivere il tuo data store su una AWS Glue tabella seguendo i passaggi descritti nella Configurazione di un crawler nella Guida per gli sviluppatori. AWS Glue

Tieni presente le seguenti informazioni per quando crei la knowledge base:

  • Se i dati sono archiviati in un database Amazon Redshift, annota il nome del database.

  • Se i tuoi dati sono archiviati in AWS Glue Data Catalog (Amazon SageMaker AI Lakehouse), annota i nomi delle tabelle a cui desideri che la tua knowledge base abbia accesso.

Assegna le autorizzazioni al tuo ruolo utente

Affinché un ruolo IAM possa eseguire azioni relative alle Knowledge Base di Amazon Bedrock, è necessario allegare politiche al ruolo che concedono le autorizzazioni per eseguire le azioni. Questo argomento descrive le autorizzazioni che consentono a un utente di creare e gestire una knowledge base connessa a un archivio dati strutturato. Descrive inoltre le autorizzazioni che consentono a un utente di recuperare informazioni da queste knowledge base e generare risposte da esse.

Espandi le seguenti sezioni per scoprire come configurare le autorizzazioni per casi d'uso specifici:

Per consentire a un ruolo IAM di creare una knowledge base, collegarla a un data store strutturato, gestire la knowledge base e avviare e gestire i processi di inserimento dalla fonte di dati alla knowledge base, devi fornire le autorizzazioni per e le KnowledgeBase azioni. DataSource IngestionJob

Nota

Se al ruolo è associata la policy AmazonBedrockFullAccess AWS gestita, puoi ignorare questo prerequisito.

Per fornire le autorizzazioni per etichettare le knowledge base, includi le autorizzazioni per e. bedrock:TagResource bedrock:UntagResource Per consentire a un ruolo di eseguire queste azioni, allega la seguente politica al ruolo:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateKB", "Effect": "Allow", "Action": [ "bedrock:CreateKnowledgeBase" ], "Resource": "*" }, { "Sid": "KBDataSourceManagement", "Effect": "Allow", "Action": [ "bedrock:GetKnowledgeBase", "bedrock:ListKnowledgeBases", "bedrock:UpdateKnowledgeBase", "bedrock:DeleteKnowledgeBase", "bedrock:StartIngestionJob", "bedrock:GetIngestionJob", "bedrock:ListIngestionJobs", "bedrock:StopIngestionJob", "bedrock:TagResource", "bedrock:UntagResource" ], "Resource": [ "arn:${Partition}:bedrock:${Region}:${Account}:knowledge-base/*" ] } ] }

Dopo aver creato una knowledge base, ti consigliamo di ridurre l'ambito delle autorizzazioni nello KBDataSourceManagement statuto sostituendo il carattere jolly (*) con l'ID della knowledge base che hai creato.

Per consentire a un ruolo IAM di interrogare una knowledge base connessa a un data store strutturato, allega la seguente policy al ruolo:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetKB", "Effect": "Allow", "Action": [ "bedrock:GetKnowledgeBase" ], "Resource": [ "arn:${Partition}:bedrock:${Region}:${Account}:knowledge-base/${KnowledgeBaseId}" ] }, { "Sid": "GenerateQueryAccess", "Effect": "Allow", "Action": [ "bedrock:GenerateQuery", "sqlworkbench:GetSqlRecommendations" ], "Resource": "*" }, { "Sid": "Retrieve", "Effect": "Allow", "Action": [ "bedrock:Retrieve", ] "Resource": [ "arn:${Partition}:bedrock:${Region}:${Account}:knowledge-base/${KnowledgeBaseId}" ] }, { "Sid": "RetrieveAndGenerate", "Effect": "Allow", "Action": [ "bedrock:RetrieveAndGenerate", ] "Resource": [ "*" ] } ] }

Puoi rimuovere le istruzioni che non ti servono, a seconda del caso d'uso:

  • GenerateQueryLe istruzioni GetKB and sono necessarie per la chiamata GenerateQueryper generare query SQL che tengano conto delle query degli utenti e dell'origine dati connessa.

  • La Retrieve dichiarazione è necessaria per chiamare Retrieveper recuperare dati dal tuo archivio dati strutturato.

  • La RetrieveAndGenerate dichiarazione è necessaria per chiamare RetrieveAndGenerateper recuperare dati dal tuo archivio di dati strutturato e generare risposte basate sui dati.

Per limitare ulteriormente le autorizzazioni, puoi omettere le azioni oppure puoi specificare risorse e chiavi di condizione in base alle quali filtrare le autorizzazioni. Per ulteriori informazioni su azioni, risorse e chiavi di condizione, vedere i seguenti argomenti nel Service Authorization Reference:

Crea e configura le autorizzazioni per il tuo ruolo di servizio Amazon Bedrock Knowledge Bases

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 il caso d'uso.

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

Se i tuoi dati sono archiviati in AWS Glue Data Catalog, sostituiscili con. ${database} dev

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

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 il caso d'uso.

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": "RedshiftServerlessGetCredentials", "Effect": "Allow", "Action": "redshift-serverless:GetCredentials", "Resource": [ "arn:aws:redshift-serverless:${Region}:${Account}:workgroup:${WorkgroupId}" ] } }

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

Concedi l'accesso al database al ruolo che utilizzi per l'autenticazione

Per concedere l'accesso al database al ruolo utilizzato per l'autenticazione, utilizzando Amazon Redshift query editor v2, 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 all'utente del database le autorizzazioni per recuperare informazioni dal tuo database eseguendo il comando GRANT. È possibile definire l'ambito di database, tabelle o righe o colonne specifici nelle tabelle ${tableName} sostituendo o. ${dbName}

    Esegui il comando che corrisponde al servizio in cui sono archiviati i tuoi dati:

    • Se i tuoi dati sono archiviati in Amazon Redshift, esegui il comando corrispondente al tuo metodo di autenticazione.

      IAM
      GRANT SELECT ON ${tableName} TO "IAMR:${serviceRole}";
      Database user
      GRANT SELECT ON ${tableName} TO "${dbUser}";
      AWS Secrets Manager username
      GRANT SELECT ON ${tableName} TO "IAMR:${secretsUsername}";
    • Se i dati sono archiviati in AWS Glue Data Catalog, esegui il comando corrispondente al metodo di autenticazione.

      IAM
      GRANT USAGE ON DATABASE ${schemaName} TO "IAMR:${serviceRole}";
      Database user
      GRANT USAGE ON DATABASE ${schemaName} TO "${dbUser}";
      AWS Secrets Manager username
      GRANT USAGE ON DATABASE ${schemaName} TO "${secretsUsername}";
    Importante

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

(Se i dati sono archiviati in AWS Glue Data Catalog) Autorizzazioni aggiuntive richieste

Sia che utilizzi il ruolo di servizio Amazon Bedrock Knowledge Bases AWS Management Console creato per te o un ruolo personalizzato creato da te, devi configurare le seguenti autorizzazioni per consentire l'accesso ai tuoi dati se sono archiviati in: AWS Glue Data Catalog

  • 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" ] } ] }
  • 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 Redshift Spectrum AWS Lake Formation e) 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.

  • A seconda dell'origine dati utilizzata AWS Glue Data Catalog, potrebbe essere necessario aggiungere anche le autorizzazioni per accedere a tale origine dati (per ulteriori informazioni, consulta la sezione AWS Glue Dipendenza da altre fonti). 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}/*" ] }

Richiedi l'accesso ai modelli di base per RetrieveAndGenerate

Se prevedi di utilizzare RetrieveAndGenerateper generare risposte basate sui dati recuperati dalla tua fonte di dati, richiedi l'accesso ai modelli di base da utilizzare per la generazione seguendo la procedura riportata Accedi ai modelli di base Amazon Bedrock qui.