Utilisation d’Amazon S3 Access Grants avec Amazon EMR - 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.

Utilisation d’Amazon S3 Access Grants avec Amazon EMR

Présentation de S3 Access Grants pour Amazon EMR

Disponible à partir de la version 6.15.0 d’Amazon EMR, Amazon S3 Access Grants fournit une solution de contrôle d’accès évolutive que vous pouvez utiliser pour augmenter l’accès à vos données Amazon S3 depuis Amazon EMR. Si vous disposez d’une configuration d’autorisations complexe ou importante, vous pouvez utiliser Access Grants pour mettre à l’échelle les autorisations de données S3 pour les utilisateurs, les rôles et les applications de votre cluster.

Utilisez S3 Access Grants pour augmenter l’accès aux données Amazon S3 au-delà des autorisations accordées par le rôle d’exécution ou les rôles IAM associés aux identités ayant accès à votre cluster EMR. Pour plus d’informations, voir la rubrique Gestion des accès avec S3 Access Grants du Guide de l’utilisateur Amazon S3.

Pour savoir comment utiliser S3 Access Grants avec d’autres déploiements Amazon EMR, consultez la documentation suivante :

Fonctionnement d’Amazon EMR avec S3 Access Grants

La version 6.15.0 et les versions ultérieures d’Amazon EMR fournissent une intégration native avec S3 Access Grants. Vous pouvez activer S3 Access Grants sur Amazon EMR et exécuter des tâches Spark. Lorsqu’une tâche Spark demande à accéder aux données S3, Amazon S3 fournit des informations d’identification temporaires limitées au compartiment, au préfixe ou à l’objet concerné.

Voici un aperçu général de la manière dont Amazon EMR accède aux données protégées par S3 Access Grants.

Fonctionnement d’Amazon EMR avec S3 Access Grants
  1. Un utilisateur soumet une tâche Amazon EMR Spark qui utilise des données stockées dans Amazon S3.

  2. Amazon EMR demande à S3 Access Grants l’autorisation d’accéder au compartiment, au préfixe ou à l’objet concerné au nom de cet utilisateur.

  3. Amazon S3 renvoie des informations d'identification temporaires sous la forme d'un jeton AWS Security Token Service (STS) pour l'utilisateur. Le jeton permet uniquement d’accéder au compartiment, au préfixe ou à l’objet S3 concerné.

  4. Amazon EMR utilise le jeton STS pour récupérer les données de S3.

  5. Amazon EMR reçoit les données de S3 et renvoie les résultats à l’utilisateur.

Considérations relatives à S3 Access Grants avec Amazon EMR

Tenez compte des comportements et des limitations suivants lorsque vous utilisez S3 Access Grants avec Amazon EMR.

Prise en charge des fonctionnalités

  • S3 Access Grants est pris en charge à partir de la version 6.15.0 d’Amazon EMR.

  • Spark est le seul moteur de requêtes pris en charge lorsque vous utilisez S3 Access Grants avec Amazon EMR.

  • Delta Lake et Hudi sont les seuls formats de table ouverts pris en charge lorsque vous utilisez S3 Access Grants avec Amazon EMR.

  • Les fonctionnalités Amazon EMR suivantes ne sont pas prises en charge pour une utilisation avec S3 Access Grants :

    • Tables Apache Iceberg

    • Authentification native LDAP

    • Authentification native Apache Ranger

    • AWS CLI demandes adressées à Amazon S3 qui utilisent des rôles IAM

    • Accès S3 via l'open source S3A protocole ;

  • L’option fallbackToIAM n’est pas prise en charge pour les clusters EMR qui utilisent la propagation d’identité approuvée avec IAM Identity Center.

  • S3 Access Grants with n' AWS Lake Formation est pris en charge qu'avec les clusters Amazon EMR exécutés sur Amazon. EC2

Considérations comportementales

  • L’intégration native d’Apache Ranger à Amazon EMR permet une fonctionnalité semblable à S3 Access Grants dans le cadre du plug-in EMRFS S3 Apache Ranger. Si vous utilisez Apache Ranger pour un contrôle précis des accès (FGAC), nous vous recommandons d’utiliser ce plug-in au lieu de S3 Access Grants.

  • Amazon EMR fournit un cache d’informations d’identification dans EMRFS afin de garantir qu’un utilisateur n’a pas besoin de demander à plusieurs reprises les mêmes informations d’identification dans le cadre d’une tâche Spark. Par conséquent, Amazon EMR demande toujours le niveau de privilège par défaut lorsqu’il demande des informations d’identification. Pour plus d’informations, voir la rubrique Demande d’accès aux données S3 du Guide de l’utilisateur Amazon S3.

  • Dans le cas où un utilisateur exécute une action non prise en charge par S3 Access Grants, Amazon EMR est configuré pour utiliser le rôle IAM spécifié pour l’exécution de la tâche. Pour de plus amples informations, veuillez consulter Basculement vers les rôles IAM.

