Tutorial: Konfigurieren einer bereichsübergreifenden Vertrauensstellung mit einer Active-Directory-Domain - 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.

Tutorial: Konfigurieren einer bereichsübergreifenden Vertrauensstellung mit einer Active-Directory-Domain

Wenn Sie eine realmübergreifende Vertrauensstellung einrichten, ermöglichen Sie Prinzipalen (normalerweise Benutzern) aus einem anderen Kerberos-Bereich, sich bei Anwendungskomponenten auf dem Cluster zu authentifizieren. EMR Das dem Cluster zugeordnete Schlüsselverteilungszentrum (KDC) baut KDC mithilfe eines realmübergreifenden Prinzipals, der in beiden vorhanden ist, eine Vertrauensbeziehung zu einem anderen auf. KDCs Der Name des Prinzipals und das Passwort stimmen genau überein.

Eine realmübergreifende Vertrauensstellung setzt voraus, dass sie einander über das Netzwerk KDCs erreichen und die Domainnamen der jeweils anderen Seite auflösen können. Im Folgenden finden Sie Schritte zum Einrichten einer realmübergreifenden Vertrauensstellung mit einem Microsoft AD-Domänencontroller, der als EC2 Instanz ausgeführt wird, sowie ein Beispiel für eine Netzwerkkonfiguration, die die erforderliche Konnektivität und Domänennamenauflösung bereitstellt. Jede Netzwerkkonfiguration, die den erforderlichen Netzwerkverkehr zwischen KDCs den Geräten zulässt, ist zulässig.

Optional können Sie, nachdem Sie eine realmübergreifende Vertrauensstellung mit Active Directory unter Verwendung eines KDC Clusters eingerichtet haben, einen weiteren Cluster mit einer anderen Sicherheitskonfiguration erstellen, um den KDC auf dem ersten Cluster als externen KDC Cluster zu referenzieren. Ein Beispiel für die Einrichtung einer Sicherheitskonfiguration und eines Clusters finden Sie unter Externer Cluster KDC mit realmübergreifender Active Directory-Vertrauensstellung.

Weitere Informationen zur EMR Unterstützung von Kerberos durch Amazon sowie Links zur MIT Kerberos-Dokumentation finden Sie unter. KDC Verwenden Sie Kerberos für die Authentifizierung bei Amazon EMR

Wichtig

Amazon unterstützt EMR keine realmübergreifenden Vertrauensstellungen mit. AWS Directory Service for Microsoft Active Directory

Schritt 1: Richten Sie das VPC UND-Subnetz ein

Schritt 2: Den Active-Directory-Domain-Controller starten und installieren

Schritt 3: Fügen Sie der Domäne für den EMR Cluster Konten hinzu

Schritt 4: Eine eingehende Vertrauensstellung auf dem Active-Directory-Domain-Controller konfigurieren

Schritt 5: Verwenden Sie einen DHCP Optionssatz, um den Active Directory-Domänencontroller als VPC DNS Server anzugeben

Schritt 6: Starten Sie einen kerberisierten Cluster EMR

Schritt 7: Erstellen Sie HDFS Benutzer und legen Sie Berechtigungen für den Cluster für Active Directory-Konten fest

Schritt 1: Richten Sie das VPC UND-Subnetz ein

In den folgenden Schritten wird das Erstellen eines VPC UND-Subnetzes veranschaulicht, sodass der dedizierte Cluster den Active Directory-Domänencontroller erreichen und dessen Domänennamen auflösen KDC kann. In diesen Schritten erfolgt die Domänennamenauflösung, indem der Active Directory-Domänencontroller als Domänennamenserver im Optionssatz referenziert wird. DHCP Weitere Informationen finden Sie unter Schritt 5: Verwenden Sie einen DHCP Optionssatz, um den Active Directory-Domänencontroller als VPC DNS Server anzugeben.

Der KDC und der Active Directory-Domänencontroller müssen in der Lage sein, die Domänennamen der jeweils anderen Person aufzulösen. Dadurch kann Amazon EMR Computer mit der Domain verbinden und die entsprechenden Linux-Konten und SSH -Parameter auf Cluster-Instances automatisch konfigurieren.

