Créer une fonction du service EMR Studio - 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.

Créer une fonction du service EMR Studio

À propos de la fonction du service EMR Studio

Chaque EMR Studio utilise un rôle IAM doté d'autorisations lui permettant d'interagir avec d'autres services AWS. Cette fonction du service doit inclure des autorisations permettant à EMR Studio d'établir un canal réseau sécurisé entre les espaces de travail et les clusters, de stocker des fichiers de bloc-notes dans Amazon S3 Control et d'accéder à AWS Secrets Manager tout en liant un espace de travail à un référentiel Git.

Utilisez la fonction du service Studio (au lieu des politiques de session) pour définir toutes les autorisations d'accès Amazon S3 pour le stockage des fichiers de bloc-notes et pour définir les autorisations d'accès AWS Secrets Manager.

Comment créer une fonction du service pour EMR Studio sur Amazon EC2 ou Amazon EKS

  1. Suivez les instructions de la rubrique Création d’un rôle pour la délégation d’autorisations à un service AWS pour créer la fonction du service en utilisant la politique d’approbation suivante.

    Important

    La politique d'approbation suivante inclut les clés de condition globales aws:SourceArn et aws:SourceAccount pour limiter les autorisations que vous accordez à EMR Studio pour des ressources particulières de votre compte. Cela peut vous protéger contre le problème de l'adjoint confus.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "elasticmapreduce.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "<account-id>" }, "ArnLike": { "aws:SourceArn": "arn:aws:elasticmapreduce:<region>:<account-id>:*" } } } ] }
  2. Supprimez les autorisations de rôle par défaut. Incluez ensuite les autorisations issues de l'exemple de politique d'autorisation IAM suivant. Vous pouvez également créer une politique personnalisée qui utilise les Autorisations relatives aux fonctions de service EMR Studio.

    Important
    • Pour que le contrôle d’accès Amazon EC2 basé sur les balises fonctionne avec EMR Studio, vous devez définir l’accès pour l’API ModifyNetworkInterfaceAttribute comme indiqué dans la politique suivante.

    • Pour qu’EMR Studio puisse fonctionner avec la fonction du service, les déclarations AllowAddingEMRTagsDuringDefaultSecurityGroupCreation et AllowAddingTagsDuringEC2ENICreation doivent rester inchangées.

    • Pour utiliser l'exemple de politique, vous devez baliser les ressources suivantes avec la clé "for-use-with-amazon-emr-managed-policies" et la valeur "true".

      • Votre cloud privé virtuel (VPC) Amazon pour EMR Studio.

      • Chaque sous-réseau que vous voulez utiliser avec le Studio.

      • Tous les groupes de sécurité EMR Studio personnalisés. Vous devez baliser tous les groupes de sécurité que vous avez créés pendant la période d'essai d'EMR Studio si vous souhaitez continuer à les utiliser.

      • Secrets conservés dans AWS Secrets Manager que les utilisateurs Studio utilisent pour lier les référentiels Git à un espace de travail.

      Vous pouvez appliquer des balises aux ressources à l'aide de l'onglet Balises sur l'écran des ressources correspondant dans l'AWS Management Console.

    Le cas échéant, remplacez * dans "Resource":"*" par la politique suivante pour spécifier l’Amazon Resource Name (ARN) des ressources concernées par l’instruction pour votre cas d’utilisation.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEMRReadOnlyActions", "Effect": "Allow", "Action": [ "elasticmapreduce:ListInstances", "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListSteps" ], "Resource": "*" }, { "Sid": "AllowEC2ENIActionsWithEMRTags", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true" } } }, { "Sid": "AllowEC2ENIAttributeAction", "Effect": "Allow", "Action": [ "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Sid": "AllowEC2SecurityGroupActionsWithEMRTags", "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:DeleteNetworkInterfacePermission" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true" } } }, { "Sid": "AllowDefaultEC2SecurityGroupsCreationWithEMRTags", "Effect": "Allow", "Action": [ "ec2:CreateSecurityGroup" ], "Resource": [ "arn:aws:ec2:*:*:security-group/*" ], "Condition": { "StringEquals": { "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true" } } }, { "Sid": "AllowDefaultEC2SecurityGroupsCreationInVPCWithEMRTags", "Effect": "Allow", "Action": [ "ec2:CreateSecurityGroup" ], "Resource": [ "arn:aws:ec2:*:*:vpc/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true" } } }, { "Sid": "AllowAddingEMRTagsDuringDefaultSecurityGroupCreation", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:security-group/*", "Condition": { "StringEquals": { "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true", "ec2:CreateAction": "CreateSecurityGroup" } } }, { "Sid": "AllowEC2ENICreationWithEMRTags", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ], "Condition": { "StringEquals": { "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true" } } }, { "Sid": "AllowEC2ENICreationInSubnetAndSecurityGroupWithEMRTags", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true" } } }, { "Sid": "AllowAddingTagsDuringEC2ENICreation", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateNetworkInterface" } } }, { "Sid": "AllowEC2ReadOnlyActions", "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeNetworkInterfaces", "ec2:DescribeTags", "ec2:DescribeInstances", "ec2:DescribeSubnets", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Sid": "AllowSecretsManagerReadOnlyActionsWithEMRTags", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:*", "Condition": { "StringEquals": { "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true" } } }, { "Sid": "AllowWorkspaceCollaboration", "Effect": "Allow", "Action": [ "iam:GetUser", "iam:GetRole", "iam:ListUsers", "iam:ListRoles", "sso:GetManagedApplicationInstance", "sso-directory:SearchUsers" ], "Resource": "*" } ] }
  3. Donnez à votre fonction du service un accès en lecture et en écriture à votre emplacement Amazon S3 pour EMR Studio. Utilisez l'ensemble minimum d'autorisations suivant. Pour plus d'informations, consultez l'exemple Amazon S3 : autorise l'accès en lecture et en écriture aux objets d'un compartiment S3, par programmation et dans la console.

    "s3:PutObject", "s3:GetObject", "s3:GetEncryptionConfiguration", "s3:ListBucket", "s3:DeleteObject"

    Si vous chiffrez votre compartiment Amazon S3, incluez les autorisations suivantes pour AWS Key Management Service.

    "kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:DescribeKey"
  4. Pour contrôler l’accès aux secrets Git au niveau utilisateur, ajoutez des autorisations basées sur des balises à secretsmanager:GetSecretValue dans la politique de rôle d’utilisateur d’EMR Studio et supprimez les autorisations de la politique secretsmanager:GetSecretValue de la politique de la fonction du service EMR Studio. Pour plus d’informations sur la définition d’autorisations utilisateur précises, voir la rubrique Créer des politiques d'autorisation pour les utilisateurs d'EMR Studio.

Fonction du service minimum pour EMR sans serveur

Si vous souhaitez exécuter des charges de travail interactives avec EMR sans serveur via des blocs-notes EMR Studio, appliquez la même politique d'approbation que celle que vous avez utilisée pour configurer EMR Studio dans la section précédente, Comment créer une fonction du service pour EMR Studio sur Amazon EC2 ou Amazon EKS.

Pour votre Politique IAM, la politique minimale viable comporte les autorisations suivantes. Mettez à jour bucket-name avec le nom du compartiment que vous prévoyez d'utiliser lors de la configuration de votre EMR Studio et de votre espace de travail. EMR Studio utilise le compartiment pour sauvegarder les espaces de travail et les fichiers de bloc-notes de votre Studio.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ObjectActions", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::bucket-name/*"] }, { "Sid": "BucketActions", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetEncryptionConfiguration" ], "Resource": ["arn:aws:s3:::bucket-name"] } ] }

Si vous prévoyez d'utiliser un compartiment Amazon S3 chiffré, ajoutez les autorisations suivantes à votre politique :

"kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:DescribeKey"

Autorisations relatives aux fonctions de service EMR Studio

Le tableau suivant répertorie les opérations effectuées par EMR Studio à l'aide de la fonction du service, ainsi que les actions IAM requises pour chaque opération.

Opération Actions
Établir un canal réseau sécurisé entre un espace de travail et un cluster EMR, et effectuer les actions de nettoyage nécessaires.
"ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:ModifyNetworkInterfaceAttribute", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateSecurityGroup", "ec2:DescribeSecurityGroups", "ec2:RevokeSecurityGroupEgress", "ec2:DescribeTags", "ec2:DescribeInstances", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "elasticmapreduce:ListInstances", "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListSteps"
Utiliser les informations d'identification Git stockées dans AWS Secrets Manager pour lier des référentiels Git à un espace de travail.
"secretsmanager:GetSecretValue"
Appliquer les balises AWS à l'interface réseau et aux groupes de sécurité par défaut qu'EMR Studio crée lors de la configuration du canal réseau sécurisé. Pour plus d'informations, veuillez consulter la rubrique Balisage des ressources AWS.
"ec2:CreateTags"
Accédez ou chargez les fichiers de bloc-notes et les métadonnées sur Amazon S3.
"s3:PutObject", "s3:GetObject", "s3:GetEncryptionConfiguration", "s3:ListBucket", "s3:DeleteObject"

Si vous utilisez un compartiment Amazon S3 chiffré, incluez les autorisations suivantes.

"kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:DescribeKey"
Activer et configurer la collaboration dans l'espace de travail.
"iam:GetUser", "iam:GetRole", "iam:ListUsers", "iam:ListRoles", "sso:GetManagedApplicationInstance", "sso-directory:SearchUsers"
Chiffrez les blocs-notes et les fichiers de l'espace de travail EMR Studio à l'aide de clés gérées par le client (CMK) avec AWS Key Management Service
"kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:DescribeKey"