Configuration IAM des rôles pour les EMRFS demandes 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.

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

Note

La fonctionnalité de mappage des EMRFS rôles décrite sur cette page a été améliorée avec l'introduction d'Amazon S3 Access Grants dans Amazon EMR 6.15.0. Pour une solution de contrôle d'accès évolutive pour vos données dans Amazon S3, nous vous recommandons d'utiliser S3 Access Grants avec Amazon EMR.

Lorsqu'une application exécutée sur un cluster référence des données à l'aide du s3://mydata format EMR utilisé par Amazon EMRFS pour effectuer la demande. Pour interagir avec Amazon S3, vous EMRFS devez respecter les politiques d'autorisation associées à votre profil d'EC2instance Amazon. Le même profil d'EC2instance Amazon est utilisé quel que soit l'utilisateur ou le groupe exécutant l'application ou l'emplacement des données dans Amazon S3.

Si vous avez un cluster avec plusieurs utilisateurs qui ont besoin de différents niveaux d'accès aux données dans Amazon S3EMRFS, vous pouvez configurer une configuration de sécurité avec IAM des rôles pourEMRFS. EMRFSpeut assumer un rôle de service différent pour les EC2 instances de 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 IAM rôle EMRFS peut avoir des autorisations différentes pour l'accès aux données dans Amazon S3. Pour plus d'informations sur le rôle de service des EC2 instances de cluster, consultezRôle de service pour les EC2 instances de cluster (profil d'EC2instance).

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

Lorsque vous utilisez une configuration de sécurité pour spécifier IAM des rôlesEMRFS, vous configurez des mappages de rôles. Chaque mappage de rôle spécifie un IAM rôle correspondant à des identifiants. Ces identifiants déterminent la base de l'accès à Amazon S3 viaEMRFS. Les identifiants peuvent être des utilisateurs, des groupes ou des préfixes Amazon S3 qui indiquent un emplacement de données. Lorsque EMRFS vous envoyez une demande à Amazon S3, si la demande correspond à la base d'accès, EMRFS les EC2 instances de cluster assument le IAM rôle correspondant à la demande. Les IAM autorisations associées à ce rôle s'appliquent à la place des IAM autorisations associées au rôle de service pour les EC2 instances de 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 contexte de l'application qui les utilise (par exemple, usurpation d'identité YARN d'utilisateur). Le préfixe Amazon S3 peut être un spécificateur de compartiment de quelque profondeur que ce soit (par exemple, s3://amzn-s3-demo-bucket ou s3://amzn-s3-demo-bucket/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

IAMrôles pour EMRFS fournir 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 viaEMRFS, 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 revenez à l'utilisation du rôle de service pour les EC2 instances de cluster. Pour cette raison, nous recommandons que les stratégies attachées à ce rôle limitent les autorisations pour Amazon S3. Pour de plus amples informations, veuillez consulter Rôle de service pour les EC2 instances de cluster (profil d'EC2instance).

Configuration des rôles

