

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.

# LDAP-Authentifizierung für Presto in Amazon EMR verwenden
<a name="emr-presto-ldap"></a>

Befolgen Sie zum Konfigurieren von LDAP die Schritte in diesem Abschnitt. Beachten Sie die einzelnen Schritte sowie die Beispiele und Links mit weiterführenden Informationen.

**Topics**
+ [Schritt 1: Informationen zum LDAP-Server erfassen und Serverzertifikat zu Amazon S3 kopieren](#emr-presto-ldap-server-prereq)
+ [Schritt 2: Sicherheitskonfiguration einrichten](#emr-presto-ldap-seccfg)
+ [Schritt 3: JSON-Konfigurationsobjekt mit Presto-Eigenschaften für LDAP erstellen](#emr-presto-ldap-prestoconfig)
+ [Schritt 4: Skript zum Kopieren des LDAP-Serverzertifikats erstellen und nach Amazon S3 hochladen](#emr-presto-ldap-servercert)
+ [Schritt 5: Cluster erstellen](#emr-presto-ldap-createcluster)

## Schritt 1: Informationen zum LDAP-Server erfassen und Serverzertifikat zu Amazon S3 kopieren
<a name="emr-presto-ldap-server-prereq"></a>

Sie benötigen die im folgenden Abschnitt angegebenen Informationen und Elemente vom LDAP-Server zum Konfigurieren der LDAP-Authentifizierung.

### Die IP-Adresse oder der Host-Name des LDAP-Servers
<a name="w2aac60c39c13b7b5"></a>

Der Presto-Koordinator auf dem Amazon-EMR-Hauptknoten muss den LDAP-Server an der angegebenen IP-Adresse oder unter dem angegebenen Host-Namen erreichen können. Standardmäßig kommuniziert Presto mit dem LDAP-Server unter Verwendung von LDAPS über Port 636. Wenn Ihre LDAP-Implementierung einen benutzerdefinierten Port benötigt, können Sie diesen bei Verwendung von Amazon EMR ab Version 5.16.0 mit der Eigenschaft `ldap.url` angeben. Verwenden Sie `authentication.ldap.url` bei früheren Versionen. Ersetzen Sie `636` durch den benutzerdefinierten Port, wie in den `presto-config`-Konfigurationsklassifizierungsbeispielen unter [Schritt 3: JSON-Konfigurationsobjekt mit Presto-Eigenschaften für LDAP erstellen](#emr-presto-ldap-prestoconfig) gezeigt. Stellen Sie sicher, dass alle Firewalls und Sicherheitsgruppen ein- und ausgehenden Datenverkehr über Port 636 (oder den benutzerdefinierten Port) und zudem Port 8446 (oder den benutzerdefinierten Port), der für die interne Clusterkommunikation verwendet wird, zulassen.

### Das LDAP-Serverzertifikat
<a name="w2aac60c39c13b7b7"></a>

Sie müssen die Zertifikatsdatei in einen sicheren Speicherort in Amazon S3 hochladen. Weitere Informationen finden Sie unter [Wie lade ich Dateien und Ordner in einen S3 Bucket hoch?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) im *Benutzerhandbuch für Amazon Simple Storage Service*. Sie erstellen eine Bootstrap-Aktion, die dieses Zertifikat aus Amazon S3 auf jeden Knoten im Cluster kopiert, wenn der Cluster gestartet wird. Wählen Sie unter [Schritt 4: Skript zum Kopieren des LDAP-Serverzertifikats erstellen und nach Amazon S3 hochladen](#emr-presto-ldap-servercert). Das Beispielzertifikat ist. *s3://amzn-s3-demo-bucket/ldap\$1server.crt*

### Die LDAP-Servereinstellungen für anonyme Bindung
<a name="w2aac60c39c13b7b9"></a>

Wenn die anonyme Bindung auf PrestoDB deaktiviert ist, benötigen Sie die Benutzer-ID (UID) und das Passwort eines Kontos mit Berechtigungen, die Bindung an den LDAP-Server herzustellen, damit der PrestoDB-Server eine Verbindung herstellen kann. Sie geben die UID und das Passwort mit den Eigenschaften `internal-communication.authentication.ldap.user` und `internal-communication.authentication.ldap.password` in der Konfigurationsklassifizierung `presto-config` an. Amazon EMR 5.10.0 unterstützt diese Einstellungen nicht, sodass die anonyme Bindung auf dem LDAP-Server unterstützt werden muss, wenn Sie diese Version verwenden.

Beachten Sie, dass Trino die Konfiguration der anonymen Bindung nicht benötigt.

**So rufen Sie den Status der anonymen Bindung auf dem LDAP-Server ab**
+ Verwenden Sie von einem Linux-Client aus den Befehl [ldapwhoami](https://linux.die.net/man/1/ldapwhoami), wie im folgenden Beispiel gezeigt:

  ```
  ldapwhoami -x -H ldaps://LDAPServerHostNameOrIPAddress
  ```

  Wenn die anonyme Bindung nicht zulässig ist, gibt der Befehl Folgendes zurück:

  ```
  ldap_bind: Inappropriate authentication (48)
  additional info: anonymous bind disallowed
  ```

**So verifizieren Sie, dass ein Konto über die Berechtigungen für einen LDAP-Server verfügt, der die einfache Authentifizierung verwendet**
+ Verwenden Sie von einem Linux-Client aus den Befehl [ldapwhoami](https://linux.die.net/man/1/ldapwhoami), wie im folgenden Beispiel gezeigt. Das Beispiel verwendet einen fiktiven Benutzer, der auf einem Open LDAP-Server gespeichert ist*presto*, der auf einer EC2-Instance mit dem fiktiven Hostnamen läuft. *ip-xxx-xxx-xxx-xxx.ec2.internal* Der Benutzer ist der Organisationseinheit (OU) und dem Passwort zugeordnet: *admins* *123456*

  ```
  ldapwhoami -x -w "123456" -D uid=presto,ou=admins,dc=ec2,dc=internal -H ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal 
  ```

  Wenn das Konto gültig ist und über die erforderlichen Berechtigungen verfügt, gibt der Befehl Folgendes zurück:

  ```
  dn:uid=presto,ou=admins,dc=ec2,dc=internal
  ```

Die Beispielkonfigurationen unter [Schritt 3: JSON-Konfigurationsobjekt mit Presto-Eigenschaften für LDAP erstellen](#emr-presto-ldap-prestoconfig) enthalten dieses Konto, um die Verständlichkeit zu verbessern. Ausgenommen ist das 5.10.0-Beispiel, weil es hier nicht unterstützt wird. Wenn der LDAP-Server anonyme Bindungen verwendet, entfernen Sie die `internal-communication.authentication.ldap.password` name/value Paare `internal-communication.authentication.ldap.user` und.

### Der eindeutige LDAP-Name (DN) für Presto-Benutzer
<a name="w2aac60c39c13b7c11"></a>

Wenn Sie die LDAP-Konfiguration für Presto angeben, geben Sie ein Bindungsmuster an, das aus einer `${USER}` Organisationseinheit (OU) und zusätzlichen Domänenkomponenten () besteht. DCs Presto ersetzt `${USER}` im Rahmen der Passwort-Authentifizierung durch die tatsächliche Benutzer-ID (UID) jedes Benutzers, damit der Wert dem eindeutigen Namen (DN) entspricht, den dieses Bindungsmuster angibt. Sie benötigen die Mitglieder und deren Mitglieder OUs , zu denen die berechtigten Benutzer gehören. DCs Um Benutzern aus der `admins`-OU in der `corp.example.com`-Domain zu gestatten, sich bei Presto zu authentifizieren, geben Sie `${USER},ou=admins,dc=corp,dc=example,dc=com` als Benutzerbindungsmuster an.

**Anmerkung**  
Wenn Sie verwenden AWS CloudFormation, müssen Sie die Funktion Fn: :Sub verwenden, um sie durch die tatsächliche Benutzer-ID (UID) zu `${USER}` ersetzen. Weitere Informationen finden Sie im Thema [Fn::Sub](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html) im *AWS CloudFormation -Benutzerhandbuch*.

Bei Verwendung von Amazon EMR 5.10.0, können Sie nur ein solches Muster angeben. Bei Verwendung von Amazon EMR ab 5.11.0 oder höher können Sie mehrere Muster angeben, die durch einen Doppelpunkt (:) voneinander getrennt werden. Benutzer, die sich bei Presto zu authentifizieren versuchen, werden mit den ersten Muster verglichen, dann mit dem zweiten usw. Ein Beispiel finden Sie unter [Schritt 3: JSON-Konfigurationsobjekt mit Presto-Eigenschaften für LDAP erstellen](#emr-presto-ldap-prestoconfig).

## Schritt 2: Sicherheitskonfiguration einrichten
<a name="emr-presto-ldap-seccfg"></a>

Erstellen Sie eine Sicherheitskonfiguration mit aktivierter Datenverschlüsselung während der Übertragung. Weitere Informationen finden Sie unter [Erstellen einer Sicherheitskonfiguration](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-create-security-configuration.html) im *Verwaltungshandbuch für Amazon EMR*. Die Verschlüsselungsartefakte, die Sie bereitstellen, wenn Sie die Verschlüsselung der Daten während der Übertragung einrichten, werden zum Verschlüsseln der internen Kommunikation zwischen Presto-Knoten verwendet. Weitere Informationen finden Sie unter [Bereitstellen von Zertifikaten für die Datenverschlüsselung während der Übertragung](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-encryption-certificates). Das LDAP-Serverzertifikat wird verwendet, um Client-Verbindungen zum Presto-Server zu authentifizieren.

## Schritt 3: JSON-Konfigurationsobjekt mit Presto-Eigenschaften für LDAP erstellen
<a name="emr-presto-ldap-prestoconfig"></a>

Sie verwenden die Konfigurationsklassifizierung `presto-config` zum Festlegen von Presto-Eigenschaften für LDAP. Das Format und der Inhalt von `presto-config` unterscheiden sich je nach der Amazon-EMR-Release-Version und der Presto-Installation (PrestoDB oder Trino) geringfügig. Beispiele für Konfigurationsunterschiede finden Sie unten in diesem Abschnitt. Weitere Informationen finden Sie unter [Anwendungen konfigurieren](emr-configure-apps.md).

Bei den folgenden Schritten wird davon ausgegangen, dass Sie die JSON-Daten in einer Datei speichern. *MyPrestoConfig.json* Wenn Sie die Konsole verwenden, laden Sie die Datei in einen sicheren Speicherort in Amazon S3 hoch, damit Sie beim Erstellen des Clusters darauf verweisen können. Wenn Sie die verwenden AWS CLI, können Sie lokal auf die Datei verweisen.

**Example Amazon EMR 6.1.0 und höher mit PrestoSQL (Trino)**  
Das folgende Beispiel verwendet die LDAP und das Host-Namen aus [Schritt 1: Informationen zum LDAP-Server erfassen und Serverzertifikat zu Amazon S3 kopieren](#emr-presto-ldap-server-prereq), um den LDAP-Server für die Bindung zu authentifizieren. Zwei Benutzerbindungsmuster werden angegeben. Dies bedeutet, dass Benutzer in der OU `admins` und der OU `datascientists` auf dem LDAP-Server für die Authentifizierung als Benutzer gegenüber dem Trino-Server qualifiziert sind. Die Bindungsmuster werden durch einen Doppelpunkt (`:`) voneinander getrennt.  
Amazon-EMR-Versionen 6.4.0 und höher verwenden den neuen Namen Trino anstelle von PrestoSQL. Wenn Sie Trino verwenden, ersetzen Sie die Klassifizierung *`prestosql-config`* in der folgenden Konfiguration durch `trino-config` und `prestosql-password-authenticator` durch `trino-password-authenticator`.  

```
[
   {
      "Classification":"prestosql-config",
      "Properties":{
         "http-server.authentication.type":"PASSWORD"
      }
   },
   {
      "Classification":"prestosql-password-authenticator",
      "Properties":{
         "password-authenticator.name":"ldap",
         "ldap.url":"ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
         "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal"
      }
   }
]
```

**Example Amazon EMR 5.16.0 und höher**  
Das folgende Beispiel verwendet die LDAP-Benutzer-ID und das Passwort sowie den LDAP-Host-Namen aus [Schritt 1: Informationen zum LDAP-Server erfassen und Serverzertifikat zu Amazon S3 kopieren](#emr-presto-ldap-server-prereq), um den LDAP-Server für die Bindung zu authentifizieren. Zwei Benutzerbindungsmuster werden angegeben. Dies bedeutet, dass Benutzer in der OU `admins` und der OU `datascientists` auf dem LDAP-Server für die Authentifizierung als Benutzer gegenüber dem Presto-Server qualifiziert sind. Die Bindungsmuster werden durch einen Doppelpunkt (`:`) voneinander getrennt.  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "PASSWORD"
                }
        },
        {
                "Classification": "presto-password-authenticator",
                "Properties": {
                        "password-authenticator.name": "ldap",
                        "ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
                        "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal",
                        "internal-communication.authentication.ldap.user": "presto",
                        "internal-communication.authentication.ldap.password": "123456"
                }
        }]
```

**Example Amazon EMR 5.11.0 bis 5.15.0**  
Das Format der Konfigurationsklassifizierung `presto-config `unterscheidet sich geringfügig bei diesen Versionen. Das folgende Beispiel gibt dieselben Parameter an, die auch im vorherigen Beispiel verwendet wurden.  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "LDAP",
                        "authentication.ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
                        "authentication.ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal",
                        "internal-communication.authentication.ldap.user": "presto",
                        "internal-communication.authentication.ldap.password": "123456"
                }
        }]
```

**Example Amazon EMR 5.10.0**  
Amazon EMR 5.10.0 unterstützt nur die anonyme Bindung, diese Einträge werden deshalb nicht angegeben. Darüber hinaus kann nur ein Bindungsmuster angegeben werden.  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "LDAP",
                        "authentication.ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
                        "ldap.user-bind-pattern": "uid=${USER},ou=prestousers,dc=ec2,dc=internal"
                }
        }]
```

## Schritt 4: Skript zum Kopieren des LDAP-Serverzertifikats erstellen und nach Amazon S3 hochladen
<a name="emr-presto-ldap-servercert"></a>

Erstellen Sie ein Skript, das die Zertifikatdatei auf jeden Knoten im Cluster kopiert und in den Schlüsselspeicher einfügt. Erstellen Sie das Skript mit einem Texteditor, speichern Sie es und laden Sie es dann zu Amazon S3 hoch. In [Schritt 5: Cluster erstellen](#emr-presto-ldap-createcluster) wird auf die Skriptdatei verwiesen als*s3://amzn-s3-demo-bucket/LoadLDAPCert.sh*.

Das folgende Beispielskript verwendet das Standard-Keystore-Passwort,. *changeit* Wir empfehlen, dass Sie eine Verbindung zum Master-Knoten herstellen, nachdem Sie den Cluster erstellt und das Passwort für den Schlüsselspeicher mit dem Befehl keytool geändert haben.

```
#!/bin/bash
aws s3 cp s3://amzn-s3-demo-bucket/ldap_server.crt .
sudo keytool -import -keystore /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/lib/security/cacerts -trustcacerts -alias ldap_server -file ./ldap_server.crt -storepass changeit -noprompt
```



## Schritt 5: Cluster erstellen
<a name="emr-presto-ldap-createcluster"></a>

Wenn Sie den Cluster erstellen, geben Sie Presto und andere Anwendungen an, die Amazon EMR installieren soll. Die folgenden Beispiele verweisen auch auf die Konfigurationsklassifizierungseigenschaften in einem JSON-Objekt. Sie können die Konfigurationsklassifizierung aber auch im Code angeben.

**So erstellen Sie einen Presto-Cluster mit LDAP-Authentifizierung unter Verwendung der Amazon-EMR-Konsole**

1. Navigieren Sie zur neuen Amazon-EMR-Konsole und wählen Sie in der Seitennavigation die Option **Zur alten Konsole wechseln** aus. Weitere Informationen darüber, was Sie erwartet, wenn Sie zur alten Konsole wechseln, finden Sie unter [Verwenden der alten Konsole](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in).

1. Wählen Sie **Create Cluster (Cluster erstellen)** und **Go to advanced options (Zu erweiterten Optionen)** aus.

1. Wählen Sie **Presto** und andere Anwendungen, die Amazon EMR installieren soll. Wählen Sie unter **Software-Konfiguration** die zu verwendende **Version** von Amazon EMR. Die LDAP-Authentifizierung wird erst ab Amazon EMR 5.10.0 unterstützt.

1. Wählen Sie unter **Software-Einstellungen bearbeiten** die Option **JSON aus S3 laden**, geben Sie den Speicherort der in [Schritt 3: JSON-Konfigurationsobjekt mit Presto-Eigenschaften für LDAP erstellen](#emr-presto-ldap-prestoconfig) erstellten JSON-Konfigurationsdatei in Amazon S3 ein und wählen Sie dann **Weiter**.

1. Konfigurieren Sie die Cluster-Hardware und die Netzwerkfunktionen. Wählen Sie dann **Next (Weiter)**.

1. Wählen Sie **Bootstrap Actions (Bootstrap-Aktionen)**. Wählen Sie für **Add bootstrap action (Bootstrap-Aktion hinzufügen)** die Option **Custom action (Benutzerdefinierte Aktion)** und wählen Sie dann **Configure and add (Konfigurieren und hinzufügen)**.

1. **Geben Sie einen **Namen** für die Bootstrap-Aktion und den **Speicherort für das Skript** ein, in dem Sie das Skript erstellt haben[Schritt 4: Skript zum Kopieren des LDAP-Serverzertifikats erstellen und nach Amazon S3 hochladen](#emr-presto-ldap-servercert), z. B. **s3://amzn-s3-demo-bucket/Load LDAPCert .sh**, und wählen Sie dann Hinzufügen.**

1. Wählen Sie unter **General Options (Allgemeine Optionen)**, **Tags** und **Additional Options (Weitere Optionen)** für die Anwendung geeignete Einstellungen. Klicken Sie dann auf **Next (Weiter)**.

1. Wählen Sie **Authentication and encryption (Authentifizierung und Verschlüsselung)** und dann die **Security configuration (Sicherheitskonfiguration)**, die Sie in [Schritt 2: Sicherheitskonfiguration einrichten](#emr-presto-ldap-seccfg) erstellt haben.

1. Wählen Sie weitere für Ihre Anwendung geeignete Sicherheitsoptionen und wählen Sie dann **Create cluster (Cluster erstellen)**.

**Um einen Presto-Cluster mit LDAP-Authentifizierung zu erstellen, verwenden Sie den AWS CLI**
+ Verwenden Sie den Befehl `aws emr create-cluster`. Geben Sie mindestens die Presto-Anwendung und auch die Presto-Konfigurationsklassifizierung, das Bootstrap-Skript und die Sicherheitskonfiguration an, die Sie in den vorherigen Schritten erstellt haben. Das folgende Beispiel verweist auf die als JSON-Datei gespeicherte Konfigurationsdatei in dem Verzeichnis, in dem der Befehl ausgeführt wird. Das Bootstrap-Skript muss dagegen in Amazon S3 gespeichert werden. Im folgenden Beispiel wird `s3://amzn-s3-demo-bucket/LoadLDAPCert.sh` verwendet.
**Anmerkung**  
Linux-Zeilenfortsetzungszeichen (\$1) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).

  ```
  aws emr create-cluster  --applications Name=presto --release-label emr-5.16.0 \
  --use-default-roles --ec2-attributes KeyName=MyKeyPair,SubnetId=subnet-1234ab5 \ --instance-count 3 --instance-type m5.xlarge --region us-west-2 --name "MyPrestoWithLDAPAuth" \
  --bootstrap-actions Name="Distribute LDAP server cert",Path="s3://amzn-s3-demo-bucket/LoadLDAPCert.sh" \
  --security-configuration MyPrestoLDAPSecCfg --configurations file://MyPrestoConfig.json
  ```