Wenn Amazon den Domainnamen nicht auflösen EMR kann, können Sie die Vertrauensstellung anhand der IP-Adresse des Active Directory-Domänencontrollers referenzieren. Sie müssen jedoch manuell Linux-Konten hinzufügen, entsprechende Principals zum Cluster-Dedicated KDC hinzufügen und die Konfiguration vornehmen. SSH

So richten Sie das UND-Subnetz ein VPC
  1. Erstellen Sie ein Amazon VPC mit einem einzigen öffentlichen Subnetz. Weitere Informationen finden Sie unter Schritt 1: Erstellen des VPC im Amazon-Handbuch „VPCErste Schritte“.

    Wichtig

    Wenn Sie einen Microsoft Active Directory-Domänencontroller verwenden, wählen Sie einen CIDR Block für den EMR Cluster aus, sodass alle IPv4 Adressen weniger als neun Zeichen lang sind (z. B. 10.0.0.0/16). Das liegt daran, dass die DNS Namen der Clustercomputer verwendet werden, wenn die Computer dem Active Directory-Verzeichnis beitreten. AWS weist DNSHostnamen auf der Grundlage der IPv4 Adresse zu, sodass längere IP-Adressen zu DNS Namen mit mehr als 15 Zeichen führen können. Für Active Directory gilt ein Limit von 15 Zeichen für die Registrierung der Namen der hinzugefügten Computer, und es kürzt längere Namen, was zu unvorhersehbaren Fehlern führen kann.

  2. Entfernt den DHCP Standardoptionssatz, der dem zugewiesen ist. VPC Weitere Informationen finden Sie unter Ändern von a VPC zu „Keine DHCP Optionen“. Später fügen Sie einen neuen hinzu, der den Active Directory-Domänencontroller als DNS Server angibt.

  3. Vergewissern Sie sich, dass die DNS Unterstützung für aktiviert istVPC, d. h., dass sowohl DNS Hostnamen als auch DNS Auflösung aktiviert sind. Standardmäßig sind sie aktiviert. Weitere Informationen finden Sie unter Aktualisierung der DNS Unterstützung für Ihren VPC.

  4. Vergewissern Sie VPC sich, dass Ihr Internet-Gateway angeschlossen ist. Dies ist die Standardeinstellung. Weitere Informationen finden Sie unter Erstellen und Anfügen eines Internet-Gateways.

    Anmerkung

    In diesem Beispiel wird ein Internet-Gateway verwendet, weil Sie einen neuen Domänencontroller für einrichtenVPC. Für Ihre Anwendung ist möglicherweise kein Internet-Gateway erforderlich. Die einzige Voraussetzung ist, dass der dedizierte Cluster auf den Active Directory-Domänencontroller zugreifen KDC kann.

  5. Erstellen Sie eine benutzerdefinierte Routing-Tabelle, fügen Sie eine Route zum Internet-Gateway hinzu, und ordnen Sie ihn dann Ihrem Subnetz zu. Weitere Informationen finden Sie unter Erstellen einer benutzerdefinierten Routing-Tabelle.

  6. Wenn Sie die EC2 Instanz für den Domänencontroller starten, muss sie über eine statische öffentliche IPv4 Adresse verfügen, über die Sie eine Verbindung herstellen können. RDP Der einfachste Weg, dies zu tun, besteht darin, Ihr Subnetz so zu konfigurieren, dass öffentliche IPv4 Adressen automatisch zugewiesen werden. Dies ist nicht die Standardeinstellung, wenn ein Subnetz erstellt wird. Weitere Informationen finden Sie unter Ändern des Attributs für die öffentliche IPv4 Adressierung Ihres Subnetzes. Optional können Sie die Adresse zuweisen, wenn Sie die Instance starten. Weitere Informationen finden Sie unter Zuweisen einer öffentlichen IPv4 Adresse beim Instance-Start.

  7. Wenn Sie fertig sind, notieren Sie sich Ihr Subnetz VPC und Ihr IDs Subnetz. Sie benötigen sie später, wenn Sie den Active-Directory-Domain-Controller und den Cluster starten.

