Autenticazione con l'integrazione di Amazon Redshift per Apache Spark - Amazon EMR

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

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 con autenticazione. JDBC IAM

Utilizzalo AWS Secrets Manager per recuperare le credenziali e connetterti ad Amazon Redshift

Puoi archiviare le credenziali in Secrets Manager per autenticarti in modo sicuro su Amazon Redshift. Puoi fare in modo che il tuo job Spark chiami GetSecretValue API 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

Usa l'autenticazione IAM basata EMR su Amazon sul ruolo EKS di esecuzione del lavoro

A partire da EMR Amazon nella EKS versione 6.9.0, il driver Amazon JDBC Redshift versione 2.1 o successiva viene integrato nell'ambiente. Con JDBC il driver 2.1 e versioni successive, puoi specificare JDBC URL e non includere il nome utente e la password non elaborati. È invece possibile specificare uno schema jdbc:redshift:iam://. Questo ordina al JDBC driver di utilizzare il tuo ruolo Amazon EMR on EKS Job Execution per recuperare automaticamente le credenziali.

Per ulteriori informazioni, consulta Configurare una ODBC connessione JDBC or per utilizzare IAM le credenziali nella Amazon Redshift Management Guide.

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

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 Richiesto al JDBC conducente per recuperare le credenziali da Amazon Redshift
redshift:DescribeCluster Obbligatorio se si specifica il cluster Amazon Redshift e JDBC URL al Regione AWS posto dell'endpoint
redshift-serverless:GetCredentials Richiesto al JDBC driver per recuperare le credenziali da Amazon Redshift Serverless
redshift-serverless:GetWorkgroup Obbligatorio se utilizzi Amazon Redshift Serverless e specifichi il nome del gruppo URL di lavoro e la 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" ] }

Effettua l'autenticazione su Amazon Redshift con un driver JDBC

Imposta nome utente e password all'interno di JDBC URL

Per autenticare un job Spark in un cluster Amazon Redshift, puoi specificare il nome e la password del database Amazon Redshift nel. JDBC URL

Nota

Se trasmetti le credenziali del database inURL, chiunque abbia accesso al database URL può accedere anche alle credenziali. Questo metodo non è generalmente consigliato perché non è un'opzione sicura.

Se la sicurezza non è un problema per la vostra applicazione, potete utilizzare il seguente formato per impostare il nome utente e la password in: JDBC URL

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