

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à.

# Configurazione del motore di query e delle autorizzazioni per la creazione di una knowledge base con un datastore strutturato
<a name="knowledge-base-prereq-structured"></a>

Questo argomento descrive le autorizzazioni necessarie per connettere la knowledge base a un datastore strutturato. Se prevedi di connettere Knowledge Base per Amazon Bedrock a un datastore strutturato, devi soddisfare i prerequisiti. Per i requisiti generali di autorizzazione da soddisfare, consulta [Configurazione delle autorizzazioni per un utente o un ruolo per creare e gestire le knowledge base](knowledge-base-prereq-permissions-general.md).

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

Knowledge Base per Amazon Bedrock supporta Amazon Redshift come motore di query per interrogare il tuo datastore. Un motore di query accede ai metadati da un datastore strutturato e li utilizza 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.

## Creazione del motore di query Amazon Redshift
<a name="kb-query-engine-setup-create"></a>

Puoi utilizzare Amazon Redshift serverless o Amazon Redshift con provisioning in base al caso d’uso e connetterti a gruppi di lavoro o a 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, attieniti ai seguenti passaggi per configurare il tuo motore di query Amazon Redshift con provisioning o Amazon Redshift serverless:

**Come configurare un motore di query in Amazon Redshift con provisioning**

1. Segui la procedura riportata in [Fase 1: Creazione di un cluster Amazon Redshift di esempio](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html#rs-gsg-launch-sample-cluster) nella Guida alle operazioni di base di Amazon Redshift.

1. Annota l’ID cluster.

1. (Opzionale) Per ulteriori informazioni riguardanti snapshot cluster Amazon Redshift allocati, consulta [Cluster Amazon Redshift allocati](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html) nella Guida alla gestione di Amazon Redshift.

**Come configurare un motore di query in Amazon Redshift serverless**

1. Segui solo la procedura di configurazione descritta in [Creazione di un data warehouse con Amazon Redshift serverless](https://docs.aws.amazon.com/redshift/latest/gsg/new-user-serverless.html#serverless-console-resource-creation) nella Guida alle operazioni di base di Amazon Redshift e configuralo con le impostazioni predefinite.

1. Nota l’ARN del gruppo di lavoro.

1. (Opzionale) Per ulteriori informazioni sui gruppi di lavoro Amazon Redshift serverless, consulta [Gruppi di lavoro e namespace](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-workgroup-namespace.html) nella Guida alla gestione di Amazon Redshift.

## Configurazione delle autorizzazioni del motore di query Amazon Redshift
<a name="kb-query-engine-setup-redshift-permissions"></a>

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 con provisioning | Amazon Redshift Serverless | 
| --- | --- | --- | 
| IAM | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/images/icons/icon-yes.png)Sì | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/images/icons/icon-yes.png)Sì | 
| Nome utente database | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/images/icons/icon-yes.png)Sì | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/images/icons/icon-no.png)No | 
| Gestione dei segreti AWS | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/images/icons/icon-yes.png)Sì | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/images/icons/icon-yes.png)Sì | 

Knowledge Base per Amazon Bedrock utilizza un [ruolo di servizio](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) per connettere le knowledge base ai datastore strutturati, recuperare dati da questi datastore e generare query SQL in base alle query degli utenti e alla struttura dei datastore.

**Nota**  
Se prevedi di utilizzare il per Console di gestione AWS creare una knowledge base, puoi ignorare questo prerequisito. La console crea un ruolo di servizio di Knowledge Base per Amazon Bedrock con le autorizzazioni appropriate.