Schritt 2: Den Active-Directory-Domain-Controller starten und installieren

  1. Starten Sie eine EC2 Instanz, die auf Microsoft Windows Server 2016 Base basiertAMI. Wir empfehlen einen m4.xlarge oder einen besseren Instance-Typ. Weitere Informationen finden Sie unter Starten einer AWS Marketplace Instance im EC2Amazon-Benutzerhandbuch.

  2. Notieren Sie sich die Gruppen-ID der Sicherheitsgruppe, die der EC2 Instance zugeordnet ist. Sie benötigen sie für Schritt 6: Starten Sie einen kerberisierten Cluster EMR. Wir verwenden sg-012xrlmdomain345. Alternativ können Sie verschiedene Sicherheitsgruppen für den EMR Cluster und diese Instanz angeben, die den Datenverkehr zwischen ihnen ermöglicht. Weitere Informationen finden Sie unter EC2Amazon-Sicherheitsgruppen für Linux-Instances im EC2Amazon-Benutzerhandbuch.

  3. Stellen Sie mithilfe von Connect zur EC2 Instanz herRDP. Weitere Informationen finden Sie unter Herstellen einer Verbindung zu Ihrer Windows-Instance im EC2Amazon-Benutzerhandbuch.

  4. Starten Sie Server Manager, um die Domain-Services-Rolle von Active Directory auf dem Server zu installieren und zu konfigurieren. Machen Sie den Server zu einem Domain-Controller und weisen Sie einen Domain-Namen zu (wir verwenden in diesem Beispiel hier ad.domain.com). Notieren Sie sich den Domainnamen, da Sie ihn später benötigen, wenn Sie die EMR Sicherheitskonfiguration und den Cluster erstellen. Wenn Sie noch keine Erfahrung mit der Einrichtung von Active Directory haben, können Sie den Anweisungen in So richten Sie Active Directory (AD) in Windows Server 2016 ein folgen.

    Die Instance startet neu, wenn Sie fertig sind.

Schritt 3: Fügen Sie der Domäne für den EMR Cluster Konten hinzu

RDPzum Active Directory-Domänencontroller, um Konten unter Active Directory-Benutzer und -Computer für jeden Clusterbenutzer zu erstellen. Weitere Informationen finden Sie unter Erstellen eines Benutzerkontos in Active-Directory-Benutzern und -Computern auf der Website Microsoft Learn. Notieren Sie den Wert für User logon name (Benutzeranmeldename) jedes Benutzers. Sie benötigen diese später, wenn Sie den Cluster konfigurieren.

Darüber hinaus erstellen Sie ein Konto mit ausreichenden Berechtigungen, um der Domain Computer hinzuzufügen. Sie geben dieses Konto an, wenn Sie einen Cluster erstellen. Amazon EMR verwendet es, um Cluster-Instances mit der Domain zu verbinden. Sie geben dieses Konto und sein Passwort in Schritt 6: Starten Sie einen kerberisierten Cluster EMR an. Für die Delegation von Join-Berechtigungen des Computers an das Konto empfehlen wir das Erstellen einer Gruppe mit Join-Berechtigungen und die anschließende Zuweisung des Benutzers zu der Gruppe. Weitere Informationen finden Sie unter Delegieren von Berechtigungen für den Verzeichniszugang im AWS Directory Service -Administratorhandbuch.

Schritt 4: Eine eingehende Vertrauensstellung auf dem Active-Directory-Domain-Controller konfigurieren

Mit den folgenden Beispielbefehlen wird eine Vertrauensstellung in Active Directory hergestellt. Dabei handelt es sich um eine unidirektionale, eingehende, nicht transitive Realm-Vertrauensstellung mit dem zugewiesenen Cluster. KDC Das Beispiel, das wir für den Bereich des Clusters verwenden, ist EC2.INTERNAL. Ersetzen Sie den KDC-FQDN wobei der öffentliche DNS Name für den EMR Amazon-Primärknoten aufgeführt ist, auf dem sich der befindetKDC. Der Parameter passwordt gibt das cross-realm principal password (Passwort des bereichsübergreifenden Prinzipals) an, das Sie beim Erstellen eines Clusters zusammen mit dem realm (Bereich) des Clusters angeben. Der Bereichsname wird von dem Standard-Domain-Namen us-east-1 für den Cluster abgeleitet. Die Domain ist die Active-Directory-Domain, in der Sie die Vertrauensstellung erstellen. Sie wird gemäß Konvention in Kleinbuchstaben angegeben. Im Beispiel wird ad.domain.com verwendet.

