LDAPAuthentifizierung für Presto bei Amazon verwenden 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.

LDAPAuthentifizierung für Presto bei Amazon verwenden EMR

Folgen Sie zur Konfiguration den Schritten in diesem AbschnittLDAP. Beachten Sie die einzelnen Schritte sowie die Beispiele und Links mit weiterführenden Informationen.

Schritt 1: Sammeln Sie Informationen über Ihren LDAP Server und kopieren Sie das Serverzertifikat auf Amazon S3

Sie benötigen die Informationen und Elemente im folgenden Abschnitt von Ihrem LDAP Server, um die LDAP Authentifizierung zu konfigurieren.

Die IP-Adresse oder der Hostname des LDAP Servers

Der Presto-Koordinator auf dem EMR Amazon-Masterknoten muss in der Lage sein, den LDAP Server unter der angegebenen IP-Adresse oder dem angegebenen Hostnamen zu erreichen. Standardmäßig kommuniziert Presto LDAPS über Port 636 mit dem LDAP Server. Wenn Ihre LDAP Implementierung einen benutzerdefinierten Port erfordert, können Sie ihn mithilfe der ldap.url Eigenschaft mit Amazon EMR 5.16.0 oder höher oder authentication.ldap.url mit früheren Versionen angeben. Ersetzen Sie 636 durch den benutzerdefinierten Port, wie in den presto-config-Konfigurationsklassifizierungsbeispielen unter Schritt 3: Erstellen Sie eine Konfiguration JSON mit Presto-Eigenschaften für LDAP 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 Amazon S3 hochladen. Weitere Informationen finden Sie unter Wie lade ich Dateien und Ordner in einen S3 Bucket hoch? 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: Erstellen Sie das Skript, um das LDAP Serverzertifikat zu kopieren und auf Amazon S3 hochzuladen. Das Beispielzertifikat ist s3://MyBucket/ldap_server.crt.

Die LDAP Servereinstellungen für anonyme Bindungen

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

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

Um den Status der anonymen Bindung auf dem LDAP Server abzurufen
  • Verwenden Sie von einem Linux-Client aus den Befehl 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
Um zu überprüfen, ob ein Konto über Berechtigungen für einen LDAP Server verfügt, der die einfache Authentifizierung verwendet
  • Verwenden Sie von einem Linux-Client aus den Befehl ldapwhoami, wie im folgenden Beispiel gezeigt. Das Beispiel verwendet einen fiktiven Benutzer, presto, gespeichert auf einem LDAP Open-Server, der auf einer EC2 Instanz mit dem fiktiven Hostnamen läuft 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: Erstellen Sie eine Konfiguration JSON mit Presto-Eigenschaften für LDAP 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 Paare internal-communication.authentication.ldap.user und internal-communication.authentication.ldap.password Name/Wert.

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

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 (DCs) besteht. Presto ersetzt es ${USER} bei der Kennwortauthentifizierung durch die tatsächliche Benutzer-ID (UID) jedes Benutzers, damit es dem definierten Namen (DN) entspricht, den dieses Bindungsmuster angibt. Sie benötigen OUs die Mitglieder und deren DCs Mitglieder, zu denen berechtigte Benutzer gehören. 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 im AWS CloudFormation -Benutzerhandbuch.

Wenn Sie Amazon EMR 5.10.0 verwenden, können Sie nur ein solches Muster angeben. Mit Amazon EMR 5.11.0 oder höher können Sie mehrere Muster angeben, die durch einen Doppelpunkt (:) getrennt sind. 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: Erstellen Sie eine Konfiguration JSON mit Presto-Eigenschaften für LDAP.

Schritt 2: Sicherheitskonfiguration einrichten

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

Schritt 3: Erstellen Sie eine Konfiguration JSON mit Presto-Eigenschaften für LDAP

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

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 Ort in Amazon S3 hoch, damit Sie bei der Erstellung des Clusters darauf verweisen können. Wenn Sie die verwenden AWS CLI, können Sie die Datei lokal referenzieren.

Beispiel Amazon EMR 6.1.0 und höher mit Presto SQL (Trino)

