Configurer les autorisations utilisateur d'EMR Studio pour Amazon EC2 ou Amazon EKS - 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 autorisations utilisateur d'EMR Studio pour Amazon EC2 ou Amazon EKS

Vous devez configurer les politiques d'autorisation utilisateur pour Amazon EMR Studio afin de pouvoir définir des autorisations détaillées pour les utilisateurs et les groupes. Pour plus d'informations sur le fonctionnement des autorisations utilisateur dans EMR Studio, consultez Contrôle d'accès dans Comment fonctionne Amazon EMR Studio.

Note

Les autorisations abordées dans cette section n'appliquent pas le contrôle d'accès aux données. Pour gérer l'accès aux jeux de données d'entrée, vous devez configurer les autorisations pour les clusters utilisés par votre Studio. Pour plus d’informations, consultez Sécurité sur Amazon EMR.

Créer un rôle d'utilisateur EMR Studio pour le mode d'authentification IAM Identity Center

Vous devez créer un rôle d'utilisateur EMR Studio lorsque vous utilisez le mode d'authentification IAM Identity Center.

Pour créer un rôle d'utilisateur pour EMR Studio
  1. Suivez les instructions de la rubrique Création d’un rôle pour la délégation d’autorisations à un service AWS dans le Guide de l’utilisateur AWS Identity and Access Management pour créer un rôle d’utilisateur.

    Utilisez la politique de relation d’approbation suivante lorsque vous créez le rôle.

    { "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "elasticmapreduce.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext" ] } ] }
  2. Supprimez les autorisations et les politiques de rôle par défaut.

  3. Associez vos politiques de session EMR Studio au rôle d’utilisateur avant d’affecter des utilisateurs et des groupes à un Studio. Pour obtenir des instructions sur la création de politiques de session, consultez Créer des politiques d'autorisation pour les utilisateurs d'EMR Studio.

Créer des politiques d'autorisation pour les utilisateurs d'EMR Studio

Reportez-vous aux sections suivantes pour créer des politiques d’autorisations pour EMR Studio.

Note

Utilisez la fonction du service EMR Studio pour définir les autorisations d’accès Amazon S3 pour le stockage des fichiers de bloc-notes et les autorisations d’accès AWS Secrets Manager pour lire les secrets lors de la liaison des Workspaces aux référentiels Git.

Création de politiques d’autorisations

Créez une ou plusieurs politiques d’autorisations IAM qui spécifient les actions qu’un utilisateur peut effectuer dans votre Studio. Par exemple, vous pouvez créer trois politiques distinctes pour les utilisateurs basiques, intermédiaires et avancés de Studio à l’aide des exemples de politiques présentés sur cette page.

Le tableau Autorisations AWS Identity and Access Management pour les utilisateurs d'EMR Studio détaille chaque opération Studio qu’un utilisateur peut effectuer et répertorie les actions IAM minimales requises pour les effectuer. Pour savoir comment créer des politiques, consultez la rubrique Création de politiques IAM du Guide de l’utilisateur IAM.

Votre politique d'autorisations doit inclure les déclarations suivantes.

{ "Sid": "AllowAddingTagsOnSecretsWithEMRStudioPrefix", "Effect": "Allow", "Action": "secretsmanager:TagResource", "Resource": "arn:aws:secretsmanager:*:*:secret:emr-studio-*" }, { "Sid": "AllowPassingServiceRoleForWorkspaceCreation", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::*:role/your-emr-studio-service-role" ], "Effect": "Allow" }

Définir la propriété pour la collaboration dans l'espace de travail

La collaboration dans l'espace de travail permet à plusieurs utilisateurs de travailler simultanément dans le même espace de travail et peut être configurée à l'aide du panneau Collaboration de l'interface utilisateur de l'espace de travail. Pour voir et utiliser le panneau Collaboration, un utilisateur doit disposer des autorisations suivantes. Tout utilisateur disposant de ces autorisations peut voir et utiliser le panneau Collaboration.

"elasticmapreduce:UpdateEditor", "elasticmapreduce:PutWorkspaceAccess", "elasticmapreduce:DeleteWorkspaceAccess", "elasticmapreduce:ListWorkspaceAccessIdentities"

Pour limiter l'accès au panneau Collaboration, vous pouvez utiliser le contrôle d'accès basé sur les balises. Lorsqu'un utilisateur crée un espace de travail, EMR Studio applique une balise par défaut avec une clé creatorUserId dont la valeur est l'ID de l'utilisateur qui crée l'espace de travail.

Note

EMR Studio ajoute la balise creatorUserId aux Workspaces créés après le 16 novembre 2021. Pour limiter les personnes autorisées à configurer la collaboration pour les Workspaces créés avant cette date, nous vous recommandons d’ajouter manuellement la balise creatorUserId à votre Workspace, puis d’utiliser le contrôle d’accès basé sur les balises dans vos politiques d’autorisations utilisateur.

L'exemple d'instruction suivant permet à un utilisateur de configurer la collaboration pour n'importe quel espace de travail avec la clé de balise creatorUserId dont la valeur correspond à l'ID de l'utilisateur (indiqué par la variable de politique aws:userId). En d'autres termes, l'instruction permet à un utilisateur de configurer la collaboration pour les espaces de travail qu'il crée. Pour en savoir plus sur les variables de politique, voir la rubrique Éléments des politiques IAM : variables et balises du Guide de l’utilisateur IAM.

{ "Sid": "UserRolePermissionsForCollaboration", "Action": [ "elasticmapreduce:UpdateEditor", "elasticmapreduce:PutWorkspaceAccess", "elasticmapreduce:DeleteWorkspaceAccess", "elasticmapreduce:ListWorkspaceAccessIdentities" ], "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/creatorUserId": "${aws:userid}" } } }

