Didacticiel : configuration d'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 : 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 distribution de clés (KDC) dédié au cluster établit une relation de confiance avec un autre KDC en utilisant un principe inter-domaines qui existe dans les deux. KDCs Le nom et le mot de passe du principal correspondent exactement.

Une confiance entre domaines nécessite qu'ils KDCs puissent communiquer entre eux via le réseau et résoudre les noms de domaine de chacun. Les étapes permettant d'établir une relation de confiance entre domaines avec un contrôleur de domaine Microsoft AD exécuté en tant qu' EC2 instance sont fournies ci-dessous, ainsi qu'un exemple de configuration réseau fournissant la connectivité et la résolution de nom de domaine requises. Toute configuration réseau autorisant le trafic réseau requis entre les deux KDCs 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 entre 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 CIDR pour le cluster EMR afin que IPv4 toutes les adresses comportent moins de neuf caractères (par exemple, 10.0.0.0/16). Cela est dû au fait que les noms DNS des ordinateurs du cluster sont utilisés lorsque les ordinateurs rejoignent le répertoire Active Directory. AWS attribue des noms d'hôte DNS en fonction de l' IPv4 adresse, de telle sorte que des 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 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' EC2 instance du contrôleur de domaine, celui-ci doit avoir une IPv4 adresse publique statique pour que vous puissiez vous y connecter via RDP. La méthode la plus simple consiste à configurer votre sous-réseau pour attribuer automatiquement des adresses publiques IPv4 . Ce n'est pas le paramètre par défaut lorsqu'un sous-réseau est créé. Pour plus d'informations, consultez la section Modification de l'attribut d' IPv4 adressage 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 Attribuer une IPv4 adresse publique lors du lancement de l'instance.

  7. Lorsque vous avez terminé, notez votre VPC et votre sous-réseau. IDs 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 EC2 instance basée sur l'AMI de base Microsoft Windows Server 2016. Nous vous recommandons le type d'instance m4.xlarge ou plus. Pour plus d'informations, consultez la section Lancement d'une AWS Marketplace instance dans le guide de EC2 l'utilisateur Amazon.

  2. Notez l'ID de groupe du groupe de sécurité associé à l'EC2 instance. Vous en avez besoin pour Étape 6 : Lancer un cluster EMR activé pour Kerberos. Nous utilisonssg-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 plus d'informations, consultez les groupes EC2 de sécurité Amazon pour les instances Linux dans le guide de EC2 l'utilisateur Amazon.

  3. Connectez-vous à l' EC2 instance à l'aide du protocole RDP. Pour plus d'informations, consultez la section Connexion à votre instance Windows dans le guide de EC2 l'utilisateur Amazon.

  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 indiqué pour le nœud principal 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 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 première entrée, suivie du AmazonProvidedDNS (par exemple xx.xx.xx.xx, AmazonProvided DNS). 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. Nous utilisons MyKerberosConfig dans l'exemple.

    • 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. Nous utilisons step1-subnet dans l'exemple.

    • 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. Nous utilisons sg-012xrlmdomain345 dans l'exemple.

    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 EC2 clés 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 de plus amples informations, veuillez consulter Utiliser une paire de EC2 clés pour les informations d'identification SSH pour Amazon EMR.

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://amzn-s3-demo-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 à des clusters Kerberisés avec Amazon EMR, 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.