

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
<a name="emr-spark-redshift-auth"></a>

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
<a name="emr-spark-redshift-secrets"></a>

Sie können Anmeldeinformationen in Secrets Manager speichern, um sich sicher bei Amazon Redshift zu authentifizieren. Sie können Ihren Spark-Auftrag die `GetSecretValue`-API aufrufen lassen, 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 in der EKS-Auftragsausführungsrolle
<a name="emr-spark-redshift-iam"></a>

Ab Amazon EMR in EKS-Version 6.9.0 ist der Amazon-Redshift-JDBC-Treiber Version 2.1 oder höher in der Umgebung enthalten. Mit dem JDBC-Treiber 2.1 und höher können Sie die JDBC-URL angeben, ohne den unformatierten Benutzernamen und das Passwort anzugeben. Stattdessen können Sie ein `jdbc:redshift:iam://`-Schema angeben. Dadurch wird der JDBC-Treiber angewiesen, Ihre Amazon EMR in EKS-Auftragsausführungsrolle zu verwenden, um die Anmeldeinformationen automatisch abzurufen.

Weitere Informationen finden Sie unter [Konfigurieren Sie eine JDBC- oder ODBC-Verbindung für die Verwendung von IAM-Anmeldeinformationen](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-iam-credentials-configure-jdbc-odbc.html) im *Amazon-Redshift-Verwaltungshandbuch*.

Die 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-Cluster und AWS-Region in der JDBC-URL anstelle des Endpunkts 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 die URL in Form von Arbeitsgruppenname und 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}}"
            ]
        }
```

## Authentifizierung bei Amazon Redshift mit einem JDBC-Treiber
<a name="emr-spark-redshift-jdbc"></a>

**Geben Sie den Benutzernamen und das Passwort in der JDBC-URL ein**

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

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

Wenn Sicherheit für Ihre Anwendung kein Problem darstellt, können Sie das folgende Format verwenden, um den Benutzernamen und das Passwort in der JDBC-URL festzulegen:

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