Didacticiel : configuration d'une approbation inter-domaines avec un domaine Active Directory - Amazon EMR

Didacticiel : configuration d'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 centre de diffusion d'une clé (KDC) dédié au cluster établit une relation d'approbation avec un autre KDC à l'aide d'un principal interdomaines qui 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 approbation inter-domaines Active Directory.

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

Important

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

Étape 1 : Configuration du VPC et du sous-réseau

Étape 2 : Lancer et installer le contrôleur de domaine Active Directory

Étape 3 : Ajouter des comptes au domaine pour le cluster EMR

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

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

Étape 6 : Lancer un cluster EMR activé pour Kerberos

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

Étape 1 : Configuration du VPC et du 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 de plus amples informations, veuillez consulter Étape 5 : Utiliser un groupe d'options DHCP pour spécifier le contrôleur de domaine Active Directory en tant que serveur DNS de VPC.

Le KDC et le contrôleur de domaine Active Directory doivent être en mesure de résoudre leurs noms de domaine respectifs. Ceci permet à Amazon EMR d'associer des ordinateurs au domaine et de configurer automatiquement les comptes 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 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 plus d'informations, consultez Étape 1 : Créer le VPC dans le Guide de démarrage 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). En effet, les noms DNS des ordinateurs du cluster sont utilisés lorsque les ordinateurs rejoignent l'annuaire Active Directory. AWS attribue des noms d'hôtes DNS basés sur l'adresse IPv4 de telle sorte que des adresses IP plus longues peuvent donner lieu à 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 plus d'informations, consultez Modification 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 plus d'informations, consultez Mise à jour de la prise en charge de DNS de 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 plus d'informations, consultez Création d'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 plus d'informations, consultez Modification de 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 plus d'informations, consultez Attribution 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 : Lancer et installer 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 en savoir plus, consultez Lancement d'une instance AWS Marketplace dans le Guide 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 activé pour Kerberos. 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 consulter la rubrique Groupes de sécurité Amazon EC2 pour les instances Linux dans le Guide de l'utilisateur Amazon EC2 pour les instances Linux.

  3. Connectez-vous à l'instance EC2 à l'aide de RDP. Pour plus d'informations, consultez Connexion à votre instance Windows à l'aide de RDP dans le Guide de l'utilisateur Amazon EC2 pour les instances Windows.

  4. Démarrez le Gestionnaire de serveurs pour 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 Comment configurer Active Directory (AD) dans Windows Server 2016.

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

Étape 3 : Ajouter des comptes au domaine pour le cluster EMR

RDP sur le contrôleur de domaine Active Directory pour créer des comptes dans les utilisateurs et ordinateurs Active Directory pour chaque utilisateur de cluster. Pour plus d'informations, consultez la section Création d'un compte d'utilisateur dans Utilisateurs et ordinateurs Active Directory sur le site Microsoft Learn. 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 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 activé pour Kerberos. Pour déléguer des privilèges de jointure d'ordinateur au compte, nous vous recommandons de créer un groupe avec des privilèges de jointure, puis d'affecter l'utilisateur au groupe. Pour plus d'informations, consultez Délégation des privilèges de jonction d'annuaire dans le Guide d'administration AWS Directory Service.

É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 le KDC-FQDN par le nom DNS public répertorié pour le nœud primaire Amazon EMR hébergeant le KDC. Le paramètre passwordt spécifie le mot de passe du principal 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 : Utiliser un groupe d'options DHCP pour spécifier le contrôleur de domaine Active Directory en tant que serveur DNS de 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. Indiquez le nom de domaine comme nom de domaine de votre cluster (par exemple, ec2.internal si votre cluster se trouve dans la région us-est-1 ou region.compute.internal pour les 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 plus d'informations, consultez Modification des jeux d'options DHCP.

Étape 6 : Lancer un cluster EMR activé pour Kerberos

  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 : Lancer et installer 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 : Configuration du VPC et du sous-réseau. Dans l’exemple, nous utilisons step1-subnet.

    • Utilisez AdditionalMasterSecurityGroups et AdditionalSlaveSecurityGroups de l'option --ec2-attributes pour spécifier que le groupe de sécurité associé au contrôleur de domaine AD de Étape 2 : Lancer et installer le contrôleur de domaine Active Directory est associé au nœud primaire 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 activé pour 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 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 Active Directory. Par exemple, le nom de connexion utilisateur LiJuan dans Active Directory dispose d'un compte 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 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 primaire. 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 primaire via SSH en tant qu'utilisateur Hadoop. Pour de plus amples informations, veuillez consulter Utilisation d'une paire de clés 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 aux 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 primaire 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.