Verwenden der LDAP-Authentifizierung für Presto unter Amazon EMR - 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.

Verwenden der LDAP-Authentifizierung für Presto unter Amazon EMR

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.

Schritt 1: Informationen zum LDAP-Server erfassen und Serverzertifikat nach kopierenAmazon S3

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

Der Presto-Koordinator auf dem Amazon EMR-Master-Knoten 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 ldap.url ab Version 5.16.0 mit der Eigenschaft Amazon EMR angeben. Verwenden Sie bei früheren Versionen authentication.ldap.url 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. 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

Sie müssen die Zertifikatsdatei in einen sicheren Speicherort in hochladen.Amazon S3. Weitere Informationen finden Sie unter Wie lade ich Dateien und Ordner in einen S3-Bucket hoch? im Konsolenbenutzerhandbuch 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. In Schritt 4: Skript zum Kopieren des LDAP-Serverzertifikats erstellen und nach hochladenAmazon S3. Das Beispielzertifikat ist s3://MyBucket/ldap_server.crt.

Die LDAP-Servereinstellungen für anonyme Bindung

Wenn die anonyme Bindung für PrestoDB deaktiviert ist, benötigen Sie die Benutzer-ID (UID) und das Passwort eines Kontos mit Berechtigungen zum Binden an den LDAP-Server, 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 PrestoSQL keine anonyme Bindungskonfiguration erfordert.

So rufen Sie den Status der anonymen Bindung auf dem LDAP-Server ab

  • Verwenden Sie den Befehl ldapwhoami von einem Linux-Client aus, 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 den Befehl ldapwhoami von einem Linux-Client, wie im folgenden Beispiel gezeigt. Das Beispiel verwendet einen fiktiven Benutzer, presto, gespeichert auf einem Open LDAP-Server, der auf einer EC2-Instance mit dem fiktiven Hostnamen ausgeführt wird ip-xxx-xxx-xxx-xxx.ec2.internal. Der Benutzer ist der Organisationseinheit (OU) zugeordnet. admins und mit dem Passwort 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 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 die anonyme Bindung verwendet, entfernen Sie die Name-Wert-Paare internal-communication.authentication.ldap.user und internal-communication.authentication.ldap.password

Der eindeutige LDAP-Name (DN) für Presto-Benutzer

Wenn Sie die LDAP-Konfiguration für Presto angeben, geben Sie ein Bindungsmuster an, das aus ${USER} und einer Organisationseinheit (OU) sowie zusätzlichen Domänenkomponenten (DCs) besteht. 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 OUs, zu denen qualifizierte Benutzer gehören, sowie deren DCs. Um Benutzern aus der OU admins in der Domäne corp.example.com zu gestatten, sich bei Presto zu authentifizieren, geben Sie ${USER},ou=admins,dc=corp,dc=example,dc=com als Benutzerbindungsmuster an.

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 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.

Schritt 2: Sicherheitskonfiguration einrichten

Erstellen Sie eine Sicherheitskonfiguration mit aktivierter Datenverschlüsselung während der Übertragung. Weitere Informationen finden Sie unter Erstellen einer Sicherheitskonfiguration im Management Guide 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 Verschlüsselung von Daten während der Übertragung. Das LDAP-Serverzertifikat wird verwendet, um Client-Verbindungen zum Presto-Server zu authentifizieren.

Schritt 3: JSON-Konfigurationsobjekt mit Presto-Eigenschaften für LDAP erstellen

Sie verwenden die Konfigurationsklassifizierung presto-config zum Festlegen von Presto-Eigenschaften für LDAP. Das Format und der Inhalt von presto-config unterscheiden sich geringfügig in Abhängigkeit von der Amazon EMR-Version und der Presto-Installation (PrestoDB oder PrestoSQL). Beispiele für Konfigurationsunterschiede finden Sie unten in diesem Abschnitt. Weitere Informationen finden Sie unter Konfigurieren von Anwendungen.

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 an einen sicheren Speicherort in Amazon S3 hoch, damit Sie beim Erstellen des Clusters darauf verweisen können. Wenn Sie die AWS CLI verwenden, können Sie lokal auf die Datei verweisen.