Création d’une politique de secrets Git de niveau utilisateur

Pour utiliser les autorisations au niveau de l’utilisateur

EMR Studio ajoute automatiquement la balise for-use-with-amazon-emr-managed-user-policies lorsqu’il crée des secrets Git. Pour contrôler l’accès aux secrets Git au niveau utilisateur, ajoutez des autorisations basées sur les balises à la politique de rôle d’utilisateur EMR Studio avec secretsmanager:GetSecretValue, comme indiqué dans section Pour passer des autorisations au niveau du service à des autorisations au niveau de l’utilisateur ci-dessous.

Si la politique de fonction du service EMR Studio comprend des autorisations pour secretsmanager:GetSecretValue, supprimez-les.

Pour passer des autorisations au niveau du service à des autorisations au niveau de l’utilisateur

Note

La balise for-use-with-amazon-emr-managed-user-policies garantit que les autorisations de l’étape 1 ci-dessous accordent au créateur du Workspace l’accès au secret Git. Toutefois, si vous avez lié des référentiels Git avant le 1er septembre 2023, l’accès aux secrets Git correspondants sera refusé, car aucune balise for-use-with-amazon-emr-managed-user-policies n’y est appliquée. Pour appliquer des autorisations au niveau utilisateur, vous devez recréer les anciens secrets à partir des référentiels Git appropriés JupyterLab et les lier à nouveau.

