Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Authentification avec l'intégration Amazon Redshift pour Apache Spark
Les sections suivantes présentent les options d'authentification avec Amazon Redshift lors de l'intégration à Apache Spark. Les sections montrent comment récupérer les informations de connexion ainsi que les détails concernant l'utilisation du pilote JDBC avec l'authentification IAM.
AWS Secrets Manager À utiliser pour récupérer les informations d'identification et se connecter à Amazon Redshift
Vous pouvez stocker les informations d'identification dans Secrets Manager pour vous authentifier en toute sécurité dans Amazon Redshift. Vous pouvez demander à votre tâche Spark d'appeler l'API GetSecretValue
pour récupérer les informations d'identification :
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
Utilisation de l'authentification basée sur IAM avec le rôle d'exécution des tâches Amazon EMR on EKS
À partir de la version 6.9.0 d'Amazon EMR on EKS, le pilote JDBC Amazon Redshift en version 2.1 ou supérieure est intégré à l'environnement. Avec le pilote JDBC en version 2.1 et supérieure, vous pouvez spécifier l'URL JDBC et ne pas inclure le nom d'utilisateur et le mot de passe bruts. Au lieu de cela, vous pouvez indiquer un schéma jdbc:redshift:iam://
. Cela commande au pilote JDBC d'utiliser votre rôle d'exécution de tâche Amazon EMR on EKS pour récupérer automatiquement les informations d'identification.
Pour plus d'informations, consultez la rubrique Configuration d'une connexion JDBC ou ODBC pour utiliser les informations d'identification IAM dans le Guide de gestion Amazon Redshift.
L'exemple d'URL suivant utilise un schéma jdbc:redshift:iam://
.
jdbc:redshift:iam://
examplecluster.abc123xyz789
.us-west-2
.redshift.amazonaws.com:5439/dev
Les autorisations suivantes sont requises pour votre rôle d'exécution des tâches lorsqu'il remplit les conditions prévues.
Autorisations | Conditions requises pour le rôle d'exécution des tâches |
---|---|
redshift:GetClusterCredentials
|
Requis pour que le pilote JDBC récupère les informations d'identification à partir d'Amazon Redshift |
redshift:DescribeCluster
|
Requis si vous indiquez le cluster Amazon Redshift et la Région AWS dans l'URL JDBC au lieu du point de terminaison |
redshift-serverless:GetCredentials
|
Requis pour que le pilote JDBC récupère les informations d'identification à partir d'Amazon Redshift sans serveur |
redshift-serverless:GetWorkgroup
|
Requis si vous utilisez Amazon Redshift sans serveur et que vous indiquez l'URL pour le nom et la région du groupe de travail |
Votre politique de rôle d'exécution des tâches doit disposer des autorisations ci-dessous.
{ "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
" ] }
Authentification dans Amazon Redshift à l'aide d'un pilote JDBC
Définition du nom d'utilisateur et du mot de passe dans l'URL JDBC
Pour authentifier une tâche Spark dans un cluster Amazon Redshift, vous pouvez indiquer le nom et le mot de passe de la base de données Amazon Redshift dans l'URL JDBC.
Note
Si vous transmettez les informations d'identification de la base de données dans l'URL, toute personne ayant accès à l'URL peut également accéder aux informations d'identification. Cette méthode n'est généralement pas recommandée, car elle n'est pas une option sécurisée.
Si la sécurité n'est pas une préoccupation pour votre application, vous pouvez utiliser le format suivant pour définir le nom d'utilisateur et le mot de passe dans l'URL JDBC :
jdbc:redshift://redshifthost:5439/database?user=
username
&password=password