Im folgenden Beispiel wird der LDAP Hostname von verwendet, Schritt 1: Sammeln Sie Informationen über Ihren LDAP Server und kopieren Sie das Serverzertifikat auf Amazon S3 um sich beim Server für die LDAP Bindung zu authentifizieren. Es wurden zwei Benutzerbindungsmuster angegeben, was darauf hinweist, dass Benutzer innerhalb der admins Organisationseinheit und der datascientists Organisationseinheit auf dem LDAP Server für die Authentifizierung beim Trino-Server als Benutzer berechtigt sind. Die Bindungsmuster werden durch einen Doppelpunkt (:) voneinander getrennt.

EMRAmazon-Versionen 6.4.0 und höher verwenden den neuen Namen Trino anstelle von Presto. SQL Wenn Sie Trino verwenden, ersetzen Sie prestosql-config in der folgenden Konfigurationsklassifikation mit und mit. trino-config prestosql-password-authenticator 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" } } ]
Beispiel Amazon EMR 5.16.0 und höher

Das folgende Beispiel verwendet die LDAP Benutzer-ID und das Passwort sowie den LDAP Hostnamen von, Schritt 1: Sammeln Sie Informationen über Ihren LDAP Server und kopieren Sie das Serverzertifikat auf Amazon S3 um sich beim LDAP Server für die Bindung zu authentifizieren. Es wurden zwei Benutzerbindungsmuster angegeben, die darauf hinweisen, dass Benutzer innerhalb der admins Organisationseinheit und der datascientists Organisationseinheit auf dem LDAP Server für die Authentifizierung beim Presto-Server als Benutzer berechtigt 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 anonyme Bindungen, sodass diese Einträge weggelassen werden. 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: Erstellen Sie das Skript, um das LDAP Serverzertifikat zu kopieren und auf Amazon S3 hochzuladen

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 wird auf die Skriptdatei verwiesen als s3://MyBucket/LoadLDAPCert.sh.

Das folgende Beispielskript verwendet das Standard-Keystore-Passwort: changeit. Wir empfehlen, dass Sie nach der Erstellung des Clusters eine Verbindung zum Master-Knoten herstellen und das Keystore-Passwort mit dem Befehl keytool ä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 installieren EMR soll. Die folgenden Beispiele verweisen auch auf die Eigenschaften der Konfigurationsklassifizierung in aJSON, aber Sie können die Konfigurationsklassifizierung auch direkt angeben.

Um einen Presto-Cluster mit LDAP Authentifizierung mithilfe der EMR Amazon-Konsole zu erstellen
  1. Navigieren Sie zur neuen EMR Amazon-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.

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

  3. Wählen Sie Presto zusammen mit anderen Anwendungen, die Amazon installieren EMR soll, und wählen Sie unter Softwarekonfiguration die Version von Amazon aus, die Sie verwenden EMR möchten. LDAPDie Authentifizierung wird nur mit Amazon EMR 5.10.0 und höher unterstützt.

  4. Wählen Sie unter Softwareeinstellungen bearbeiten die Option JSONAus S3 laden, geben Sie den Speicherort der JSON Konfigurationsdatei, in der Sie sie erstellt habenSchritt 3: Erstellen Sie eine Konfiguration JSON mit Presto-Eigenschaften für LDAP, in Amazon S3 ein und wählen Sie dann 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 einen Namen für die Bootstrap-Aktion ein, geben Sie den Skriptspeicherort ein, in dem Sie das Skript erstellt habenSchritt 4: Erstellen Sie das Skript, um das LDAP Serverzertifikat zu kopieren und auf Amazon S3 hochzuladen, z. B. s3://MyBucket/L oadLDAPCert .sh, und wählen Sie dann 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).

Um einen Presto-Cluster mit LDAP Authentifizierung zu erstellen, verwenden Sie den AWS CLI
  • Verwenden Sie den aws emr create-cluster-Befehl. 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 Konfigurationsdatei als JSON Datei, die in demselben Verzeichnis gespeichert ist, in dem Sie den Befehl ausführen. Das Bootstrap-Skript muss dagegen in Amazon S3 gespeichert werden. Im folgenden Beispiel wird verwende s3://MyBucket/LoadLDAPCert.sh.

    Anmerkung

    Linux-Zeilenfortsetzungszeichen (\) 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://MyBucket/LoadLDAPCert.sh" \ --security-configuration MyPrestoLDAPSecCfg --configurations file://MyPrestoConfig.json