Didacticiel : Configurez une approbation inter-domaines avec un domaine Active Directory - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Didacticiel : Configurez une approbation inter-domaines avec un domaine Active Directory

Lorsque vous configurez une approbation inter-domaines, vous autorisez des principaux (généralement des utilisateurs) provenant d'un autre domaine Kerberos à s'authentifier auprès de composants d'application sur le cluster EMR. Le cluster dédiécentre de distribution de clés (KDC)établit une relation de confiance avec un autre KDC à l'aide d'unPrincipalqui existe dans les deux KDC. Le nom et le mot de passe du principal correspondent exactement.

Une approbation inter-domaines nécessite que les KDC puissent s'atteindre mutuellement via le réseau et résoudre leurs noms de domaine mutuels. Les étapes permettant d'établir une relation d'approbation inter-domaines avec un contrôleur de domaine Microsoft AD s'exécutant en tant qu'instance EC2 sont fournies ci-dessous, ainsi qu'un exemple de configuration de réseau qui fournit la connectivité et la résolution du nom de domaine requises. Toute configuration de réseau qui autorise le trafic réseau requis entre les KDC est acceptable.

Le cas échéant, une fois l'approbation inter-domaines établie avec Active Directory à l'aide d'un KDC sur un cluster, vous pouvez créer un autre cluster à l'aide d'une autre configuration de sécurité pour référencer le KDC sur le premier cluster comme KDC externe. Pour un exemple de configuration de sécurité et d'installation de cluster, consultez KDC de cluster externe avec confiance entre domaines Active Directory.

Pour plus d'informations sur la prise en charge d'Amazon EMR pour Kerberos et KDC, ainsi que sur des liens vers la documentation MIT Kerberos, voirUtilisation de l'authentification Kerberos.

Important

Amazon EMR ne prend pas en charge les approbations inter-domaines avecAWS Directory Service for Microsoft Active Directory.

Étape 1 : Configurer le VPC et le sous-réseau

Étape 2 : Lancez et installez le contrôleur de domaine Active Directory

Étape 3 : Ajout de comptes d'utilisateurs au domaine pour le cluster EMR

Étape 4 : Configurer une approbation entrante sur le contrôleur de domaine Active Directory

Étape 5 : Utilisez un jeu d'options DHCP pour spécifier le contrôleur de domaine Active Directory en tant que serveur DNS VPC

Étape 6 : Lancer un cluster EMR Kerberisé

Étape 7 : Créer des utilisateurs HDFS et définir des autorisations sur le cluster pour les comptes d'utilisateurs Active Directory

Étape 1 : Configurer le VPC et le sous-réseau

Les étapes suivantes montrent la création d'un VPC et d'un sous-réseau afin que le KDC dédié au cluster puisse atteindre le contrôleur de domaine Active Directory et résoudre son nom de domaine. Au cours de ces étapes, la résolution du nom de domaine est fournie en faisant référence au contrôleur de domaine Active Directory en tant que serveur de noms de domaine dans le jeu d'options DHCP. Pour plus d'informations, consultez Étape 5 : Utilisez un jeu d'options DHCP pour spécifier le contrôleur de domaine Active Directory en tant que serveur DNS VPC.

Le KDC et le contrôleur de domaine Active Directory doivent être en mesure de résoudre leurs noms de domaine respectifs. Cela permet à Amazon EMR de joindre des ordinateurs au domaine et de configurer automatiquement les comptes d'utilisateur Linux et les paramètres SSH correspondants sur les instances de cluster.

Si Amazon EMR ne peut pas résoudre le nom de domaine, vous pouvez référencer l'approbation à l'aide de l'adresse IP du contrôleur de domaine Active Directory. Cependant, vous devez ajouter manuellement les comptes d'utilisateurs Linux, ajouter les principaux correspondants au KDC dédié au cluster et configurer SSH.

