Configurer les rôles IAM pour les demandes EMRFS adressées à Amazon S3 - 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.

Configurer les rôles IAM pour les demandes EMRFS adressées à Amazon S3

Lorsqu'une application exécutée sur un cluster fait référence à des données à l'aide des3://mydataformat, Amazon EMR utilise EMRFS pour effectuer la demande. Pour interagir avec Amazon S3, EMRFS assume les politiques d'autorisations associées à votreProfil d'instance Amazon EC2. Le même profil d'instance Amazon EC2 est utilisé indépendamment de l'utilisateur ou du groupe exécutant l'application ou de l'emplacement des données dans Amazon S3.

Si votre cluster compte plusieurs utilisateurs qui ont besoin de différents niveaux d'accès aux données d'Amazon S3 via EMRFS, vous pouvez configurer une configuration de sécurité avec des rôles IAM pour EMRFS. EMRFS peut assumer un rôle de service différent pour les instances EC2 du cluster en fonction de l'utilisateur ou du groupe qui fait la demande, ou en fonction de l'emplacement des données dans Amazon S3. Chaque rôle IAM pour EMRFS peut avoir différentes autorisations d'accès aux données dans Amazon S3. Pour en savoir plus sur le rôle de service pour les instances EC2 du cluster, veuillez consulterRôle de service pour les instances EC2 du cluster (profil d'instance EC2).

L'utilisation de rôles IAM personnalisés pour EMRFS est prise en charge dans les versions 5.10.0 et ultérieures d'Amazon EMR. Si vous utilisez une version antérieure ou si vous avez des exigences supérieures à celles des rôles IAM pour EMRFS, vous pouvez créer un fournisseur d'informations d'identification personnalisé à la place. Pour plus d'informations, veuillez consulter la rubriqueAutorisation de l'accès aux données EMRFS dans Amazon S3.

Lorsque vous utilisez une configuration de sécurité pour spécifier des rôles IAM pour EMRFS, vous configurez des mappages de rôles. Chaque mappage de rôles spécifie un rôle IAM qui correspond à des identificateurs. Ces identifiants déterminent la base de l'accès à Amazon S3 via EMRFS. Les identifiants peuvent être des utilisateurs, des groupes ou des préfixes Amazon S3 qui indiquent un emplacement de données. Lorsqu'EMRFS envoie une demande à Amazon S3, si la demande correspond à la base d'accès, les instances EC2 du cluster EMRFS assument le rôle IAM correspondant à la demande. Les autorisations IAM associées à ce rôle s'appliquent à la place des autorisations IAM associées au rôle de service pour les instances EC2 du cluster.

Les utilisateurs et les groupes dans un mappage de rôle sont des utilisateurs et des groupes Hadoop qui sont définis sur le cluster. Les utilisateurs et les groupes sont transmis à EMRFS dans le cadre de l'application à l'aide de celle-ci (par exemple, un emprunt d'identité de l'utilisateur YARN). Le préfixe Amazon S3 peut être un spécificateur de compartiment de n'importe quelle profondeur (par exemple,s3://mybucketous3://mybucket/myproject/mydata). Vous pouvez spécifier plusieurs identificateurs au sein d'un même mappage de rôle, mais ils doivent tous être du même type.

Important

Les rôles IAM pour EMRFS fournissent une isolation au niveau de l'application entre les utilisateurs de l'application. Ils ne fournissent pas d'isolement au niveau de l'hôte entre les utilisateurs sur l'hôte. Tout utilisateur ayant accès au cluster peut contourner l'isolement pour assumer l'un de ces rôles.

Lorsqu'une application de cluster envoie une demande à Amazon S3 via EMRFS, EMRFS évalue les mappages de rôles dans l'ordre descendant dans lequel ils apparaissent dans la configuration de sécurité. Si une demande effectuée via EMRFS ne correspond à aucun identifiant, EMRFS revient à utiliser le rôle de service pour les instances EC2 du cluster. Pour cette raison, nous recommandons que les politiques associées à ce rôle limitent les autorisations accordées à Amazon S3. Pour plus d'informations, consultez Rôle de service pour les instances EC2 du cluster (profil d'instance EC2).

Configuration des rôles