Per creare un ruolo di servizio IAM personalizzato con le autorizzazioni appropriate, segui i passaggi in [Creazione di un ruolo per delegare le autorizzazioni a un Servizio AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) e allegare la relazione di attendibilità definita in [Relazione di attendibilità](kb-permissions.md#kb-permissions-trust).

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

### Il tuo motore di query è Amazon Redshift con provisioning
<a name="w2aac28c10c27c13c11c15b1"></a>

Allega la seguente policy al ruolo di servizio personalizzato affinché tale ruolo possa accedere ai tuoi dati e generare query utilizzandoli:

------
#### [ JSON ]

****  

```
{
    "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:us-east-1:123456789012: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 eseguire l’autenticazione al motore di query. Espandi una sezione per visualizzare le autorizzazioni per quel metodo.

------
#### [ IAM ]

Per consentire al tuo ruolo di servizio di eseguire l’autenticazione al motore di query Amazon Redshift con provisioning con IAM, associa la seguente policy al ruolo di servizio personalizzato:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetCredentialsWithFederatedIAMCredentials",
            "Effect": "Allow",
            "Action": "redshift:GetClusterCredentialsWithIAM",
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:dbname:Cluster/database"
            ]
        }
    ]
}
```

------

------
#### [ Database user ]

Per eseguire l’autenticazione come un utente del database Amazon Redshift, allega la seguente policy al ruolo di servizio:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetCredentialsWithClusterCredentials",
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials"
            ],
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:dbuser:${cluster}/${dbuser}",
                "arn:aws:redshift:us-east-1:123456789012:dbname:${cluster}/${database}"
            ]
        }
    ]
}
```

------

------
#### [ Gestione dei segreti AWS ]

Per consentire al tuo ruolo di servizio di autenticarsi sul motore di query fornito da Amazon Redshift con Gestione dei segreti AWS un segreto, procedi come segue:
+ Allega al ruolo la policy seguente:

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

------

### Il tuo motore di query è Amazon Redshift serverless
<a name="w2aac28c10c27c13c11c15b3"></a>

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 eseguire l’autenticazione al motore di query Amazon Redshift serverless con IAM, associa la seguente policy al ruolo di servizio personalizzato:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RedshiftServerlessGetCredentials",
            "Effect": "Allow",
            "Action": "redshift-serverless:GetCredentials",
            "Resource": [
                "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/WorkgroupId"
            ]
        }
    ]
}
```

------

------
#### [ Gestione dei segreti AWS ]

Per consentire al tuo ruolo di servizio di autenticarsi sul motore di query fornito da Amazon Redshift con Gestione dei segreti AWS un segreto, procedi come segue:
+ Allega al ruolo la policy seguente:

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

------

## Consenti al ruolo di servizio della knowledge base di accedere al tuo datastore
<a name="knowledge-base-prereq-structured-db-access"></a>

Assicurati che i tuoi dati siano archiviati in uno dei seguenti [datastore strutturati supportati](knowledge-base-structured-create.md):
+ 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 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/images/icons/icon-yes.png)Sì | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/images/icons/icon-yes.png)Sì | 
| Nome utente database | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/images/icons/icon-yes.png)Sì | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/images/icons/icon-no.png)No | 
| Gestione dei segreti AWS | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/images/icons/icon-yes.png)Sì | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/images/icons/icon-no.png)No | 

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

### Amazon Redshift
<a name="w2aac28c10c27c13c13c13b1"></a>

Per concedere al ruolo di servizio di Knowledge Base per Amazon Bedrock l’accesso al tuo database Amazon Redshift, utilizza [Amazon Redshift Query Editor v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2.html) ed esegui questi 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](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_USER.html) del database e consentirgli di autenticarsi tramite IAM, sostituendolo *\$1\$1service-role\$1* 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 di Knowledge Base per Amazon Bedrock creato per te nella console e poi [sincronizzi il tuo datastore](kb-data-source-structured-sync-ingest.md) prima di eseguire questa fase, l’utente viene creato, ma la sincronizzazione ha esito negativo perché all’utente non sono state concesse le autorizzazioni per accedere al tuo datastore. Prima della sincronizzazione, devi completare la fase seguente.