Öffnen Sie die Windows-Eingabeaufforderung mit Administrator-Berechtigungen und geben Sie die folgenden Befehle zum Erstellen der Vertrauensstellung auf dem Active-Directory-Domain-Controller ein:

C:\Users\Administrator> ksetup /addkdc EC2.INTERNAL KDC-FQDN C:\Users\Administrator> netdom trust EC2.INTERNAL /Domain:ad.domain.com /add /realm /passwordt:MyVeryStrongPassword C:\Users\Administrator> ksetup /SetEncTypeAttr EC2.INTERNAL AES256-CTS-HMAC-SHA1-96

Schritt 5: Verwenden Sie einen DHCP Optionssatz, um den Active Directory-Domänencontroller als VPC DNS Server anzugeben

Nachdem der Active Directory-Domänencontroller konfiguriert ist, müssen Sie den VPC so konfigurieren, dass er als Domänennamenserver für die Namensauflösung in Ihrem verwendet wirdVPC. Fügen Sie dazu einen DHCP Optionssatz hinzu. Geben Sie einen Wert in Domainname als Domainnamen für Ihren Cluster ein, z. B. ec2.internal, wenn sich Ihr Cluster in us-east-1 befindet, oder region.compute.internal für andere Regionen. Für Domänennamenserver müssen Sie die IP-Adresse des Active Directory-Domänencontrollers (der vom Cluster aus erreichbar sein muss) als ersten Eintrag angeben, gefolgt von AmazonProvidedDNS(z. B. xx.xx.xx.xx, AmazonProvided DNS). Weitere Informationen finden Sie unter DHCPOptionssätze ändern.

Schritt 6: Starten Sie einen kerberisierten Cluster EMR

  1. Erstellen Sie in Amazon eine SicherheitskonfigurationEMR, die den Active Directory-Domänencontroller angibt, den Sie in den vorherigen Schritten erstellt haben. Ein Beispielbefehl ist nachfolgend gezeigt. Ersetzen Sie die Domain ad.domain.com durch den Namen der Domain, die Sie in Schritt 2: Den Active-Directory-Domain-Controller starten und installieren angegeben haben.

    aws emr create-security-configuration --name MyKerberosConfig \ --security-configuration '{ "AuthenticationConfiguration": { "KerberosConfiguration": { "Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": { "TicketLifetimeInHours": 24, "CrossRealmTrustConfiguration": { "Realm": "AD.DOMAIN.COM", "Domain": "ad.domain.com", "AdminServer": "ad.domain.com", "KdcServer": "ad.domain.com" } } } } }'
  2. Erstellen Sie den Cluster mit den folgenden Attributen:

    • Verwenden Sie die --security-configuration-Option, um die Sicherheitskonfiguration anzugeben, die Sie erstellt haben. Wir verwenden MyKerberosConfig im Beispiel.

    • Verwenden Sie die SubnetId-Eigenschaft der --ec2-attributes option, um das Subnetz anzugeben, das Sie in Schritt 1: Richten Sie das VPC UND-Subnetz ein erstellt haben. Wir verwenden step1-subnet im Beispiel.

    • Verwenden Sie die AdditionalMasterSecurityGroups und AdditionalSlaveSecurityGroups der --ec2-attributes-Option, um anzugeben, dass die Sicherheitsgruppe, die dem AD-Domain-Controller von Schritt 2: Den Active-Directory-Domain-Controller starten und installieren zugeordnet ist, dem Cluster-Primärknoten sowie dem Core- und dem Aufgabenknoten zugeordnet ist. Wir verwenden sg-012xrlmdomain345 im Beispiel.

    Verwenden Sie --kerberos-attributes, um die folgenden Cluster-spezifischen Kerberos-Attribute anzugeben:

    Das folgende Beispiel startet einen Cluster mit Schutz durch Kerberos.

    aws emr create-cluster --name "MyKerberosCluster" \ --release-label emr-5.10.0 \ --instance-type m5.xlarge \ --instance-count 3 \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2KeyPair,\ SubnetId=step1-subnet, AdditionalMasterSecurityGroups=sg-012xrlmdomain345, AdditionalSlaveSecurityGroups=sg-012xrlmdomain345\ --service-role EMR_DefaultRole \ --security-configuration MyKerberosConfig \ --applications Name=Hadoop Name=Hive Name=Oozie Name=Hue Name=HCatalog Name=Spark \ --kerberos-attributes Realm=EC2.INTERNAL,\ KdcAdminPassword=MyClusterKDCAdminPwd,\ ADDomainJoinUser=ADUserLogonName,ADDomainJoinPassword=ADUserPassword,\ CrossRealmTrustPrincipalPassword=MatchADTrustPwd