Avant de configurer une configuration de sécurité avec des rôles IAM pour EMRFS, planifiez et créez les rôles et les politiques d'autorisation à associer aux rôles. Pour plus d'informations, veuillez consulter la rubriqueComment fonctionnent les rôles pour les instances EC2 ?dans leIAM User Guide. Lorsque vous créez des stratégies d'autorisations, nous vous recommandons de commencer par la stratégie gérée attachée au rôle EMR par défaut pour EC2 et de modifier cette stratégie en fonction de vos besoins. Le nom du rôle par défaut estEMR_EC2_DefaultRole, et la politique gérée par défaut à modifier estAmazonElasticMapReduceforEC2Role. Pour plus d'informations, consultez Rôle de service pour les instances EC2 du cluster (profil d'instance EC2).

Mettre à jour les politiques de confiance pour assumer les autorisations

Chaque rôle qu'EMRFS utilise doit disposer d'une stratégie d'approbation qui permet au rôle EMR du cluster pour EC2 de l'assumer. De même, le rôle EMR du cluster pour EC2 doit disposer d'une stratégie d'approbation qui permet aux rôles EMRFS de l'assumer.

L'exemple de stratégie d'approbation suivant est attaché à des rôles pour EMRFS. L'instruction autorise le rôle EMR par défaut pour qu'EC2 assume le rôle. Par exemple, si vous avez deux rôles EMRFS fictifs, EMRFSRole_First et EMRFSRole_Second, cette déclaration de stratégie est ajoutée à la stratégie d'approbation des stratégies pour chacun d'entre eux.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::AWSAcctID:role/EMR_EC2_DefaultRole" }, "Action":"sts:AssumeRole" } ] }

De plus, l'exemple de déclaration de stratégie d'approbation suivant est ajouté à EMR_EC2_DefaultRole pour autoriser les deux rôles EMRFS fictifs à l'assumer.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS": ["arn:aws:iam::AWSAcctID:role/EMRFSRole_First", "arn:aws:iam::AWSAcctID:role/EMRFSRole_Second"] }, "Action":"sts:AssumeRole" } ] }
Pour mettre à jour la politique d'approbation d'un rôle IAM

Ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

  1. Choisissez Rôles, saisissez le nom du rôle dans Search (Rechercher), puis sélectionnez Role name (Nom de rôle).

  2. Choisissez Relations d'approbation, Modifier la relation d'approbation.

  3. Ajoutez une déclaration de confiance conformément àDocument de politiqueselon les directives ci-dessus, puis choisissezMettre à jour la politique.

Spécification d'un rôle en tant qu'utilisateur clé

Si un rôle autorise l'accès à un emplacement dans Amazon S3 qui est crypté à l'aide d'unAWS KMS key, assurez-vous que le rôle est spécifié en tant qu'utilisateur clé. Cela donne au rôle l'autorisation d'utiliser la clé KMS. Pour plus d'informations, consultez Politiques de clé dans AWS KMS dans le Guide du développeur AWS Key Management Service.

Configurer une configuration de sécurité avec des rôles IAM pour EMRFS

Important

Si aucun des rôles IAM pour EMRFS que vous spécifiez ne s'applique, EMRFS revient au rôle EMR pour EC2. Envisagez de personnaliser ce rôle pour restreindre les autorisations d'accès à Amazon S3 en fonction de votre application, puis de spécifier ce rôle personnalisé au lieu deEMR_EC2_DefaultRolelorsque vous créez un cluster. Pour plus d’informations, consultez Personnalisation des Rôles IAM et Spécifiez des rôles IAM personnalisés lorsque vous créez un cluster.

Pour spécifier des rôles IAM pour les demandes EMRFS adressées à Amazon S3 à l'aide de la console
  1. Créez une configuration de sécurité qui spécifie les mappages de rôle :

    1. Dans la console Amazon EMR, sélectionnezConconfiguration de sécurité,Création.

    2. Dans Name (Nom), saisissez un nom pour la configuration de sécurité. Ce nom est utilisé pour spécifier la configuration de sécurité lorsque vous créez un cluster.

    3. ChoisissezUtiliser les rôles IAM pour les demandes EMRFS à Amazon S3.

    4. Select unRôle IAMpour postuler, et sousBase d'accèssélectionnez un type d'identifiant (Users,Groups, oupréfixes S3) dans la liste et entrez les identifiants correspondants. Si vous utilisez plusieurs identifiants, séparez-les par une virgule sans insérer d'espace. Pour plus d'informations sur chaque type d'identifiant, consultez la JSON configuration reference ci-dessous.

    5. Choisissez Add role (Ajouter un rôle) pour configurer des mappages de rôle supplémentaires, comme décrit à l'étape précédente.

    6. Définissez les autres options de la configuration de sécurité selon vos besoins et choisissez Create (Créer). Pour plus d'informations, consultez Créer une configuration de sécurité.

  2. Spécifiez la configuration de sécurité créée précédemment lorsque vous créez un cluster. Pour plus d'informations, consultez Spécifier une configuration de sécurité pour un cluster.

Pour spécifier les rôles IAM pour les demandes EMRFS adressées à Amazon S3 à l'aide duAWS CLI
  1. Utilisez la commande aws emr create-security-configuration, en spécifiant un nom pour la configuration de sécurité et les détails de la configuration de sécurité au format JSON.

    L'exemple de commande ci-dessous crée une configuration de sécurité nommée EMRFS_Roles_Security_Configuration. Elle est basée sur une structure JSON dans le fichier MyEmrfsSecConfig.json, qui est enregistré dans le répertoire où la commande est exécutée.

    aws emr create-security-configuration --name EMRFS_Roles_Security_Configuration --security-configuration file://MyEmrFsSecConfig.json.

    Utilisez les directives suivantes pour la structure duMyEmrFsSecConfig.jsonfichier suivants. Vous pouvez spécifier cette structure en même temps que les structures pour d'autres options de la configuration de sécurité. Pour plus d'informations, consultez Créer une configuration de sécurité.

    Voici un exemple d'extrait JSON permettant de spécifier des rôles IAM personnalisés pour EMRFS au sein d'une configuration de sécurité. Il présente les mappages de rôles pour les trois types d'identificateurs différents, suivis d'une référence de paramètre.

    { "AuthorizationConfiguration": { "EmrFsConfiguration": { "RoleMappings": [{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_user1", "IdentifierType": "User", "Identifiers": [ "user1" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_to_MyBuckets", "IdentifierType": "Prefix", "Identifiers": [ "s3://MyBucket/","s3://MyOtherBucket/" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_AdminGroup", "IdentifierType": "Group", "Identifiers": [ "AdminGroup" ] }] } } }
    Paramètre Description

    "AuthorizationConfiguration":

    Obligatoire.

    "EmrFsConfiguration":

    Obligatoire. Contient des mappages de rôles.

      "RoleMappings":

    Obligatoire. Contient une ou plusieurs définitions de mappage de rôles. Les mappages de rôles sont évalués dans l'ordre descendant dans lequel ils apparaissent. Si un mappage de rôles s'avère vrai pour un appel de données EMRFS dans Amazon S3, aucun autre mappage de rôles n'est évalué et EMRFS utilise le rôle IAM spécifié pour la demande. Les mappages de rôles se composent des paramètres requis suivants :

       "Role":

    Spécifie l'identifiant ARN d'un rôle IAM au formatarn:aws:iam::account-id:role/role-name. Il s'agit du rôle IAM qu'Amazon EMR assume si la demande EMRFS adressée à Amazon S3 correspond à l'un desIdentifiersspécifiée.

       "IdentifierType":

    Il peut avoir l'une des parties suivantes :

    • "User"indique que les identifiants sont un ou plusieurs utilisateurs Hadoop, qui peuvent être des utilisateurs de comptes Linux ou des utilisateurs principaux de Kerberos. Lorsque la demande EMRFS provient de l'utilisateur ou des utilisateurs spécifiés, le rôle IAM est assumé.

    • "Prefix"spécifie que l'identifiant est un emplacement Amazon S3. Le rôle IAM est assumé pour les appels vers l'emplacement ou les emplacements avec les préfixes spécifiés. Par exemple, le préfixe s3://mybucket/allumettes s3://mybucket/mydir ets3://mybucket/yetanotherdir.

    • "Group"indique que les identifiants sont un ou plusieursGroupes Hadoop. Le rôle IAM est assumé si la demande provient d'un utilisateur du ou des groupes spécifiés.

       "Identifiers":

    Spécifie un ou plusieurs identifiants du type d'identifiant approprié. Séparez les différents identifiants par des virgules, sans espaces.

  2. Utilisez la commande aws emr create-cluster pour créer un cluster et spécifiez la configuration de sécurité créée à l'étape précédente.

    L'exemple suivant crée un cluster avec les principales applications Hadoop par défaut installées. Le cluster utilise la configuration de sécurité créée précédemment en tant que EMRFS_Roles_Security_Configuration et utilise également un rôle EMR pour EC2, EC2_Role_EMR_Restrict_S3, qui est spécifié à l'aide de l'argument InstanceProfile du paramètre --ec2-attributes.

    Note

    Les caractères de suite de ligne Linux (\) sont inclus pour des raisons de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un curseur (^).

    aws emr create-cluster --name MyEmrFsS3RolesCluster \ --release-label emr-5.36.0 --ec2-attributes InstanceProfile=EC2_Role_EMR_Restrict_S3,KeyName=MyKey \ --instance-type m5.xlarge --instance-count 3 \ --security-configuration EMRFS_Roles_Security_Configuration