Configurer les autorisations utilisateur de 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 de 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 précises pour les utilisateurs et les groupes. Pour plus d'informations sur le fonctionnement des autorisations utilisateur dans EMR Studio, voir Contrôle d'accès dansComment 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 de plus amples informations, veuillez consulter Sécurité sur Amazon EMR.

Création d'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 section Création d'un rôle pour déléguer des autorisations à un AWS service dans le Guide de AWS Identity and Access Management l'utilisateur pour créer un rôle 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. Avant d'attribuer des utilisateurs et des groupes à un studio, associez vos politiques de session EMR Studio au rôle d'utilisateur. Pour obtenir des instructions sur la création de politiques de session, consultez Création de politiques d'autorisations pour les utilisateurs de EMR Studio.

Création de politiques d'autorisations pour les utilisateurs de EMR Studio

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

Note

Pour définir les autorisations d'accès Amazon S3 pour le stockage des fichiers de bloc-notes et pour définir les autorisations AWS Secrets Manager d'accès pour lire les secrets lorsque vous liez des espaces de travail à des référentiels Git, utilisez le rôle de service EMR Studio.

Création de politiques d’autorisations

Créez une ou plusieurs politiques d'IAMautorisation 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.

Pour une description détaillée de chaque opération Studio qu'un utilisateur peut effectuer, ainsi que IAM les actions minimales requises pour effectuer chaque opération, voirAWS Identity and Access Management autorisations pour les utilisateurs de EMR Studio. Pour connaître les étapes de création des politiques, voir Création de IAM politiques dans le guide de IAM l'utilisateur.

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

EMRStudio ajoute le creatorUserId tag aux espaces de travail 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 stratégie, voir Éléments de IAM stratégie : variables et balises dans le Guide de IAM l'utilisateur.

{ "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

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

Si vous disposez d'autorisations existantes pour secretsmanager:GetSecretValue la politique de rôles du service EMR Studio, vous devez les supprimer.

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 stratégie, voir Éléments de IAM stratégie : variables et balises dans le Guide de IAM l'utilisateur.

  1. Ajoutez les autorisations suivantes à la politique de rôle d'utilisateur de 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. Le cas échéant, supprimez l'autorisation suivante de la politique de rôle 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 for-use-with-amazon-emr-managed-user-policies balise pour le contrôle d'accès au niveau utilisateur. Comme il s'agit d'une fonctionnalité supplémentaire, vous pouvez continuer à utiliser l'accès au niveau de service disponible via l'GetSecretValueautorisation associée au rôle de service EMR Studio.

Pour les secrets créés avant le 1er septembre 2023, EMR Studio n'a pas ajouté le for-use-with-amazon-emr-managed-user-policies tag. Pour continuer à utiliser les autorisations de niveau de service, il vous suffit de conserver votre rôle de service EMR Studio et vos autorisations de rôle utilisateur existants. 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 stratégie, voir Éléments de IAM stratégie : variables et balises dans le Guide de IAM l'utilisateur.

Associez la politique d'autorisation à votre IAM identité

Le tableau suivant récapitule IAM l'identité à laquelle vous associez une politique d'autorisation, en fonction de votre mode d'authentification EMR Studio. Pour obtenir des instructions sur la façon d'associer une politique, consultez la section Ajouter et supprimer des autorisations IAM d'identité.

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

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

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

IAMCentre d'identité Votre rôle d'utilisateur Amazon EMR Studio.

Exemple de politiques utilisateur

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

Important

L'exemple de politique n'inclut pas l'CreateStudioPresignedUrlautorisation que vous devez accorder à un utilisateur lorsque vous utilisez le mode IAM d'authentification. Pour de plus amples informations, veuillez consulter Affecter un utilisateur ou un groupe à un EMR studio.

L'exemple de politique inclut Condition des éléments visant à appliquer le contrôle d'accès basé sur des balises (TBAC) afin que vous puissiez utiliser la politique avec l'exemple de rôle de service pour EMR Studio. Pour de plus amples informations, veuillez consulter Création d'un rôle de 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 de EMR Studio et permet à un utilisateur de créer de nouveaux EMR clusters Amazon à l'aide d'un modèle de cluster.

Important

L'exemple de politique n'inclut pas l'CreateStudioPresignedUrlautorisation, que vous devez accorder à un utilisateur lorsque vous utilisez le mode IAM d'authentification. Pour de plus amples informations, veuillez consulter Affecter un utilisateur ou un groupe à un EMR studio.

L'exemple de politique inclut Condition des éléments visant à appliquer le contrôle d'accès basé sur des balises (TBAC) afin que vous puissiez utiliser la politique avec l'exemple de rôle de service pour EMR Studio. Pour de plus amples informations, veuillez consulter Création d'un rôle de 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 de EMR Studio et permet à un utilisateur de créer de nouveaux EMR clusters Amazon à l'aide d'un modèle de cluster ou en fournissant une configuration de cluster.

Important

L'exemple de politique n'inclut pas l'CreateStudioPresignedUrlautorisation, que vous devez accorder à un utilisateur lorsque vous utilisez le mode IAM d'authentification. Pour de plus amples informations, veuillez consulter Affecter un utilisateur ou un groupe à un EMR studio.

L'exemple de politique inclut Condition des éléments visant à appliquer le contrôle d'accès basé sur des balises (TBAC) afin que vous puissiez utiliser la politique avec l'exemple de rôle de service pour EMR Studio. Pour de plus amples informations, veuillez consulter Création d'un rôle de 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 EMR Studio Workspaces.

Dans cet exemple de politique qui prévoit des autorisations utilisateur pour les applications interactives EMR sans serveur avec EMR Studio, remplacez les espaces réservés pour serverless-runtime-role and emr-studio-service-role avec votre rôle de service EMR Studio et votre rôle d'exécution EMR sans serveur appropriés.

{ "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": "*" } ] }

AWS Identity and Access Management autorisations pour les utilisateurs de EMR Studio

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

Le tableau affiche également les opérations autorisées dans chacun des exemples de politique d'autorisation pour EMR Studio. Pour plus d'informations sur les exemples de politiques d'autorisations, consultez Création de politiques d'autorisations pour les utilisateurs de 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"
Consultez la liste des compartiments de Amazon S3 Control stockage dans le même compte que le Studio lors de la création d'un nouveau EMR cluster, et accédez aux journaux des conteneurs lorsque vous utilisez 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"
Attachez ou détachez les EMR clusters Amazon 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"
Joindre 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'PassRoleautorisation est requise pour transmettre le rôle d'exécution EMR de tâches sans serveur. Pour plus d'informations, consultez la section Rôles d'exécution de Job dans le guide de l'utilisateur Amazon EMR Serverless.

Déboguer Amazon EMR sur des EC2 tâches 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 EC2 tâches avec des interfaces utilisateur d'applications intégrées au cluster Oui Oui Oui
"elasticmapreduce:GetOnClusterAppUIPresignedURL"
Déboguer Amazon EMR lors des exécutions de EKS tâches à 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"
Assignez un utilisateur à un studio lorsque vous utilisez le mode IAM d'authentification. 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": "*" } ] }
IAMRépertoriez les rôles. 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 EMR studio. Non Non Oui
"codewhisperer:GenerateRecommendations"
Accédez à l'SQLéditeur Amazon Athena depuis votre EMR studio. 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"