Beispiel Amazon EMR 6.1.0 und höher mit PrestoSQL

Im folgenden Beispiel wird der LDAP-Host-Name aus Schritt 1: Informationen zum LDAP-Server erfassen und Serverzertifikat nach kopierenAmazon S3 zur Authentifizierung beim LDAP-Server für die Bindung verwendet. Es werden zwei Benutzerbindungsmuster angegeben, die angeben, dass Benutzer innerhalb der OU admins und der OU datascientists auf dem LDAP-Server für die Authentifizierung beim PrestoSQL-Server als Benutzer berechtigt sind. Die Bindungsmuster werden durch einen Doppelpunkt () voneinander getrennt.:).

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

Beispiel Amazon EMR ab Version 5.16.0

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 nach kopierenAmazon S3, 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" } }]

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

Beispiel 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 hochladenAmazon S3

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 nach hoch.Amazon S3. In Schritt 5: Cluster erstellen wird die Skriptdatei als referenziert. s3://MyBucket/LoadLDAPCert.sh.

Das folgende Beispielskript verwendet das Standardpasswort für den Schlüsselspeicher. changeit. Es wird empfohlen, dass Sie nach dem Erstellen des Clusters eine Verbindung mit dem Master-Knoten herstellen und das Schlüsselspeicherpasswort mit dem keytool-Befehl ändern.

#!/bin/bash aws s3 cp s3://MyBucket/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

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 über die Amazon EMR-Konsole

  1. Öffnen Sie die Amazon EMR-Konsole unter https://console.aws.amazon.com/elasticmapreduce.

  2. Wählen Sie Create Cluster (Cluster erstellen) und Go to advanced options (Erweiterte Optionen aufrufen) aus.

  3. Wählen Sie Presto zusammen mit anderen Anwendungen aus, die Amazon EMR installieren soll, und wählen Sie unter Software Configuration (Softwarekonfiguration) die zu verwendende Version aus.Amazon EMR Die LDAP-Authentifizierung wird erst ab Amazon EMR 5.10.0 unterstützt.

  4. Wählen Sie unter Edit software settings (Software-Einstellungen bearbeiten) die Option Load JSON from S3 (JSON aus S3 laden), geben Sie den Speicherort der in Amazon S3 erstellten JSON-Konfigurationsdatei in Schritt 3: JSON-Konfigurationsobjekt mit Presto-Eigenschaften für LDAP erstellen ein und wählen Sie dann Next (Weiter).

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

  6. 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).

  7. Geben Sie Name für die Bootstrap-Aktion ein, geben Sie die in erstellte Script location (Skript-Speicherort)Schritt 4: Skript zum Kopieren des LDAP-Serverzertifikats erstellen und nach hochladenAmazon S3 ein (z. B. s3://MyBucket/LoadLDAPCert.sh) und klicken Sie dann auf Add (Hinzufügen).

  8. 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).

  9. Wählen Sie Authentication and encryption (Authentifizierung und Verschlüsselung) und dann die Security configuration (Sicherheitskonfiguration), die Sie in Schritt 2: Sicherheitskonfiguration einrichten. erstellt haben.

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

So erstellen Sie einen Presto-Cluster mit LDAP-Authentifizierung unter Verwendung der 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 gespeichert werden.Amazon S3. Im folgenden Beispiel wird s3://MyBucket/LoadLDAPCert.sh verwendet.

    Anmerkung

    Zur besseren Lesbarkeit sind Linux-Zeilenfortsetzungszeichen (\) enthalten. Sie können entweder entfernt oder in Linux-Befehlen verwendet werden. Ersetzen Sie diese Zeichen unter Windows 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://MyBucket/LoadLDAPCert.sh" \ --security-configuration MyPrestoLDAPSecCfg --configurations file://MyPrestoConfig.json