

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

# Autenticazione con l'integrazione di Amazon Redshift per Apache Spark
<a name="emr-spark-redshift-auth"></a>

Le seguenti sezioni mostrano le opzioni di autenticazione con Amazon Redshift durante l'integrazione con Apache Spark. Le sezioni mostrano come recuperare le credenziali di accesso e anche dettagli sull'utilizzo del driver JDBC con l'autenticazione IAM.

## Utilizzalo Gestione dei segreti AWS per recuperare le credenziali e connetterti ad Amazon Redshift
<a name="emr-spark-redshift-secrets"></a>

Puoi archiviare le credenziali in Secrets Manager per autenticarti in modo sicuro su Amazon Redshift. Puoi fare in modo che il processo Spark chiami l'API `GetSecretValue` per recuperare le credenziali:

```
from pyspark.sql import SQLContextimport boto3

sc = # existing SparkContext
sql_context = SQLContext(sc)

secretsmanager_client = boto3.client('secretsmanager', region_name=os.getenv('AWS_REGION'))
secret_manager_response = secretsmanager_client.get_secret_value(
    SecretId='string',
    VersionId='string',
    VersionStage='string'
)
username = # get username from secret_manager_response
password = # get password from secret_manager_response
url = "jdbc:redshift://redshifthost:5439/database?user=" + username + "&password=" + password

# Access to Redshift cluster using Spark
```

## Utilizzo dell'autenticazione basata su IAM con il ruolo di esecuzione di processo Amazon EMR su EKS
<a name="emr-spark-redshift-iam"></a>

A partire da Amazon EMR su EKS rilascio 6.9.0, il driver Amazon Redshift JDBC versione 2.1 o superiore è integrato nell'ambiente. Con il driver JDBC 2.1 e versioni successive, è possibile specificare l'URL di JDBC evitando di includere il nome utente e la password non elaborati. È invece possibile specificare uno schema `jdbc:redshift:iam://`. Ciò istruisce il driver JDBC di utilizzare il tuo ruolo di esecuzione di processo Amazon EMR su EKS per il recupero automatico delle credenziali.

Per ulteriori informazioni, consulta la sezione [Configure a JDBC or ODBC connection to use IAM credentials](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-iam-credentials-configure-jdbc-odbc.html) (Configurazione di una connessione JDBC oppure ODBC per l'utilizzo delle credenziali IAM) nella *Guida alla gestione di Amazon Redshift*.

L'URL di esempio seguente utilizza uno schema `jdbc:redshift:iam://`.

```
jdbc:redshift:iam://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev
```

Le autorizzazioni seguenti sono necessarie per il ruolo di esecuzione di processo quando soddisfa le condizioni richieste.


| Autorizzazione | Condizioni richieste per il ruolo di esecuzione di processo | 
| --- | --- | 
|  redshift:GetClusterCredentials  | Obbligatoria affinché il driver JDBC recuperi le credenziali da Amazon Redshift | 
|  redshift:DescribeCluster  | Obbligatoria se specifichi il cluster Amazon Redshift e Regione AWS nell'URL di JDBC anziché nell'endpoint | 
|  redshift-serverless:GetCredentials  | Obbligatoria affinché il driver JDBC recuperi le credenziali da Amazon Redshift Serverless | 
|  redshift-serverless:GetWorkgroup  | Obbligatoria se utilizzi Amazon Redshift Serverless e specifichi l'URL in termini di nome del gruppo di lavoro e Regione | 

La policy relativa al ruolo di esecuzione di processo dovrebbe disporre delle seguenti autorizzazioni.

```
{
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials",
                "redshift:DescribeCluster",
                "redshift-serverless:GetCredentials",
                "redshift-serverless:GetWorkgroup"
            ],
            "Resource": [
                "arn:aws:redshift:AWS_REGION:ACCOUNT_ID:dbname:CLUSTER_NAME/DATABASE_NAME",
                "arn:aws:redshift:AWS_REGION:ACCOUNT_ID:dbuser:DATABASE_NAME/USER_NAME"
            ]
        }
```

## Autenticazione su Amazon Redshift con un driver JDBC
<a name="emr-spark-redshift-jdbc"></a>

**Impostazione di nome utente e password all'interno dell'URL di JDBC**

Per autenticare un processo Spark su un cluster Amazon Redshift, è possibile specificare il nome e la password del database Amazon Redshift nell'URL di JDBC. 

**Nota**  
Se passi le credenziali del database nell'URL, anche chiunque abbia accesso all'URL può accedere alle credenziali. Questo metodo non è generalmente consigliato perché non è un'opzione sicura.

Se la sicurezza non è un problema per la tua applicazione, puoi utilizzare il formato seguente per impostare il nome utente e la password nell'URL di JDBC:

```
jdbc:redshift://redshifthost:5439/database?user=username&password=password
```