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.
Schritte zur Konfiguration der LDAP Authentifizierung
- Schritt 1: Sammeln Sie Informationen über Ihren LDAP Server und kopieren Sie das Serverzertifikat auf Amazon S3
- Schritt 2: Sicherheitskonfiguration einrichten
- Schritt 3: Erstellen Sie eine Konfiguration JSON mit Presto-Eigenschaften für LDAP
- Schritt 4: Erstellen Sie das Skript, um das LDAP Serverzertifikat zu kopieren und auf Amazon S3 hochzuladen
- Schritt 5: Cluster erstellen
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äuftip-xxx-xxx-xxx-xxx.ec2.internal
. Der Benutzer ist der Organisationseinheit (OU) zugeordnetadmins
und mit dem Passwort123456
: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
in der folgenden Konfigurationsklassifikation mit und mit. prestosql-config
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
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.
-
Wählen Sie Create Cluster (Cluster erstellen) und Go to advanced options (Zu erweiterten Optionen) aus.
-
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.
-
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.
-
Konfigurieren Sie die Cluster-Hardware und die Netzwerkfunktionen. Wählen Sie dann Next (Weiter).
-
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).
-
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.
-
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).
-
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.
-
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 verwendes3://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