Amazon EC2または Amazon の EMR Studio ユーザーアクセス許可を設定する EKS - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EC2または Amazon の EMR Studio ユーザーアクセス許可を設定する EKS

きめ細かなユーザーおよびグループのアクセス許可を設定できるように、Amazon EMR Studio のユーザーアクセス許可ポリシーを設定する必要があります。EMR Studio でのユーザーアクセス許可の仕組みについては、「」のアクセスコントロール「」を参照してくださいAmazon EMR Studio の仕組み

注記

このセクションで説明するアクセス許可は、データアクセスコントロールを適用しません。入力データセットへのアクセスを管理するには、Studio が使用するクラスターのアクセス許可を設定する必要があります。詳細については、「Amazon のセキュリティ EMR」を参照してください。

IAM Identity Center 認証モード用の EMR Studio ユーザーロールを作成する

IAM Identity Center 認証モードを使用するときは、EMRStudio ユーザーロールを作成する必要があります。

EMR Studio のユーザーロールを作成するには
  1. 「 ユーザーガイド」の「 AWS サービスにアクセス許可を委任するロールの作成」の手順に従って、ユーザーロールを作成します。 AWS Identity and Access Management

    ロールを作成する場合、次の信頼関係ポリシーを使用します。

    { "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "elasticmapreduce.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext" ] } ] }
  2. デフォルトのロールアクセス許可およびポリシーを削除します。

  3. ユーザーとグループを Studio に割り当てる前に、EMRStudio セッションポリシーをユーザーロールにアタッチします。セッションポリシーを作成する方法の手順については、「EMR Studio ユーザーのアクセス許可ポリシーを作成する」を参照してください。

EMR Studio ユーザーのアクセス許可ポリシーを作成する

EMR Studio のアクセス許可ポリシーを作成するには、以下のセクションを参照してください。

注記

ノートブックファイルを保存するための Amazon S3 アクセス許可を設定し、Workspaces を Git リポジトリにリンクするときにシークレットを読み取る AWS Secrets Manager アクセス許可を設定するには、EMRStudio サービスロールを使用します。

アクセス許可ポリシーを作成します。

Studio でユーザーが実行できるアクションを指定するアクセスIAM許可ポリシーを 1 つ以上作成します。たとえば、このページのサンプルポリシーを使用して、基本中級上級の Studio ユーザーに対して 3 つの個別のポリシーを作成できます。

ユーザーが実行する可能性のある各 Studio オペレーションの内訳と、各オペレーションの実行に必要な最小限のIAMアクションについては、「」を参照してくださいAWS Identity and Access Management EMR Studio ユーザーの アクセス許可。ポリシーを作成する手順については、「 ユーザーガイド」のIAM「ポリシーの作成IAM」を参照してください。

アクセス許可ポリシーには以下のステートメントを含める必要があります。

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

Workspace コラボレーションの所有権の設定

Workspace コラボレーションでは、複数のユーザーは同じワークスペースで同時に作業できます。コラボレーションは Workspace UI の [コラボレーション] パネルを使用して設定できます。[コラボレーション] パネルを表示して使用する場合、ユーザーには以下のアクセス許可が必要です。これらのアクセス許可を持つユーザーなら誰でも [コラボレーション] パネルを表示して使用できます。

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

[コラボレーション] パネルへのアクセスを制限するには、タグベースのアクセス制御を使用します。ユーザーが Workspace を作成すると、EMRStudio はデフォルトのタグを のキーで適用します。creatorUserIdその値は Workspace を作成するユーザーの ID です。

注記

EMR Studio は、2021 年 11 月 16 日以降に作成された Workspace に creatorUserId タグを追加します。この日付より前に作成したワークスペースに対してコラボレーションを構成できるユーザーを制限するには、creatorUserId タグを Workspace に手動で追加してから、ユーザーアクセス許可ポリシーでタグベースのアクセス制御を使用することをお勧めします。

次のステートメント例では、ユーザーはユーザーの ID (ポリシー変数 aws:userId で指定) と一致する値を持つタグキー creatorUserId がある Workspace にコラボレーションを設定できます。つまり、このステートメントにより、ユーザーは自分で作成した Workspace にコラボレーションを設定できます。ポリシー変数の詳細については、「 IAMユーザーガイド」のIAM「ポリシー要素: 変数とタグ」を参照してください。

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

ユーザーレベルの Git シークレットポリシーの作成

ユーザーレベルのアクセス許可を使用するには

EMR Studio は、Git シークレットを作成するときに for-use-with-amazon-emr-managed-user-policies タグを自動的に追加します。ユーザーレベルで Git シークレットへのアクセスを制御する場合は、以下のサービスレベルの権限からユーザーレベルの権限に移行するにはセクションsecretsmanager:GetSecretValueに示すように、 を使用して EMR Studio ユーザーロールポリシーにタグベースのアクセス許可を追加します。

EMR Studio サービスロールポリシー secretsmanager:GetSecretValueで に対する既存のアクセス許可がある場合は、それらのアクセス許可を削除する必要があります。

サービスレベルの権限からユーザーレベルの権限に移行するには

注記

for-use-with-amazon-emr-managed-user-policies タグにより、以下の [ステップ 1] からのアクセス許可は、ワークスペースの作成者に Git シークレットへのアクセス許可を確実に付与します。ただし、2023 年 9 月 1 日より前に Git リポジトリをリンクした場合、対応する Git シークレットには for-use-with-amazon-emr-managed-user-policies タグが適用されていないためアクセスが拒否されます。ユーザーレベルのアクセス許可を適用するには、 から古いシークレットを再作成 JupyterLab し、適切な Git リポジトリを再度リンクする必要があります。

ポリシー変数の詳細については、「 IAMユーザーガイド」のIAM「ポリシー要素: 変数とタグ」を参照してください。

  1. EMR Studio ユーザーロールポリシーに次のアクセス許可を追加します。値 "${aws:userid}" のある for-use-with-amazon-emr-managed-user-policies キーを使用します。

    { "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. 存在する場合は、EMRStudio サービスロールポリシーから次のアクセス許可を削除します。サービスロールポリシーは各ユーザーが定義したすべてのシークレットに適用されるため、この操作は 1 回のみで済みます。

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

サービスレベルのアクセス許可を使用するには

2023 年 9 月 1 日現在、EMRStudio はユーザーレベルのアクセスコントロール用の for-use-with-amazon-emr-managed-user-policies タグを自動的に追加します。これは追加機能であるため、Studio サービスロール の GetSecretValue アクセス許可を通じて利用できるサービスレベルのアクセスを引き続き使用できます。 EMR

2023 年 9 月 1 日より前に作成されたシークレットの場合、EMRStudio は for-use-with-amazon-emr-managed-user-policies タグを追加しませんでした。サービスレベルのアクセス許可を引き続き使用するには、既存の EMR Studio サービスロールとユーザーロールのアクセス許可を保持するだけです。ただし、個々のシークレットにアクセスできるユーザーを制限するには、ユーザーレベルのアクセス許可を使用するには の手順に従って for-use-with-amazon-emr-managed-user-policies タグをシークレットに手動で追加してから、ユーザーアクセス許可ポリシーでタグベースのアクセス制御を使用することをお勧めします。

ポリシー変数の詳細については、「 IAMユーザーガイド」のIAM「ポリシー要素: 変数とタグ」を参照してください。

アクセス許可ポリシーを IAM ID にアタッチする

次の表は、Studio 認証モードに応じて、アクセス許可ポリシーをアタッチする IAM ID EMR をまとめたものです。ポリシーをアタッチする方法については、IAM「ID アクセス許可の追加と削除」を参照してください。

使用するもの ポリシーのアタッチ先
IAM 認証 IAM ID (ユーザー、ユーザーのグループ、またはロール)。例えば、 AWS アカウントのユーザーにアクセス許可ポリシーをアタッチできます。
IAM 外部 ID プロバイダーとのフェデレーション (IdP)

外部 IdP 用に作成するIAMロール。例えば、 for 2.0 SAML フェデレーションIAMなどです。

EMR Studio は、Studio へのフェデレーティッドアクセス権を持つユーザーのために、IAMロールにアタッチしたアクセス許可を使用します (複数可)。

IAM アイデンティティセンター Amazon EMR Studio ユーザーロール。

ユーザーポリシーの例

次の基本的なユーザーポリシーでは、ほとんどの EMR Studio アクションが許可されますが、ユーザーが新しい Amazon EMRクラスターを作成することはできません。

重要

サンプルポリシーには、IAM認証モードを使用するときにユーザーに許可する必要がある アクセスCreateStudioPresignedUrl許可は含まれていません。詳細については、「ユーザーまたはグループを EMR Studio に割り当てる」を参照してください。

サンプルポリシーには、EMRStudio のサービスロールの例でポリシーを使用できるように、タグベースのアクセスコントロール (TBAC) を適用するCondition要素が含まれています。詳細については、「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":"*" } ] }

次の中間ユーザーポリシーでは、ほとんどの EMR Studio アクションを許可し、クラスターテンプレートを使用して新しい Amazon EMR クラスターを作成できます。

重要

サンプルポリシーには、IAM認証モードを使用するときにユーザーに許可する必要がある アクセスCreateStudioPresignedUrl許可は含まれていません。詳細については、「ユーザーまたはグループを EMR Studio に割り当てる」を参照してください。

サンプルポリシーには、EMRStudio のサービスロールの例でポリシーを使用できるように、タグベースのアクセスコントロール (TBAC) を適用するCondition要素が含まれています。詳細については、「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" } ] }

次のアドバンストユーザーポリシーでは、すべての EMR Studio アクションを許可し、クラスターテンプレートEMRを使用するか、クラスター設定を指定して新しい Amazon クラスターを作成できます。

重要

サンプルポリシーには、IAM認証モードを使用するときにユーザーに許可する必要がある アクセスCreateStudioPresignedUrl許可は含まれていません。詳細については、「ユーザーまたはグループを EMR Studio に割り当てる」を参照してください。

サンプルポリシーには、EMRStudio のサービスロールの例でポリシーを使用できるように、タグベースのアクセスコントロール (TBAC) を適用するCondition要素が含まれています。詳細については、「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" } ] }

次のユーザーポリシーには、EMRStudio Workspace で EMR Serverless インタラクティブアプリケーションを使用するために必要な最小限のユーザーアクセス許可が含まれています。

EMR Studio で EMR Serverless インタラクティブアプリケーションのユーザーアクセス許可を持つこのポリシー例では、 のプレースホルダーを置き換えます。serverless-runtime-role また、emr-studio-service-role 正しい EMR Studio サービスロールEMR Serverless ランタイムロール を持つ 。

{ "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 EMR Studio ユーザーの アクセス許可

次の表には、ユーザーが実行できる各 Amazon EMR Studio オペレーションが含まれており、そのオペレーションの実行に必要な最小限のIAMアクションが一覧表示されています。これらのアクションは、EMRStudio のIAMアクセス許可ポリシー (IAM認証を使用する場合) またはユーザーロールセッションポリシー (IAMIdentity Center 認証を使用する場合) で許可します。

この表には、EMRStudio のアクセス許可ポリシーの例ごとに許可されるオペレーションも表示されます。許可ポリシーの例の詳細については、「EMR Studio ユーザーのアクセス許可ポリシーを作成する」を参照してください。

アクション Basic (ベーシック) 中級 アドバンスト 関連アクション
Workspace を作成および削除する はい はい あり
"elasticmapreduce:CreateEditor", "elasticmapreduce:DescribeEditor", "elasticmapreduce:ListEditors", "elasticmapreduce:DeleteEditor"
[コラボレーション] パネルを表示し、Workspace コラボレーションを有効にして、コラボレーターを追加します。詳細については、「Workspace コラボレーションの所有権の設定」を参照してください。 はい はい あり
"elasticmapreduce:UpdateEditor", "elasticmapreduce:PutWorkspaceAccess", "elasticmapreduce:DeleteWorkspaceAccess", "elasticmapreduce:ListWorkspaceAccessIdentities"
新しいEMRクラスターを作成するときに Studio と同じアカウントの Amazon S3 Control ストレージバケットのリストを表示し、ウェブ UI を使用してアプリケーションをデバッグするときにコンテナログにアクセスする はい はい あり
"s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketLocation", "s3:GetObject"
Workspace にアクセスする はい はい あり
"elasticmapreduce:DescribeEditor", "elasticmapreduce:ListEditors", "elasticmapreduce:StartEditor", "elasticmapreduce:StopEditor", "elasticmapreduce:OpenEditorInConsole"
Workspace に関連付けられた既存の Amazon EMRクラスターをアタッチまたはデタッチする はい はい あり
"elasticmapreduce:AttachEditor", "elasticmapreduce:DetachEditor", "elasticmapreduce:ListClusters", "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ListBootstrapActions"
EKS クラスターEMRで Amazon をアタッチまたはデタッチする はい はい あり
"elasticmapreduce:AttachEditor", "elasticmapreduce:DetachEditor", "emr-containers:ListVirtualClusters", "emr-containers:DescribeVirtualCluster", "emr-containers:ListManagedEndpoints", "emr-containers:DescribeManagedEndpoint", "emr-containers:GetManagedEndpointSessionCredentials"
Workspace に関連付けられている EMR Serverless アプリケーションをアタッチまたはデタッチする なし はい あり
"elasticmapreduce:AttachEditor", "elasticmapreduce:DetachEditor", "emr-serverless:GetApplication", "emr-serverless:StartApplication", "emr-serverless:ListApplications", "emr-serverless:GetDashboardForJobRun", "emr-serverless:AccessInteractiveEndpoints", "iam:PassRole"

EMR サーバーレスジョブランタイムロールを渡すには、 アクセスPassRole許可が必要です。詳細については、「Amazon Serverless ユーザーガイド」の「ジョブランタイムロール」を参照してください。 EMR

永続的なアプリケーションユーザーインターフェイスを使用して Amazon EMR on EC2ジョブをデバッグする はい はい あり
"elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL", "elasticmapreduce:ListClusters", "elasticmapreduce:ListSteps", "elasticmapreduce:DescribeCluster", "s3:ListBucket", "s3:GetObject"
クラスターEMR上のアプリケーションユーザーインターフェイスを使用して Amazon on EC2ジョブをデバッグする はい はい あり
"elasticmapreduce:GetOnClusterAppUIPresignedURL"
Spark History Server を使用して Amazon EMR on EKSジョブ実行をデバッグする はい はい あり
"elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL", "emr-containers:ListVirtualClusters", "emr-containers:DescribeVirtualCluster", "emr-containers:ListJobRuns", "emr-containers:DescribeJobRun", "s3:ListBucket", "s3:GetObject"
Git リポジトリを作成および削除する はい はい あり
"elasticmapreduce:CreateRepository", "elasticmapreduce:DeleteRepository", "elasticmapreduce:ListRepositories", "elasticmapreduce:DescribeRepository", "secretsmanager:CreateSecret", "secretsmanager:ListSecrets", "secretsmanager:TagResource"
Git リポジトリをリンクまたはリンク解除する はい はい あり
"elasticmapreduce:LinkRepository", "elasticmapreduce:UnlinkRepository", "elasticmapreduce:ListRepositories", "elasticmapreduce:DescribeRepository"
定義済みのクラスターテンプレートから新しいクラスターを作成する なし はい あり
"servicecatalog:SearchProducts", "servicecatalog:DescribeProduct", "servicecatalog:DescribeProductView", "servicecatalog:DescribeProvisioningParameters", "servicecatalog:ProvisionProduct", "servicecatalog:UpdateProvisionedProduct", "servicecatalog:ListProvisioningArtifacts", "servicecatalog:DescribeRecord", "servicecatalog:ListLaunchPaths", "cloudformation:DescribeStackResources", "elasticmapreduce:ListClusters", "elasticmapreduce:DescribeCluster"
クラスター設定を指定して新しいクラスターを作成します。 なし いいえ あり
"elasticmapreduce:RunJobFlow", "iam:PassRole", "elasticmapreduce:ListClusters", "elasticmapreduce:DescribeCluster"
IAM認証モードを使用するときに Studio にユーザーを割り当てます。 なし いいえ なし
"elasticmapreduce:CreateStudioPresignedUrl"
ネットワークオブジェクト記述する。 はい はい あり
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DescribeNetwork", "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource": "*" } ] }
IAM ロールを一覧表示します。 はい はい あり
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListIAMRoles", "Effect": "Allow", "Action": [ "iam:ListRoles" ], "Resource": "*" } ] }
Amazon EMR Studio から SageMaker Studio に接続し、Data Wrangler ビジュアルインターフェイスを使用します。 なし いいえ あり
"sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeDomain", "sagemaker:ListDomains", "sagemaker:ListUserProfiles"
EMR Studio CodeWhisperer で Amazon を使用します。 なし いいえ あり
"codewhisperer:GenerateRecommendations"
EMR Studio から Amazon Athena SQLエディタにアクセスします。このリストには、Athena のすべての機能を使用するために必要なすべてのアクセス許可が含まれていない場合があります。ほとんどの up-to-date リストについては、「Athena フルアクセスポリシー」を参照してください。 なし いいえ あり
"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"