Authentifizierung mit der Amazon-Redshift-Integration für Apache Spark - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Authentifizierung mit der Amazon-Redshift-Integration für Apache Spark

In den folgenden Abschnitten werden Authentifizierungsoptionen mit Amazon Redshift bei der Integration mit Apache Spark beschrieben. In den Abschnitten wird gezeigt, wie Sie Anmeldeinformationen abrufen können, sowie Einzelheiten zur Verwendung des JDBC Treibers mit IAM Authentifizierung.

Wird verwendet AWS Secrets Manager , um Anmeldeinformationen abzurufen und eine Verbindung zu Amazon Redshift herzustellen

Sie können Anmeldeinformationen in Secrets Manager speichern, um sich sicher bei Amazon Redshift zu authentifizieren. Sie können Ihren Spark-Job den aufrufen lassen GetSecretValueAPI, um die Anmeldeinformationen abzurufen:

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

Verwenden Sie die IAM basierte Authentifizierung mit Amazon EMR auf der EKS Jobausführungsrolle

Ab EKS Version 6.9.0 von EMR Amazon ist der Amazon Redshift JDBC Redshift-Treiber Version 2.1 oder höher in der Umgebung enthalten. Bei JDBC Treiber 2.1 und höher können Sie den unformatierten Benutzernamen JDBC URL und das Passwort angeben und nicht angeben. Stattdessen können Sie ein jdbc:redshift:iam://-Schema angeben. Dadurch wird der JDBC Treiber angewiesen, Ihre Amazon EMR on EKS Job Execution-Rolle zu verwenden, um die Anmeldeinformationen automatisch abzurufen.

Weitere Informationen finden Sie unter Konfiguration einer JDBC ODBC OR-Verbindung für die Verwendung von IAM Anmeldeinformationen im Amazon Redshift Management Guide.

Das folgende Beispiel URL verwendet ein jdbc:redshift:iam:// Schema.

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

Die folgenden Berechtigungen sind für Ihre Auftragsausführungsrolle erforderlich, wenn sie die angegebenen Bedingungen erfüllt.

Berechtigung Bedingungen, sofern sie für die Rolle Auftragsausführung erforderlich sind
redshift:GetClusterCredentials Erforderlich, damit der JDBC Treiber die Anmeldeinformationen von Amazon Redshift abrufen kann
redshift:DescribeCluster Erforderlich, wenn Sie den Amazon Redshift Redshift-Cluster und AWS-Region im Endpunkt „JDBCURLinstead of“ angeben
redshift-serverless:GetCredentials Erforderlich, damit der JDBC Treiber die Anmeldeinformationen von Amazon Redshift Serverless abrufen kann
redshift-serverless:GetWorkgroup Erforderlich, wenn Sie Amazon Redshift Serverless verwenden und den Namen URL der Arbeitsgruppe und die Region angeben

Ihre Auftragsausführungsrollenrichtlinie sollte über die folgenden Berechtigungen verfügen.

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

Authentifizieren Sie sich mit einem Treiber bei Amazon Redshift JDBC

Geben Sie den Benutzernamen und das Passwort im JDBC URL

Um einen Spark-Job bei einem Amazon Redshift-Cluster zu authentifizieren, können Sie den Namen und das Passwort der Amazon Redshift Redshift-Datenbank in der angeben. JDBC URL

Anmerkung

Wenn Sie die Datenbankanmeldedaten in übergeben, URL kann jederURL, der Zugriff auf die hat, auch auf die Anmeldeinformationen zugreifen. Diese Methode wird im Allgemeinen nicht empfohlen, da sie keine sichere Option ist.

Wenn die Sicherheit Ihrer Anwendung kein Problem darstellt, können Sie das folgende Format verwenden, um den Benutzernamen und das Passwort in der Datei festzulegen JDBCURL:

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