Avant de configurer une configuration de sécurité avec IAM des rôlesEMRFS, planifiez et créez les rôles et les politiques d'autorisation à associer aux rôles. Pour plus d'informations, consultez Comment fonctionnent les rôles pour EC2 les instances ? dans le guide de IAM l'utilisateur. Lorsque vous créez des politiques d'autorisation, nous vous recommandons de commencer par la politique gérée associée au EMR rôle Amazon par défaut pourEC2, puis de modifier cette politique en fonction de vos besoins. Le nom du rôle par défaut est EMR_EC2_DefaultRole et la stratégie gérée pour modifier la valeur par défaut est AmazonElasticMapReduceforEC2Role. Pour de plus amples informations, veuillez consulter Rôle de service pour les EC2 instances de cluster (profil d'EC2instance).

Mise à jour des politiques d'approbation pour prendre en charge les autorisations de rôle

Chaque rôle EMRFS utilisé doit avoir une politique de confiance qui autorise le EMR rôle Amazon du cluster EC2 à l'assumer. De même, le EMR rôle Amazon du cluster pour EC2 doit être soumis à une politique de confiance autorisant les EMRFS rôles à l'assumer.

L'exemple de politique de confiance suivant est associé aux rôles pourEMRFS. L'instruction autorise le EMR rôle Amazon par défaut EC2 à assumer le rôle. Par exemple, si vous avez deux EMRFS rôles fictifs EMRFSRole_First et EMRFSRole_Second que cette déclaration de politique est ajoutée aux politiques de confiance de chacun d'entre eux.

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

En outre, l'exemple de déclaration de politique de confiance suivant est ajouté au EMR_EC2_DefaultRole pour permettre aux deux EMRFS rôles fictifs de 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 de confiance d'un IAM rôle

Ouvrez la IAM console à 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. Ajouter une instruction d'approbation en fonction du Document de stratégie, conformément aux directives ci-dessus, puis choisissez Mettre à jour la stratégie de confiance.

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

Si un rôle permet d'accéder à un emplacement dans Amazon S3 qui est chiffré à l'aide d'une AWS 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 KMS clé. Pour plus d’informations, consultez Politiques de clé dans AWS KMS dans le Guide du développeur AWS Key Management Service .

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

Important

Si aucun des IAM rôles EMRFS que vous spécifiez ne s'appliqueEMRFS, revenez au EMR rôle Amazon pourEC2. Pensez à personnaliser ce rôle pour limiter les autorisations à Amazon S3 en fonction des besoins de votre application, puis spécifiez ce rôle personnalisé au lieu de EMR_EC2_DefaultRole lorsque vous créez un cluster. Pour plus d’informations, consultez Personnalisez IAM les rôles avec Amazon EMR et Spécifiez IAM des rôles personnalisés lorsque vous créez un cluster.

Pour spécifier IAM les rôles pour les EMRFS demandes 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 EMR console Amazon, sélectionnez Configurations de sécurité, puis Créer.

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

    4. Sélectionnez un IAMrôle à appliquer, puis sous Base d'accès, sélectionnez un type d'identifiant (utilisateurs, groupes ou pré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 de plus amples informations, veuillez consulter Créez une configuration de sécurité à l'aide de EMR la console Amazon ou du AWS CLI.

  2. Spécifiez la configuration de sécurité créée précédemment lorsque vous créez un cluster. Pour de plus amples informations, veuillez consulter Spécifier une configuration de sécurité pour un EMR cluster Amazon.

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

    L'exemple de commande ci-dessous crée une configuration de sécurité nommée EMRFS_Roles_Security_Configuration. Il est basé sur une JSON structure du fichierMyEmrfsSecConfig.json, qui est enregistrée 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 instructions suivantes pour la structure du fichier MyEmrFsSecConfig.json. Vous pouvez spécifier cette structure en même temps que les structures pour d'autres options de la configuration de sécurité. Pour de plus amples informations, veuillez consulter Créez une configuration de sécurité à l'aide de EMR la console Amazon ou du AWS CLI.

    Voici un exemple d'JSONextrait permettant de spécifier des IAM rôles personnalisés EMRFS au sein d'une configuration de sécurité. Il montre les mappages de rôles pour les trois types d'identifiants 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 d'apparition du haut vers le bas. Si un mappage de rôle est considéré comme vrai pour un EMRFS appel de données dans Amazon S3, aucun autre mappage de rôle n'est évalué et EMRFS utilise le IAM rôle spécifié pour la demande. Les mappages de rôles sont constitués des paramètres obligatoires suivants :

       "Role":

    Spécifie l'ARNidentifiant d'un IAM rôle dans le formatarn:aws:iam::account-id:role/role-name. C'est le IAM rôle qu'Amazon EMR assume si la EMRFS demande adressée à Amazon S3 correspond à l'une des valeurs Identifiers spécifiées.

       "IdentifierType":

    Les valeurs suivantes sont possibles :

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

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

    • "Group" indique que les identifiants sont un ou plusieurs groupes Hadoop. Le IAM rôle 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 identifiants multiples par des virgules sans espace.

  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 ci-dessus EMRFS_Roles_Security_Configuration et utilise également un EMR rôle Amazon personnalisé pour EC2EC2_Role_EMR_Restrict_S3, qui est spécifié à l'aide de l'InstanceProfileargument du --ec2-attributes paramètre.

    Note

    Les caractères de continuation 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 caret (^).

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