Lancement d’un cluster Amazon EMR avec les autorisations d’accès S3

Cette section décrit comment lancer un cluster EMR qui s'exécute sur Amazon EC2 et utilise S3 Access Grants pour gérer l'accès aux données dans Amazon S3. Pour savoir comment utiliser S3 Access Grants avec d’autres déploiements Amazon EMR, consultez la documentation suivante :

Suivez les étapes ci-dessous pour lancer un cluster EMR qui s'exécute sur Amazon EC2 et utilise S3 Access Grants pour gérer l'accès aux données dans Amazon S3.

  1. Définissez un rôle d’exécution de tâches pour votre cluster EMR. Ajoutez les autorisations IAM s3:GetDataAccess et s3:GetAccessGrantsInstanceForPrefix requises pour l’exécution des tâches Spark :

    { "Effect": "Allow", "Action": [ "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": [ //LIST ALL INSTANCE ARNS THAT THE ROLE IS ALLOWED TO QUERY "arn:aws_partition:s3:Region:account-id1:access-grants/default", "arn:aws_partition:s3:Region:account-id2:access-grants/default" ] }
    Note

    Avec Amazon EMR, S3 Access Grants augmente les autorisations définies dans les rôles IAM. Si les rôles IAM que vous spécifiez pour l’exécution des tâches contiennent des autorisations permettant d’accéder directement à S3, les utilisateurs peuvent être en mesure d’accéder à davantage de données que celles que vous définissez dans S3 Access Grants.

  2. Ensuite, utilisez le AWS CLI pour créer un cluster avec Amazon EMR 6.15 ou version ultérieure et la emrfs-site classification pour activer les subventions d'accès S3, comme dans l'exemple suivant :

    aws emr create-cluster --release-label emr-6.15.0 \ --instance-count 3 \ --instance-type m5.xlarge \ --configurations '[{"Classification":"emrfs-site", "Properties":{"fs.s3.s3AccessGrants.enabled":"true", "fs.s3.s3AccessGrants.fallbackToIAM":"false"}}]'

Subventions d'accès S3 avec AWS Lake Formation

Si vous utilisez Amazon EMR dans le cadre de l’intégration àAWS Lake Formation, vous pouvez utiliser Amazon S3 Access Grants pour un accès direct ou tabulaire aux données d’Amazon S3.

Note

S3 Access Grants with n' AWS Lake Formation est pris en charge qu'avec les clusters Amazon EMR exécutés sur Amazon. EC2

Accès direct

L'accès direct implique tous les appels pour accéder aux données S3 qui n'appellent pas l'API du service AWS Glue que Lake Formation utilise comme métastore avec Amazon EMR, par exemple, pour appeler : spark.read

spark.read.csv("s3://...")

Lorsque vous utilisez S3 Access Grants AWS Lake Formation sur Amazon EMR, tous les modèles d'accès direct passent par S3 Access Grants pour obtenir des informations d'identification S3 temporaires.

Accès tabulaire

L’accès tabulaire est utilisé lorsque Lake Formation invoque l’API du métastore pour accéder à votre emplacement S3, par exemple, pour interroger les données d’une table :

spark.sql("select * from test_tbl")

Lorsque vous utilisez S3 Access Grants AWS Lake Formation sur Amazon EMR, tous les modèles d'accès tabulaires passent par Lake Formation.

Basculement vers les rôles IAM

Si un utilisateur tente d’effectuer une action non prise en charge par S3 Access Grants, Amazon EMR utilise par défaut le rôle IAM spécifié pour l’exécution des tâches lorsque le paramètre fallbackToIAM est défini sur true. Cela permet aux utilisateurs de basculer vers leur rôle d’exécution des tâches pour fournir des informations d’identification pour accéder à S3 dans les scénarios non couverts par S3 Access Grants.

Lorsque le paramètre fallbackToIAM est activé, les utilisateurs peuvent accéder aux données autorisées par Access Grants. S’il n’existe pas de jeton S3 Access Grants pour les données concernées, Amazon EMR vérifie l’autorisation nécessaire est accordée son rôle d’exécution des tâches.

Note

Nous vous recommandons de tester vos autorisations d’accès avec le paramètre fallbackToIAM activé, même si vous prévoyez de le désactiver pour les charges de travail de production. Pour les tâches Spark, les utilisateurs peuvent accéder à tous les jeux d’autorisations par d’autres moyens à l’aide de leurs informations d’identification IAM. Lorsqu’elles sont activées sur les clusters EMR, les octrois d’accès de S3 permettent aux tâches Spark d’accéder aux emplacements S3. Veillez à protéger ces emplacements S3 contre tout accès en dehors d’EMRFS. Veillez par exemple à protéger les emplacements S3 contre tout accès par des clients S3 utilisés dans les blocs-notes ou par des applications non prises en charge par S3 Access Grants comme Hive ou Presto.