Pour configurer le VPC et le sous-réseau

  1. Créez un Amazon VPC avec un seul sous-réseau public. Pour de plus amples informations, veuillez consulterÉtape 1 : Créer le VPCdans leGuide de mise en route d'Amazon VPC.

    Important

    Lorsque vous utilisez un contrôleur de domaine Microsoft Active Directory, choisissez un bloc d'adresse CIDR pour le cluster EMR de sorte que toutes les adresses IPv4 aient moins de neuf caractères (par exemple, 10.0.0.0/16). Cela provient du fait que les noms DNS des ordinateurs en cluster sont utilisés lorsque les ordinateurs rejoignent l'annuaire Active Directory.AWSattribueNoms d'hôte DNSbasé sur l'adresse IPv4 de telle manière que les adresses IP plus longues peuvent entraîner des noms DNS de plus de 15 caractères. Active Directory a une limite de 15 caractères pour l'enregistrement des noms d'ordinateurs joints et tronque les noms plus longs, ce qui peut provoquer des erreurs imprévisibles.

  2. Supprimez le jeu d'options DHCP par défaut attribué au VPC. Pour de plus amples informations, veuillez consulterModification d'un VPC pour qu'il n'utilise pas d'options DHCP. Par la suite, vous ajoutez un nouveau jeu d'options qui spécifie le contrôleur de domaine Active Directory en tant que serveur DNS.

  3. Vérifiez que la prise en charge de DNS est activée pour le VPC, c'est-à-dire que les noms d'hôte DNS et la résolution DNS sont activés. Ils sont activés par défaut. Pour de plus amples informations, veuillez consulterMise à jour du support DNS pour votre VPC.

  4. Vérifiez que votre VPC dispose d'une passerelle Internet attachée (c'est le cas par défaut). Pour de plus amples informations, veuillez consulter Création et attachement d'une passerelle Internet.

    Note

    Une passerelle Internet est utilisée dans cet exemple, car vous établissez un nouveau contrôleur de domaine pour le VPC. Il peut cependant arriver qu'aucune passerelle Internet ne soit requise pour votre application. La seule exigence est que le KDC dédié au cluster puisse accéder au contrôleur de domaine Active Directory.

  5. Créez une table de routage personnalisée, ajoutez une route qui mène à la passerelle Internet, puis attachez-la à votre sous-réseau. Pour de plus amples informations, veuillez consulterCréer une table de routage personnalisée.

  6. Lorsque vous lancez l'instance EC2 pour le contrôleur de domaine, elle doit avoir une adresse IPv4 publique statique pour que vous puissiez vous y connecter à l'aide de RDP. La manière la plus simple de procéder est de configurer votre sous-réseau afin qu'il attribue automatiquement des adresses IPv4 publiques. Ce n'est pas le paramètre par défaut lorsqu'un sous-réseau est créé. Pour de plus amples informations, veuillez consulterModifier l'attribut d'adressage IPv4 public de votre sous-réseau. Vous avez aussi la possibilité d'attribuer l'adresse lorsque vous lancez l'instance. Pour de plus amples informations, veuillez consulterAttribution d'une adresse IPv4 publique lors du lancement d'une instance.

  7. Lorsque vous avez fini, notez les ID de votre VPC et du sous-réseau. Vous les utiliserez ultérieurement lorsque vous lancerez le contrôleur de domaine Active Directory et le cluster.