Pour plus d’informations sur les variables de politique, voir la rubrique Éléments des politiques IAM : variables et balises du Guide de l’utilisateur IAM.

  1. Ajoutez les autorisations suivantes à la politique de rôle d’utilisateur EMR Studio. La politique utilise la clé for-use-with-amazon-emr-managed-user-policies avec une valeur "${aws:userid}".

    { "Sid": "AllowSecretsManagerReadOnlyActionsWithEMRTags", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:*:*:secret:*", "Condition": { "StringEquals": { "secretsmanager:ResourceTag/for-use-with-amazon-emr-managed-user-policies": "${aws:userid}" } } }
  2. Si elle existe, supprimez l’autorisation suivante de la politique de fonction du service EMR Studio. La politique de fonction du service s’appliquant à tous les secrets définis par chaque utilisateur, vous ne devez effectuer cette opération qu’une seule fois.

    { "Sid": "AllowSecretsManagerReadOnlyActionsWithEMRTags", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:*", "Condition": { "StringEquals": { "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true" } } }

Pour utiliser les autorisations au niveau du service

À compter du 1er septembre 2023, EMR Studio ajoute automatiquement la balise for-use-with-amazon-emr-managed-user-policies pour le contrôle d’accès au niveau de l’utilisateur. Il s’agit d’une fonctionnalité supplémentaire. Vous pouvez donc continuer à utiliser l’accès au niveau du service disponible via l’autorisation GetSecretValue associée à la fonction du service EMR Studio.

EMR Studio n’a pas ajouté la balise for-use-with-amazon-emr-managed-user-policies pour les secrets créés avant le 1er septembre 2023. Pour continuer à utiliser les autorisations au niveau du service, il vous suffit de conserver votre fonction du service EMR Studio et vos autorisations de rôle utilisateur. Toutefois, pour limiter les personnes autorisées à accéder à un secret, nous vous recommandons de suivre les étapes de la rubrique Pour utiliser les autorisations au niveau de l’utilisateur pour ajouter manuellement la balise for-use-with-amazon-emr-managed-user-policies à vos secrets, puis d’utiliser le contrôle d’accès basé sur les balises dans vos politiques d’autorisations utilisateur.

Pour plus d’informations sur les variables de politique, voir la rubrique Éléments des politiques IAM : variables et balises du Guide de l’utilisateur IAM.

Associez les politiques d’autorisations à votre identité IAM.

Le tableau suivant récapitule l'identité IAM à laquelle vous attachez une politique d'autorisations, en fonction de votre mode d'authentification EMR Studio. Pour obtenir des instructions sur la façon d'attacher une politique, consultez Ajout et suppression d'autorisations basées sur l'identité IAM.

Si vous utilisez... Attachez la politique à...
Authentification IAM Vos identités IAM (utilisateurs, groupes d'utilisateurs ou rôles). Par exemple, vous pouvez attacher une politique d'autorisations à un utilisateur de votre Compte AWS.
Fédération IAM avec un fournisseur d'identité (IdP) externe

Le ou les rôles IAM que vous créez pour votre IdP externe. Par exemple, une fédération IAM pour SAML 2.0.

EMR Studio utilise les autorisations que vous attachez à vos rôles IAM pour les utilisateurs disposant d'un accès fédéré à un Studio.

IAM Identity Center Votre rôle d'utilisateur Amazon EMR Studio.

Exemple de politiques utilisateur

La politique utilisateur basique suivante autorise la plupart des actions EMR Studio, mais ne permet pas à un utilisateur de créer de nouveaux clusters Amazon EMR.

Important

L'exemple de politique n'inclut pas l'autorisation CreateStudioPresignedUrl, que vous devez accorder à un utilisateur lorsque vous utilisez le mode d'authentification IAM. Pour plus d’informations, consultez Attribuer un utilisateur ou un groupe à un EMR Studio.

L'exemple de politique inclut des éléments Condition visant à appliquer le contrôle d'accès basé sur les balises (TBAC) afin que vous puissiez utiliser la politique avec l'exemple de fonction du service pour EMR Studio. Pour plus d’informations, consultez Créer une fonction du service EMR Studio.

{ "Version":"2012-10-17", "Statement":[ { "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":"AllowSecretManagerListSecrets", "Action":[ "secretsmanager:ListSecrets" ], "Resource":"*", "Effect":"Allow" }, { "Sid":"AllowSecretCreationWithEMRTagsAndEMRStudioPrefix", "Effect":"Allow", "Action":"secretsmanager:CreateSecret", "Resource":"arn:aws:secretsmanager:*:*:secret:emr-studio-*", "Condition":{ "StringEquals":{ "aws:RequestTag/for-use-with-amazon-emr-managed-policies":"true" } } }, { "Sid":"AllowAddingTagsOnSecretsWithEMRStudioPrefix", "Effect":"Allow", "Action":"secretsmanager:TagResource", "Resource":"arn:aws:secretsmanager:*:*:secret:emr-studio-*" }, { "Sid":"AllowPassingServiceRoleForWorkspaceCreation", "Action":"iam:PassRole", "Resource":[ "arn:aws:iam::*:role/<your-emr-studio-service-role>" ], "Effect":"Allow" }, { "Sid":"AllowS3ListAndLocationPermissions", "Action":[ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource":"arn:aws:s3:::*", "Effect":"Allow" }, { "Sid":"AllowS3ReadOnlyAccessToLogs", "Action":[ "s3:GetObject" ], "Resource":[ "arn:aws:s3:::aws-logs-<aws-account-id>-<region>/elasticmapreduce/*" ], "Effect":"Allow" }, { "Sid":"AllowConfigurationForWorkspaceCollaboration", "Action":[ "elasticmapreduce:UpdateEditor", "elasticmapreduce:PutWorkspaceAccess", "elasticmapreduce:DeleteWorkspaceAccess", "elasticmapreduce:ListWorkspaceAccessIdentities" ], "Resource":"*", "Effect":"Allow", "Condition":{ "StringEquals":{ "elasticmapreduce:ResourceTag/creatorUserId":"${aws:userId}" } } }, { "Sid":"DescribeNetwork", "Effect":"Allow", "Action":[ "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource":"*" }, { "Sid":"ListIAMRoles", "Effect":"Allow", "Action":[ "iam:ListRoles" ], "Resource":"*" } ] }

La politique utilisateur intermédiaire suivante autorise la plupart des actions EMR Studio et permet à un utilisateur de créer de nouveaux clusters Amazon EMR à l'aide d'un modèle de cluster.

Important

L'exemple de politique n'inclut pas l'autorisation CreateStudioPresignedUrl, que vous devez accorder à un utilisateur lorsque vous utilisez le mode d'authentification IAM. Pour plus d’informations, consultez Attribuer un utilisateur ou un groupe à un EMR Studio.

L'exemple de politique inclut des éléments Condition visant à appliquer le contrôle d'accès basé sur les balises (TBAC) afin que vous puissiez utiliser la politique avec l'exemple de fonction du service pour EMR Studio. Pour plus d’informations, consultez Créer une fonction du service EMR Studio.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowEMRBasicActions", "Action":[ "elasticmapreduce:CreateEditor", "elasticmapreduce:DescribeEditor", "elasticmapreduce:ListEditors", "elasticmapreduce:StartEditor", "elasticmapreduce:StopEditor", "elasticmapreduce:DeleteEditor", "elasticmapreduce:OpenEditorInConsole", "elasticmapreduce:AttachEditor", "elasticmapreduce:DetachEditor", "elasticmapreduce:CreateRepository", "elasticmapreduce:DescribeRepository", "elasticmapreduce:DeleteRepository", "elasticmapreduce:ListRepositories", "elasticmapreduce:LinkRepository", "elasticmapreduce:UnlinkRepository", "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ListBootstrapActions", "elasticmapreduce:ListClusters", "elasticmapreduce:ListSteps", "elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL", "elasticmapreduce:GetOnClusterAppUIPresignedURL" ], "Resource":"*", "Effect":"Allow" }, { "Sid":"AllowEMRContainersBasicActions", "Action":[ "emr-containers:DescribeVirtualCluster", "emr-containers:ListVirtualClusters", "emr-containers:DescribeManagedEndpoint", "emr-containers:ListManagedEndpoints", "emr-containers:DescribeJobRun", "emr-containers:ListJobRuns" ], "Resource":"*", "Effect":"Allow" }, { "Sid": "AllowRetrievingManagedEndpointCredentials", "Effect": "Allow", "Action": [ "emr-containers:GetManagedEndpointSessionCredentials" ], "Resource": [ "arn:aws:emr-containers:<region>:<account-id>:/virtualclusters/<virtual-cluster-id>/endpoints/<managed-endpoint-id>" ], "Condition": { "StringEquals": { "emr-containers:ExecutionRoleArn": [ "arn:aws:iam::<account-id>:role/<emr-on-eks-execution-role>" ] } } }, { "Sid":"AllowSecretManagerListSecrets", "Action":[ "secretsmanager:ListSecrets" ], "Resource":"*", "Effect":"Allow" }, { "Sid":"AllowSecretCreationWithEMRTagsAndEMRStudioPrefix", "Effect":"Allow", "Action":"secretsmanager:CreateSecret", "Resource":"arn:aws:secretsmanager:*:*:secret:emr-studio-*", "Condition":{ "StringEquals":{ "aws:RequestTag/for-use-with-amazon-emr-managed-policies":"true" } } }, { "Sid":"AllowAddingTagsOnSecretsWithEMRStudioPrefix", "Effect":"Allow", "Action":"secretsmanager:TagResource", "Resource":"arn:aws:secretsmanager:*:*:secret:emr-studio-*" }, { "Sid":"AllowClusterTemplateRelatedIntermediateActions", "Action":[ "servicecatalog:DescribeProduct", "servicecatalog:DescribeProductView", "servicecatalog:DescribeProvisioningParameters", "servicecatalog:ProvisionProduct", "servicecatalog:SearchProducts", "servicecatalog:UpdateProvisionedProduct", "servicecatalog:ListProvisioningArtifacts", "servicecatalog:ListLaunchPaths", "servicecatalog:DescribeRecord", "cloudformation:DescribeStackResources" ], "Resource":"*", "Effect":"Allow" }, { "Sid":"AllowPassingServiceRoleForWorkspaceCreation", "Action":"iam:PassRole", "Resource":[ "arn:aws:iam::*:role/<your-emr-studio-service-role>" ], "Effect":"Allow" }, { "Sid":"AllowS3ListAndLocationPermissions", "Action":[ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource":"arn:aws:s3:::*", "Effect":"Allow" }, { "Sid":"AllowS3ReadOnlyAccessToLogs", "Action":[ "s3:GetObject" ], "Resource":[ "arn:aws:s3:::aws-logs-<aws-account-id>-<region>/elasticmapreduce/*" ], "Effect":"Allow" }, { "Sid":"AllowConfigurationForWorkspaceCollaboration", "Action":[ "elasticmapreduce:UpdateEditor", "elasticmapreduce:PutWorkspaceAccess", "elasticmapreduce:DeleteWorkspaceAccess", "elasticmapreduce:ListWorkspaceAccessIdentities" ], "Resource":"*", "Effect":"Allow", "Condition":{ "StringEquals":{ "elasticmapreduce:ResourceTag/creatorUserId":"${aws:userId}" } } }, { "Sid":"DescribeNetwork", "Effect":"Allow", "Action":[ "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource":"*" }, { "Sid":"ListIAMRoles", "Effect":"Allow", "Action":[ "iam:ListRoles" ], "Resource":"*" }, { "Sid": "AllowServerlessActions", "Action": [ "emr-serverless:CreateApplication", "emr-serverless:UpdateApplication", "emr-serverless:DeleteApplication", "emr-serverless:ListApplications", "emr-serverless:GetApplication", "emr-serverless:StartApplication", "emr-serverless:StopApplication", "emr-serverless:StartJobRun", "emr-serverless:CancelJobRun", "emr-serverless:ListJobRuns", "emr-serverless:GetJobRun", "emr-serverless:GetDashboardForJobRun", "emr-serverless:AccessInteractiveEndpoints" ], "Resource": "*", "Effect": "Allow" }, { "Sid": "AllowPassingRuntimeRoleForRunningServerlessJob", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/serverless-runtime-role", "Effect": "Allow" } ] }

La politique utilisateur avancée suivante autorise toutes les actions EMR Studio et permet à un utilisateur de créer de nouveaux clusters Amazon EMR à l'aide d'un modèle de cluster ou en fournissant une configuration de cluster.

Important

L'exemple de politique n'inclut pas l'autorisation CreateStudioPresignedUrl, que vous devez accorder à un utilisateur lorsque vous utilisez le mode d'authentification IAM. Pour plus d’informations, consultez Attribuer un utilisateur ou un groupe à un EMR Studio.

L'exemple de politique inclut des éléments Condition visant à appliquer le contrôle d'accès basé sur les balises (TBAC) afin que vous puissiez utiliser la politique avec l'exemple de fonction du service pour EMR Studio. Pour plus d’informations, consultez Créer une fonction du service EMR Studio.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowEMRBasicActions", "Action":[ "elasticmapreduce:CreateEditor", "elasticmapreduce:DescribeEditor", "elasticmapreduce:ListEditors", "elasticmapreduce:StartEditor", "elasticmapreduce:StopEditor", "elasticmapreduce:DeleteEditor", "elasticmapreduce:OpenEditorInConsole", "elasticmapreduce:AttachEditor", "elasticmapreduce:DetachEditor", "elasticmapreduce:CreateRepository", "elasticmapreduce:DescribeRepository", "elasticmapreduce:DeleteRepository", "elasticmapreduce:ListRepositories", "elasticmapreduce:LinkRepository", "elasticmapreduce:UnlinkRepository", "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ListBootstrapActions", "elasticmapreduce:ListClusters", "elasticmapreduce:ListSteps", "elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL", "elasticmapreduce:GetOnClusterAppUIPresignedURL" ], "Resource":"*", "Effect":"Allow" }, { "Sid":"AllowEMRContainersBasicActions", "Action":[ "emr-containers:DescribeVirtualCluster", "emr-containers:ListVirtualClusters", "emr-containers:DescribeManagedEndpoint", "emr-containers:ListManagedEndpoints", "emr-containers:DescribeJobRun", "emr-containers:ListJobRuns" ], "Resource":"*", "Effect":"Allow" }, { "Sid": "AllowRetrievingManagedEndpointCredentials", "Effect": "Allow", "Action": [ "emr-containers:GetManagedEndpointSessionCredentials" ], "Resource": [ "arn:aws:emr-containers:<region>:<account-id>:/virtualclusters/<virtual-cluster-id>/endpoints/<managed-endpoint-id>" ], "Condition": { "StringEquals": { "emr-containers:ExecutionRoleArn": [ "arn:aws:iam::<account-id>:role/<emr-on-eks-execution-role>" ] } } }, { "Sid":"AllowSecretManagerListSecrets", "Action":[ "secretsmanager:ListSecrets" ], "Resource":"*", "Effect":"Allow" }, { "Sid":"AllowSecretCreationWithEMRTagsAndEMRStudioPrefix", "Effect":"Allow", "Action":"secretsmanager:CreateSecret", "Resource":"arn:aws:secretsmanager:*:*:secret:emr-studio-*", "Condition":{ "StringEquals":{ "aws:RequestTag/for-use-with-amazon-emr-managed-policies":"true" } } }, { "Sid":"AllowAddingTagsOnSecretsWithEMRStudioPrefix", "Effect":"Allow", "Action":"secretsmanager:TagResource", "Resource":"arn:aws:secretsmanager:*:*:secret:emr-studio-*" }, { "Sid":"AllowClusterTemplateRelatedIntermediateActions", "Action":[ "servicecatalog:DescribeProduct", "servicecatalog:DescribeProductView", "servicecatalog:DescribeProvisioningParameters", "servicecatalog:ProvisionProduct", "servicecatalog:SearchProducts", "servicecatalog:UpdateProvisionedProduct", "servicecatalog:ListProvisioningArtifacts", "servicecatalog:ListLaunchPaths", "servicecatalog:DescribeRecord", "cloudformation:DescribeStackResources" ], "Resource":"*", "Effect":"Allow" }, { "Sid":"AllowEMRCreateClusterAdvancedActions", "Action":[ "elasticmapreduce:RunJobFlow" ], "Resource":"*", "Effect":"Allow" }, { "Sid":"AllowPassingServiceRoleForWorkspaceCreation", "Action":"iam:PassRole", "Resource":[ "arn:aws:iam::*:role/<your-emr-studio-service-role>", "arn:aws:iam::*:role/EMR_DefaultRole_V2", "arn:aws:iam::*:role/EMR_EC2_DefaultRole" ], "Effect":"Allow" }, { "Sid":"AllowS3ListAndLocationPermissions", "Action":[ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource":"arn:aws:s3:::*", "Effect":"Allow" }, { "Sid":"AllowS3ReadOnlyAccessToLogs", "Action":[ "s3:GetObject" ], "Resource":[ "arn:aws:s3:::aws-logs-<aws-account-id>-<region>/elasticmapreduce/*" ], "Effect":"Allow" }, { "Sid":"AllowConfigurationForWorkspaceCollaboration", "Action":[ "elasticmapreduce:UpdateEditor", "elasticmapreduce:PutWorkspaceAccess", "elasticmapreduce:DeleteWorkspaceAccess", "elasticmapreduce:ListWorkspaceAccessIdentities" ], "Resource":"*", "Effect":"Allow", "Condition":{ "StringEquals":{ "elasticmapreduce:ResourceTag/creatorUserId":"${aws:userId}" } } }, { "Sid" : "SageMakerDataWranglerForEMRStudio", "Effect" : "Allow", "Action" : [ "sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeDomain", "sagemaker:ListDomains", "sagemaker:ListUserProfiles" ], "Resource":"*" }, { "Sid":"DescribeNetwork", "Effect":"Allow", "Action":[ "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource":"*" }, { "Sid":"ListIAMRoles", "Effect":"Allow", "Action":[ "iam:ListRoles" ], "Resource":"*" }, { "Sid": "AllowServerlessActions", "Action": [ "emr-serverless:CreateApplication", "emr-serverless:UpdateApplication", "emr-serverless:DeleteApplication", "emr-serverless:ListApplications", "emr-serverless:GetApplication", "emr-serverless:StartApplication", "emr-serverless:StopApplication", "emr-serverless:StartJobRun", "emr-serverless:CancelJobRun", "emr-serverless:ListJobRuns", "emr-serverless:GetJobRun", "emr-serverless:GetDashboardForJobRun", "emr-serverless:AccessInteractiveEndpoints" ], "Resource": "*", "Effect": "Allow" }, { "Sid": "AllowPassingRuntimeRoleForRunningServerlessJob", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/serverless-runtime-role", "Effect": "Allow" }, { "Sid": "AllowCodeWhisperer", "Effect": "Allow", "Action": [ "codewhisperer:GenerateRecommendations" ], "Resource": "*" }, { "Sid": "AllowAthenaSQL", "Action": [ "athena:StartQueryExecution", "athena:StopQueryExecution", "athena:GetQueryExecution", "athena:GetQueryRuntimeStatistics", "athena:GetQueryResults", "athena:ListQueryExecutions", "athena:BatchGetQueryExecution", "athena:GetNamedQuery", "athena:ListNamedQueries", "athena:BatchGetNamedQuery", "athena:UpdateNamedQuery", "athena:DeleteNamedQuery", "athena:ListDataCatalogs", "athena:GetDataCatalog", "athena:ListDatabases", "athena:GetDatabase", "athena:ListTableMetadata", "athena:GetTableMetadata", "athena:ListWorkGroups", "athena:GetWorkGroup", "athena:CreateNamedQuery", "athena:GetPreparedStatement", "glue:CreateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:UpdateDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:GetTables", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition", "kms:ListAliases", "kms:ListKeys", "kms:DescribeKey", "lakeformation:GetDataAccess", "s3:GetBucketLocation", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutBucketPublicAccessBlock", "s3:ListAllMyBuckets" ], "Resource": "*", "Effect": "Allow" } ] }

La politique utilisateur suivante définit les autorisations utilisateur minimales requises pour utiliser une application interactive EMR sans serveur avec les espaces de travail EMR Studio.

Dans cet exemple de politique qui prévoit des autorisations utilisateur pour les applications interactives EMR Serverless avec EMR Studio, remplacez les espaces réservés pour et par votre rôle de service EMR Studio et emr-studio-service-rolevotre rôle serverless-runtime-roled'exécution EMR Serverless corrects.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowServerlessActions", "Action": [ "emr-serverless:CreateApplication", "emr-serverless:UpdateApplication", "emr-serverless:DeleteApplication", "emr-serverless:ListApplications", "emr-serverless:GetApplication", "emr-serverless:StartApplication", "emr-serverless:StopApplication", "emr-serverless:StartJobRun", "emr-serverless:CancelJobRun", "emr-serverless:ListJobRuns", "emr-serverless:GetJobRun", "emr-serverless:GetDashboardForJobRun", "emr-serverless:AccessInteractiveEndpoints" ], "Resource": "*", "Effect": "Allow" }, { "Sid": "AllowEMRBasicActions", "Action": [ "elasticmapreduce:CreateEditor", "elasticmapreduce:DescribeEditor", "elasticmapreduce:ListEditors", "elasticmapreduce:UpdateStudio", "elasticmapreduce:StartEditor", "elasticmapreduce:StopEditor", "elasticmapreduce:DeleteEditor", "elasticmapreduce:OpenEditorInConsole", "elasticmapreduce:AttachEditor", "elasticmapreduce:DetachEditor", "elasticmapreduce:CreateStudio", "elasticmapreduce:DescribeStudio", "elasticmapreduce:DeleteStudio", "elasticmapreduce:ListStudios", "elasticmapreduce:CreateStudioPresignedUrl" ], "Resource": "*", "Effect": "Allow" }, { "Sid": "AllowPassingRuntimeRoleForRunningEMRServerlessJob", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/serverless-runtime-role", "Effect": "Allow" }, { "Sid": "AllowPassingServiceRoleForWorkspaceCreation", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/emr-studio-service-role", "Effect": "Allow" }, { "Sid": "AllowS3ListAndGetPermissions", "Action": [ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketLocation", "s3:GetObject" ], "Resource": "arn:aws:s3:::*", "Effect": "Allow" }, { "Sid":"DescribeNetwork", "Effect":"Allow", "Action":[ "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource":"*" }, { "Sid": "ListIAMRoles", "Effect": "Allow", "Action": [ "iam:ListRoles" ], "Resource": "*" } ] }

Autorisations AWS Identity and Access Management pour les utilisateurs d'EMR Studio

Le tableau suivant inclut chaque opération Amazon EMR Studio qu'un utilisateur peut effectuer et répertorie les actions IAM minimales requises pour effectuer cette opération. Vous autorisez ces actions dans vos politiques d’autorisations IAM (lorsque vous utilisez l’authentification IAM) ou dans vos politiques de session de rôle d’utilisateur (lorsque vous utilisez l’authentification IAM Identity Center) pour EMR Studio.

Le tableau affiche également les opérations autorisées dans chacun des exemples de politique d'autorisations pour EMR Studio. Pour plus d'informations sur les exemples de politiques d'autorisations, consultez Créer des politiques d'autorisation pour les utilisateurs d'EMR Studio.

Action Base Intermédiaire Avancé Actions associées
Créer et supprimer des espaces de travail Oui Oui Oui
"elasticmapreduce:CreateEditor", "elasticmapreduce:DescribeEditor", "elasticmapreduce:ListEditors", "elasticmapreduce:DeleteEditor"
Afficher le panneau Collaboration, activer la collaboration dans l'espace de travail et ajouter des collaborateurs. Pour plus d'informations, consultez Définir la propriété pour la collaboration dans le Workspace. Oui Oui Oui
"elasticmapreduce:UpdateEditor", "elasticmapreduce:PutWorkspaceAccess", "elasticmapreduce:DeleteWorkspaceAccess", "elasticmapreduce:ListWorkspaceAccessIdentities"
Consulter une liste des compartiments de stockage Amazon S3 Control dans le même compte que le Studio lors de la création d'un cluster EMR, et accéder aux journaux des conteneurs lors de l'utilisation d'une interface utilisateur web pour déboguer des applications Oui Oui Oui
"s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketLocation", "s3:GetObject"
Accéder aux espaces de travail Oui Oui Oui
"elasticmapreduce:DescribeEditor", "elasticmapreduce:ListEditors", "elasticmapreduce:StartEditor", "elasticmapreduce:StopEditor", "elasticmapreduce:OpenEditorInConsole"
Attacher ou détacher des clusters Amazon EMR existants associés à l'espace de travail Oui Oui Oui
"elasticmapreduce:AttachEditor", "elasticmapreduce:DetachEditor", "elasticmapreduce:ListClusters", "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ListBootstrapActions"
Attacher ou détacher Amazon EMR sur des clusters EKS Oui Oui Oui
"elasticmapreduce:AttachEditor", "elasticmapreduce:DetachEditor", "emr-containers:ListVirtualClusters", "emr-containers:DescribeVirtualCluster", "emr-containers:ListManagedEndpoints", "emr-containers:DescribeManagedEndpoint", "emr-containers:GetManagedEndpointSessionCredentials"
Attacher ou détacher les applications EMR sans serveur associées à l'espace de travail Non Oui Oui
"elasticmapreduce:AttachEditor", "elasticmapreduce:DetachEditor", "emr-serverless:GetApplication", "emr-serverless:StartApplication", "emr-serverless:ListApplications", "emr-serverless:GetDashboardForJobRun", "emr-serverless:AccessInteractiveEndpoints", "iam:PassRole"

L'autorisation PassRole est requise pour transmettre le rôle d'exécution de tâches EMR sans serveur. Pour plus d'informations, veuillez consulter la rubrique Job runtime roles dans le Guide de l'utilisateur Amazon EMR sans serveur.

Déboguer Amazon EMR sur des tâches EC2 avec des interfaces utilisateur d'application persistantes Oui Oui Oui
"elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL", "elasticmapreduce:ListClusters", "elasticmapreduce:ListSteps", "elasticmapreduce:DescribeCluster", "s3:ListBucket", "s3:GetObject"
Déboguer Amazon EMR sur des tâches EC2 avec des interfaces utilisateur d'application intégrées au cluster Oui Oui Oui
"elasticmapreduce:GetOnClusterAppUIPresignedURL"
Déboguer Amazon EMR sur les tâches EKS exécutées à l'aide du serveur d'historique Spark Oui Oui Oui
"elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL", "emr-containers:ListVirtualClusters", "emr-containers:DescribeVirtualCluster", "emr-containers:ListJobRuns", "emr-containers:DescribeJobRun", "s3:ListBucket", "s3:GetObject"
Créer et supprimer des référentiels Git Oui Oui Oui
"elasticmapreduce:CreateRepository", "elasticmapreduce:DeleteRepository", "elasticmapreduce:ListRepositories", "elasticmapreduce:DescribeRepository", "secretsmanager:CreateSecret", "secretsmanager:ListSecrets", "secretsmanager:TagResource"
Créer ou annuler des liens à des référentiels Git Oui Oui Oui
"elasticmapreduce:LinkRepository", "elasticmapreduce:UnlinkRepository", "elasticmapreduce:ListRepositories", "elasticmapreduce:DescribeRepository"
Créer des clusters à partir de modèles de clusters prédéfinis Non Oui Oui
"servicecatalog:SearchProducts", "servicecatalog:DescribeProduct", "servicecatalog:DescribeProductView", "servicecatalog:DescribeProvisioningParameters", "servicecatalog:ProvisionProduct", "servicecatalog:UpdateProvisionedProduct", "servicecatalog:ListProvisioningArtifacts", "servicecatalog:DescribeRecord", "servicecatalog:ListLaunchPaths", "cloudformation:DescribeStackResources", "elasticmapreduce:ListClusters", "elasticmapreduce:DescribeCluster"
Spécifier une configuration de cluster pour créer de nouveaux clusters Non Non Oui
"elasticmapreduce:RunJobFlow", "iam:PassRole", "elasticmapreduce:ListClusters", "elasticmapreduce:DescribeCluster"
Affecter un utilisateur à un Studio lorsque vous utilisez le mode d’authentification IAM Non Non Non
"elasticmapreduce:CreateStudioPresignedUrl"
Décrire les objets réseau. Oui Oui Oui
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DescribeNetwork", "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource": "*" } ] }
Répertorier les rôles IAM. Oui Oui Oui
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListIAMRoles", "Effect": "Allow", "Action": [ "iam:ListRoles" ], "Resource": "*" } ] }
Connectez-vous à EMR Studio depuis Amazon SageMaker Studio et utilisez l'interface visuelle Data Wrangler. Non Non Oui
"sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeDomain", "sagemaker:ListDomains", "sagemaker:ListUserProfiles"
Utilisez Amazon CodeWhisperer dans votre studio EMR. Non Non Oui
"codewhisperer:GenerateRecommendations"
Accéder à l’éditeur SQL Amazon Athena depuis votre Studio EMR Cette liste peut ne pas inclure toutes les autorisations dont vous avez besoin pour utiliser toutes les fonctionnalités Athena. Pour obtenir la up-to-date liste la plus complète, consultez la politique d'accès complet d'Athena. Non Non Oui
"athena:StartQueryExecution", "athena:StopQueryExecution", "athena:GetQueryExecution", "athena:GetQueryRuntimeStatistics", "athena:GetQueryResults", "athena:ListQueryExecutions", "athena:BatchGetQueryExecution", "athena:GetNamedQuery", "athena:ListNamedQueries", "athena:BatchGetNamedQuery", "athena:UpdateNamedQuery", "athena:DeleteNamedQuery", "athena:ListDataCatalogs", "athena:GetDataCatalog", "athena:ListDatabases", "athena:GetDatabase", "athena:ListTableMetadata", "athena:GetTableMetadata", "athena:ListWorkGroups", "athena:GetWorkGroup", "athena:CreateNamedQuery", "athena:GetPreparedStatement", "glue:CreateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:UpdateDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:GetTables", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition", "kms:ListAliases", "kms:ListKeys", "kms:DescribeKey", "lakeformation:GetDataAccess", "s3:GetBucketLocation", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutBucketPublicAccessBlock", "s3:ListAllMyBuckets"