Schritt 7: Erstellen Sie HDFS Benutzer und legen Sie Berechtigungen für den Cluster für Active Directory-Konten fest

Beim Einrichten einer Vertrauensbeziehung mit Active Directory EMR erstellt Amazon Linux-Benutzer auf dem Cluster für jedes Active Directory-Konto. Beispielsweise hat der Benutzeranmeldename LiJuan in Active Directory ein Linux-Benutzerkonto von lijuan. Active Directory-Benutzernamen können Großbuchstaben, aber Linux ignoriert die Groß-/Kleinschreibung von Active Directory.

Damit sich Ihre Benutzer beim Cluster anmelden können, um Hadoop-Jobs auszuführen, müssen Sie HDFS Benutzerverzeichnisse für ihre Linux-Konten hinzufügen und jedem Benutzer das Eigentum an seinem Verzeichnis zuweisen. Zu diesem Zweck empfehlen wir, dass Sie ein Skript ausführen, das Sie in Amazon S3 als Cluster-Schritt gespeichert haben. Alternativ können Sie die Befehle aus dem folgenden Skript von der Befehlszeile auf dem Primärknoten aus ausführen. Verwenden Sie das EC2 key pair, das Sie bei der Erstellung des Clusters angegeben haben, um SSH als Hadoop-Benutzer eine Verbindung zum primären Knoten herzustellen. Weitere Informationen finden Sie unter Verwenden Sie ein EC2 key pair für SSH Anmeldeinformationen.

Führen Sie den folgenden Befehl aus, um dem Cluster, der ein Skript ausführt, einen Schritt hinzuzufügen: AddHDFSUsers.sh.

aws emr add-steps --cluster-id <j-2AL4XXXXXX5T9> \ --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,\ Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://DOC-EXAMPLE-BUCKET/AddHDFSUsers.sh"]

Der Inhalt der Datei AddHDFSUsers.sh ist wie folgt.

#!/bin/bash # AddHDFSUsers.sh script # Initialize an array of user names from AD or Linux users and KDC principals created manually on the cluster ADUSERS=("lijuan" "marymajor" "richardroe" "myusername") # For each user listed, create an HDFS user directory # and change ownership to the user for username in ${ADUSERS[@]}; do hdfs dfs -mkdir /user/$username hdfs dfs -chown $username:$username /user/$username done

Hadoop-Gruppen zugeordnete Active-Directory-Gruppen

Amazon EMR verwendet System Security Services Daemon (SSD), um Active Directory-Gruppen Hadoop-Gruppen zuzuordnen. Um die Gruppenzuordnungen nach der Anmeldung am Primärknoten zu bestätigen, wie in Wird verwendetSSH, um eine Verbindung zu kerberisierten Clustern herzustellen beschrieben, können Sie den Befehl hdfs groups ausführen, um zu bestätigen, dass Active Directory-Gruppen, zu denen Ihr Active Directory-Konto gehört, Hadoop-Gruppen für die entsprechenden Hadoop-Benutzer auf dem Cluster zugeordnet wurden. Sie können auch die Gruppenzuordnungen anderer Benutzer überprüfen, indem Sie einen oder mehrere Benutzernamen im Befehl angeben, z. B. hdfs groups lijuan. Weitere Informationen finden Sie unter Gruppen im Apache HDFS Commands Guide.