Étape 2 : Lancez et installez le contrôleur de domaine Active Directory

  1. Lancez une instance EC2 à partir de l'AMI de base de Microsoft Windows Server 2016. Nous vous recommandons le type d'instance m4.xlarge ou plus. Pour de plus amples informations, veuillez consulterLancement d'uneAWS Marketplaceexempledans leGuide de l'utilisateur Amazon EC2 pour les instances Windows.

  2. Notez l'ID de groupe du groupe de sécurité associé à l'instance EC2. Vous en avez besoin pour Étape 6 : Lancer un cluster EMR Kerberisé. Nous utilisons sg-012xrlmdomain345. Vous pouvez aussi spécifier différents groupes de sécurité pour le cluster EMR et cette instance qui autorise le trafic entre eux. Pour de plus amples informations, veuillez consulterGroupes de sécurité Amazon EC2 pour les instances Linuxdans leGuide de l'utilisateur Amazon EC2 pour les instances Linux.

  3. Connectez-vous à l'instance EC2 à l'aide de RDP. Pour de plus amples informations, veuillez consulterConnexion à votre instance Windowsdans leGuide de l'utilisateur Amazon EC2 pour les instances Windows.

  4. DémarrerServer Managerpour installer et configurer le rôle des services de domaine Active Directory sur le serveur. Configurez le serveur comme contrôleur de domaine et attribuez un nom de domaine (l'exemple que nous utilisons ici est ad.domain.com). Notez le nom de domaine, car vous en aurez besoin plus tard lorsque vous créerez la configuration de sécurité et le cluster EMR. Si vous configurez Active Directory pour la première fois, vous pouvez suivre les instructions indiquées dans le.Comment configurer Active Directory (AD) dans Windows Server 2016.

    L'instance redémarre une fois que vous avez terminé.

Étape 3 : Ajout de comptes d'utilisateurs au domaine pour le cluster EMR

RDP sur le contrôleur de domaine Active Directory pour créer des comptes d'utilisateur dans les utilisateurs et ordinateurs Active Directory pour chaque utilisateur de cluster. Pour obtenir des instructions, consultezCréer un compte d'utilisateur dans les utilisateurs et les ordinateurs Active Directory. Notez le nom de connexion de chaque utilisateur. Vous en aurez besoin ultérieurement lorsque vous configurez le cluster.

En outre, créez un compte utilisateur avec des privilèges suffisants pour joindre des ordinateurs au domaine. Vous spécifiez ce compte lorsque vous créez un cluster. Amazon EMR l'utilise pour joindre les instances de cluster au domaine. Vous spécifiez ce compte et son mot de passe Étape 6 : Lancer un cluster EMR Kerberisé. Pour déléguer des privilèges de jointure d'ordinateur au compte d'utilisateur, nous vous recommandons de créer un groupe avec des privilèges de jointure, puis d'affecter l'utilisateur au groupe. Pour obtenir des instructions, consultezDélégation de privilèges de jointure d'annuairedans leAWS Directory ServiceGuide d'administration.

Étape 4 : Configurer une approbation entrante sur le contrôleur de domaine Active Directory

L'exemple des commandes ci-dessous permet de créer une relation d'approbation dans Active Directory, qui est une approbation de domaine unidirectionnelle, entrante et non transitive avec le KDC dédié au cluster. L'exemple que nous utilisons pour le domaine du cluster est EC2.INTERNAL. Remplacez leKDC-FQDNavec leDNS publicNom répertorié pour le nœud maître Amazon EMR hébergeant le KDC. Le paramètre passwordt spécifie le mot de passe du mandataire inter-domaines, que vous spécifiez en même temps que le domaine du cluster lorsque vous créez un cluster. Le nom de domaine est dérivé du nom de domaine par défaut dans us-east-1 pour le cluster. Le Domain est le domaine Active Directory dans lequel vous créez la stratégie d'approbation qui est en minuscules par convention. L'exemple utilise ad.domain.com

Ouvrez l'invite de commande Windows avec des privilèges d'administrateur et entrez les commandes suivantes pour créer la relation d'approbation sur le contrôleur de domaine Active Directory :

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

Étape 5 : Utilisez un jeu d'options DHCP pour spécifier le contrôleur de domaine Active Directory en tant que serveur DNS VPC

Maintenant que le contrôleur de domaine Active Directory est configuré, vous devez configurer le VPC afin de l'utiliser comme serveur de nom de domaine pour la résolution des noms au sein de votre VPC. Pour ce faire, attachez un jeu d'options DHCP. Spécifiez laNom de domainecomme nom de domaine de votre cluster, par exemple,ec2.internalsi votre cluster est dans us-east-1 ouregion.compute.internalpour d'autres régions. Pour les Domain name servers (Serveurs de noms de domaine), vous devez spécifier l'adresse IP du contrôleur de domaine Active Directory (qui doit être accessible depuis le cluster) comme la première entrée, suivie de AmazonProvidedDNS (par exemple, xx.xx.xx.xx, AmazonProvidedDNS). Pour de plus amples informations, veuillez consulterModification des jeux d'options DHCP.

Étape 6 : Lancer un cluster EMR Kerberisé

  1. Dans Amazon EMR, créez une configuration de sécurité qui spécifie le contrôleur de domaine Active Directory que vous avez créé dans les étapes précédentes. Un exemple de commande est présenté ci-dessous. Remplacez le domaine, ad.domain.com, par le nom du domaine que vous avez spécifié dans Étape 2 : Lancez et installez le contrôleur de domaine Active Directory.

    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. Créez le cluster avec les attributs suivants :

    • Utilisez l’option --security-configuration pour spécifier la configuration de sécurité que vous avez créée. Dans l’exemple, nous utilisons MyKerberosConfig.

    • Utilisez la propriété SubnetId de l'--ec2-attributes option pour spécifier le sous-réseau que vous avez créé dans Étape 1 : Configurer le VPC et le sous-réseau. Dans l’exemple, nous utilisons step1-subnet.

    • Utilisation de l'AdditionalMasterSecurityGroupsetAdditionalSlaveSecurityGroupsdu--ec2-attributespour spécifier que le groupe de sécurité associé au contrôleur de domaine AD à partir deÉtape 2 : Lancez et installez le contrôleur de domaine Active Directoryest associé au nœud maître du cluster ainsi qu'aux nœuds principaux et de tâches. Dans l’exemple, nous utilisons sg-012xrlmdomain345.

    Utilisez --kerberos-attributes pour spécifier les attributs Kerberos suivants spécifiques au cluster :

    L'exemple suivant lance un cluster 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

Étape 7 : Créer des utilisateurs HDFS et définir des autorisations sur le cluster pour les comptes d'utilisateurs Active Directory

Lors de la mise en place d'une relation d'approbation avec Active Directory, Amazon EMR crée des utilisateurs Linux sur le cluster pour chaque compte d'utilisateur Active Directory. Par exemple, le nom de connexion utilisateur LiJuan dans Active Directory dispose d'un compte utilisateur Linux lijuan. Les noms d'utilisateurs Active Directory peuvent contenir des lettres majuscules, mais Linux ne prend pas en charge la casse Active Directory.

Pour autoriser vos utilisateurs à se connecter au cluster afin d'exécuter des travaux Hadoop, vous devez ajouter des annuaires d'utilisateurs HDFS pour leurs comptes utilisateur Linux et accorder à chaque utilisateur la propriété de son annuaire. Pour ce faire, nous vous recommandons d'exécuter un script enregistré dans Amazon S3 sous la forme d'une étape de cluster. Sinon, vous pouvez exécuter les commandes dans le script ci-dessous à partir de l'interface de ligne de commande sur le nœud principal. Utilisez la paire de clés EC2 que vous avez spécifiée lors de la création du cluster pour vous connecter au nœud principal via SSH en tant qu'utilisateur Hadoop. Pour plus d'informations, consultez Utiliser une key pair Amazon EC2 pour les informations d'identification SSH.

Exécutez la commande suivante pour ajouter une étape au cluster qui exécute un script, 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"]

Le contenu du fichier AddHDFSUsers.sh est le suivant :

#!/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

Groupes Active Directory mappés à des groupes Hadoop

Amazon EMR utilise System Security Services Daemon (SSD) pour mapper des groupes Active Directory aux groupes Hadoop. Pour confirmer des mappages de groupe, après la connexion au nœud maître telle que décrite dans Utilisation de SSH pour se connecter aux clusters Kerberos, vous pouvez utiliser la commande hdfs groups pour confirmer que les groupes Active Directory auxquels votre compte Active Directory appartient ont été mappés aux groupes Hadoop de l'utilisateur Hadoop correspondant sur le cluster. Vous pouvez également consulter d'autres mappages de groupe d'utilisateurs en spécifiant un ou plusieurs noms d'utilisateur avec la commande, par exemple hdfs groups lijuan. Pour de plus amples informations, veuillez consulter groupes dans le Guide de commandes HDFS d'Apache.