Autorisation d'accès aux données EMRFS dans 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.

Autorisation d'accès aux données EMRFS dans Amazon S3

Par défaut, le rôle EMR pour EC2 détermine les autorisations d'accès aux données EMRFS dans Amazon S3. Les politique IAM qui sont attachées à ce rôle s'appliquent, quel que soit l'utilisateur ou le groupe qui effectuent la demande via le système EMRFS. L’argument par défaut est EMR_EC2_DefaultRole. Pour plus d'informations, consultez la section Rôle de service pour les EC2 instances de cluster (profil d'EC2 instance).

À partir de la version 5.10.0 d'Amazon EMR, vous pouvez utiliser une configuration de sécurité pour spécifier les rôles IAM pour EMRFS. Cela vous permet de personnaliser les autorisations pour les demandes EMRFS à Amazon S3 pour les clusters ayant plusieurs utilisateurs. Vous pouvez spécifier différents rôles IAM pour différents utilisateurs et groupes, et pour différents emplacements de compartiment Amazon S3 en fonction du préfixe dans Amazon S3. Lorsqu'EMRFS envoie une demande à Amazon S3 qui correspond aux utilisateurs, aux groupes ou aux emplacements que vous spécifiez, le cluster utilise le rôle correspondant que vous spécifiez au lieu du rôle EMR pour lequel vous spécifiez. EC2 Pour plus d'informations, consultez Configuration de rôles IAM pour les demandes EMRFS à Amazon S3.

Sinon, si les exigences de votre solution Amazon EMR ne sont pas couvertes par les rôles IAM pour EMRFS, vous pouvez définir une classe de fournisseur d'informations d'identification personnalisées, ce qui vous permet de personnaliser l'accès aux données EMRFS dans Amazon S3.

Création d'un fournisseur d'informations d'identification personnalisées pour les données EMRFS dans Amazon S3

Pour créer un fournisseur d'informations d'identification personnalisé, vous implémentez les classes AWSCredentialsProvider et Hadoop Configurable.

Pour une explication détaillée de cette approche, voir Analyser en toute sécurité les données d'un autre AWS compte avec EMRFS sur le blog AWS Big Data. Le billet de blog inclut un didacticiel qui vous guide tout au long du processusend-to-end, de la création de rôles IAM au lancement du cluster. Il fournit aussi un exemple de code Java qui implémente la classe fournisseur d'informations d'identification personnalisées.

La procédure de base est la suivante :

Pour spécifier un fournisseur d'informations d'identification personnalisées
  1. Créez une classe fournisseur d'informations d'identification personnalisées compilée comme fichier JAR.

  2. Exécutez un script comme action d'amorçage pour copier le fichier JAR du fournisseur d'informations d'identification personnalisées sur l'emplacement /usr/share/aws/emr/emrfs/auxlib du nœud principal du cluster. Pour plus d'informations sur les actions d'amorçage, consultez (Facultatif) Création d'actions d'amorçage pour installer des logiciels supplémentaires.

  3. Personnalisez la classification emrfs-site pour spécifier la classe que vous implémentez dans le fichier JAR. Pour plus d'informations sur la spécification d'objets de configuration pour personnaliser les applications, consultez la section Configuration des applications dans le Guide de version Amazon EMR.

    L'exemple suivant illustre une commande create-cluster qui lance un cluster Hive avec les paramètres de configuration courants et qui inclut également :

    • Une action d'amorçage qui exécute le script, copy_jar_file.sh, enregistré sur amzn-s3-demo-bucket dans Amazon S3.

    • Une classification emrfs-site qui spécifie un fournisseur d'informations d'identification personnalisées défini dans le fichier JAR comme MyCustomCredentialsProvider

    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 --applications Name=Hive \ --bootstrap-actions '[{"Path":"s3://amzn-s3-demo-bucket/copy_jar_file.sh","Name":"Custom action"}]' \ --ec2-attributes '{"KeyName":"MyKeyPair","InstanceProfile":"EMR_EC2_DefaultRole",\ "SubnetId":"subnet-xxxxxxxx","EmrManagedSlaveSecurityGroup":"sg-xxxxxxxx",\ "EmrManagedMasterSecurityGroup":"sg-xxxxxxxx"}' \ --service-role EMR_DefaultRole_V2 --enable-debugging --release-label emr-7.6.0 \ --log-uri 's3n://amzn-s3-demo-bucket/' --name 'test-awscredentialsprovider-emrfs' \ --instance-type=m5.xlarge --instance-count 3 \ --configurations '[{"Classification":"emrfs-site",\ "Properties":{"fs.s3.customAWSCredentialsProvider":"MyAWSCredentialsProviderWithUri"},\ "Configurations":[]}]'