1. Concedi a un’identità le autorizzazioni per recuperare informazioni dal tuo database eseguendo il comando [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html).

------
#### [ IAM ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "IAMR:${serviceRole}";
   ```

------
#### [ Database user ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${dbUser}";
   ```

------
#### [ Gestione dei segreti AWS username ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${secretsUsername}";
   ```

------
**Importante**  
Non concedere un accesso `CREATE`, `UPDATE` o `DELETE`. 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:. *\$1\$1schemaName\$1* *\$1\$1tableName\$1* Per ulteriori informazioni su questa notazione, consulta la sezione **Oggetti di query** in [Query tra database](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html).

------
#### [ IAM ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "IAMR:${serviceRole}";
   ```

------
#### [ Database user ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "${dbUser}";
   ```

------
#### [ Gestione dei segreti AWS username ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "${secretsUsername}";
   ```

------

1. Se hai creato un nuovo schema nel database Redshift, esegui il comando seguente per concedere a un’identità le autorizzazioni per il nuovo schema.

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

### AWS Glue Data Catalog
<a name="w2aac28c10c27c13c13c13b3"></a>

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](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2.html) v2 ed esegui i seguenti comandi SQL:

1. Esegui il comando seguente, che utilizza [CREATE USER](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_USER.html) per creare un utente del database e consentirgli l'autenticazione tramite IAM, sostituendolo *\$1\$1service-role\$1* 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 di Knowledge Base per Amazon Bedrock creato per te nella console e poi [sincronizzi il tuo datastore](kb-data-source-structured-sync-ingest.md) prima di eseguire questa fase, l’utente viene creato, ma la sincronizzazione ha esito negativo perché all’utente non sono state concesse le autorizzazioni per accedere al tuo datastore. Prima della sincronizzazione, devi completare la fase seguente.

1. Concedi a un ruolo di servizio le autorizzazioni per recuperare informazioni dal tuo database eseguendo il comando [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html).

   ```
   GRANT USAGE ON DATABASE awsdatacatalog TO "IAMR:${serviceRole}";
   ```
**Importante**  
Non concedere un accesso `CREATE`, `UPDATE` o `DELETE`. La concessione di queste azioni può comportare una modifica involontaria dei dati.

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

------
#### [ JSON ]

****  

   ```
   {
       "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:us-east-1:123456789012:table/${DatabaseName}/${TableName}",
                   "arn:aws:glue:us-east-1:123456789012:database/${DatabaseName}",
                   "arn:aws:glue:us-east-1:123456789012:catalog"
               ]
           }
       ]
   }
   ```

------

1. 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](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-source.html)) procedendo come segue:

   1. Accedi a Console di gestione AWS, e apri la console Lake Formation all'indirizzo [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

   1. Seleziona **Autorizzazioni dati** nel riquadro di navigazione a sinistra.

   1. Concedi le autorizzazioni per il ruolo di servizio che utilizzi per Knowledge Base per Amazon Bedrock.

   1. Concedi le autorizzazioni **Describe** e **Select** per i tuoi database e tabelle.

1. A seconda dell'origine dati utilizzata AWS Glue Data Catalog, potrebbe essere necessario aggiungere le autorizzazioni per accedere a tale fonte di dati (per ulteriori informazioni, consulta la sezione [AWS Glue Dipendenza da altro Servizi AWS](https://docs.aws.amazon.com/glue/latest/dg/dependency-on-other-services.html)). Ad esempio, se la tua origine dati si trova in una ubicazione Amazon S3, devi aggiungere la seguente dichiarazione alla policy di cui sopra.

   ```
   {
       "Sid": "Statement1",
       "Effect": "Allow",
       "Action": [
           "s3:ListBucket",
           "s3:GetObject"
       ],
       "Resource": [
           "arn:aws:s3:::${BucketName}",
           "arn:aws:s3:::${BucketName}/*"
       ]
   }
   ```

1. (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"
   }
   ```