翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
きめ細かなユーザーおよびグループのアクセス許可を設定できるように、Amazon EMR Studio のユーザーアクセス許可ポリシーを設定する必要があります。EMR Studio でのユーザーアクセス許可の仕組みについては、「Amazon EMR Studio の仕組み」の「アクセスコントロール」を参照してください。
注記
このセクションで説明するアクセス許可は、データアクセスコントロールを適用しません。入力データセットへのアクセスを管理するには、Studio が使用するクラスターのアクセス許可を設定する必要があります。詳細については、「Amazon EMR でのセキュリティ」を参照してください。
IAM Identity Center 認証モードの EMR Studio ユーザーロールの作成
IAM Identity Center 認証モードを使用する場合、EMR Studio ユーザーロールを作成する必要があります。
EMR Studio のユーザーロールを作成するには
-
「 ユーザーガイド」の「 AWS サービスにアクセス許可を委任するロールの作成」の手順に従って、ユーザーロールを作成します。 AWS Identity and Access Management
ロールを作成する場合、次の信頼関係ポリシーを使用します。
{ "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "elasticmapreduce.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext" ] } ] }
-
デフォルトのロールアクセス許可およびポリシーを削除します。
-
ユーザーとグループを Studio に割り当てる前に、EMR Studio セッションポリシーをユーザーロールにアタッチします。セッションポリシーを作成する方法の手順については、「EMR Studio ユーザーのアクセス許可ポリシーの作成」を参照してください。
EMR Studio ユーザーのアクセス許可ポリシーの作成
EMR Studio のアクセス許可ポリシーを作成するには、次のセクションを参照してください。
注記
ノートブックファイルを保存するための Amazon S3 アクセス許可および Workspace を Git リポジトリにリンクしているときにシークレットを読み取るための AWS Secrets Manager アクセス許可を設定するには、EMR Studio サービスロールを使用します。
アクセス許可ポリシーを作成します。
ユーザーが Studio で実行できるアクションを指定する、1 つ以上の IAM アクセス許可ポリシーを作成します。たとえば、このページのサンプルポリシーを使用して、基本、中級、上級の 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 を作成すると、EMR Studio は、Workspace を作成したユーザーの ID を値とする creatorUserId
のキーの付いたデフォルトタグを適用します。
注記
EMR Studio は、2021 年 11 月 16 日以降に作成されたワークスペースに 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 ポリシー要素: 変数およびタグ」を参照してください。
-
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
}" } } } -
存在する場合は、EMR Studio サービスロールポリシーから次のアクセス許可を削除します。サービスロールポリシーは各ユーザーが定義したすべてのシークレットに適用されるため、この操作は 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 日以降、EMR Studio はユーザーレベルのアクセス制御用の for-use-with-amazon-emr-managed-user-policies
タグを自動的に追加します。これは追加機能であるため、EMR Studio サービスロールの GetSecretValue
アクセス許可を通じて利用できるサービスレベルのアクセスを引き続き使用できます。
2023 年 9 月 1 日より前に作成されたシークレットについては、EMR Studio は for-use-with-amazon-emr-managed-user-policies
タグを追加しませんでした。サービスレベルのアクセス許可を引き続き使用するには、既存の EMR Studio サービスロールとユーザーロールのアクセス許可を保持するだけです。ただし、個々のシークレットにアクセスできるユーザーを制限するには、ユーザーレベルのアクセス許可を使用するには の手順に従って for-use-with-amazon-emr-managed-user-policies
タグをシークレットに手動で追加してから、ユーザーアクセス許可ポリシーでタグベースのアクセス制御を使用することをお勧めします。
ポリシー変数に関する詳細については、IAM ユーザーガイドの「IAM ポリシー要素: 変数およびタグ」を参照してください。
アクセス許可ポリシーを IAM ID にアタッチする
次の表は、EMR Studio 認証モードに応じて、アクセス許可ポリシーをアタッチする IAM ID をまとめたものです。ポリシーをアタッチする方法については、「IAM ID のアクセス許可の追加および削除」を参照してください。
使用するもの | ポリシーのアタッチ先 |
---|---|
IAM 認証 | IAM ID (ユーザー、ユーザーのグループ、ロール)。例えば、 AWS アカウントのユーザーにアクセス許可ポリシーをアタッチできます。 |
外部 ID プロバイダー (IdP) による IAM フェデレーション |
外部 IdP 用に作成した 1 つ以上の IAM ロール。例えば、SAML 2.0 フェデレーション用の IAM などです。 EMR Studio は、Studio へのフェデレーションアクセス権を持つユーザーに対して、IAM ロールにアタッチしたアクセス許可を使用します。 |
IAM アイデンティティセンター | Amazon EMR Studio ユーザーロール。 |
ユーザーポリシーの例
次の基本ユーザーポリシーでは、ほとんどの EMR Studio アクションが許可されますが、ユーザーが新しい Amazon EMR クラスターを作成することはできません。
重要
サンプルポリシーには、CreateStudioPresignedUrl
アクセス許可が含まれていません。このアクセス許可は、IAM 認証モードを使用する場合はユーザーに許可する必要があります。詳細については、「EMR Studio にユーザーまたはグループを割り当てる」を参照してください。
サンプルポリシーには、EMR Studio のサンプルサービスロールでポリシーを使用できるように、タグベースのアクセスコントロール (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 クラスターを作成できます。
重要
サンプルポリシーには、CreateStudioPresignedUrl
アクセス許可が含まれていません。このアクセス許可は、IAM 認証モードを使用する場合はユーザーに許可する必要があります。詳細については、「EMR Studio にユーザーまたはグループを割り当てる」を参照してください。
サンプルポリシーには、EMR Studio のサンプルサービスロールでポリシーを使用できるように、タグベースのアクセスコントロール (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 アクションが許可され、ユーザーはクラスターテンプレートを使用するか、クラスター設定を提供して新しい Amazon EMR クラスターを作成できます。
重要
サンプルポリシーには、CreateStudioPresignedUrl
アクセス許可が含まれていません。このアクセス許可は、IAM 認証モードを使用する場合はユーザーに許可する必要があります。詳細については、「EMR Studio にユーザーまたはグループを割り当てる」を参照してください。
サンプルポリシーには、EMR Studio のサンプルサービスロールでポリシーを使用できるように、タグベースのアクセスコントロール (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"
}
]
}
次のユーザーポリシーには、EMR Studio 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 アクションのリストを示しています。これらのアクションは、EMR Studio に対して IAM アクセス許可ポリシー (IAM 認証を使用する場合) またはユーザーロールセッションポリシー (IAM Identity Center 認証を使用する場合) で許可します。
この表には、EMR Studio のアクセス許可ポリシーの各例で許可されるオペレーションも表示されます。許可ポリシーの例の詳細については、「EMR Studio ユーザーのアクセス許可ポリシーの作成」を参照してください。
アクション | ベーシック | 中級 | アドバンスト | 関連アクション |
---|---|---|---|---|
Workspace を作成および削除する | あり | あり | あり |
|
[コラボレーション] パネルを表示し、Workspace コラボレーションを有効にして、コラボレーターを追加します。詳細については、「Workspace コラボレーションの所有権の設定」を参照してください。 | あり | あり | あり |
|
新しい EMR クラスターの作成時に Studio と同じアカウントの Amazon S3 Control ストレージバケットのリストを表示し、ウェブ UI を使用してアプリケーションをデバッグするときにコンテナログにアクセスする | あり | あり | あり |
|
Workspace にアクセスする | あり | あり | あり |
|
Workspace に関連付けられている既存の Amazon EMR クラスターをアタッチまたはデタッチする | あり | あり | あり |
|
Amazon EMR on EKS クラスターをアタッチまたはデタッチする | あり | あり | あり |
|
Workspace に関連付けられた EMR Serverless アプリケーションをアタッチまたはデタッチする | いいえ | あり | あり |
EMR Serverless ジョブのランタイムロールを渡すには、 |
永続的なアプリケーションユーザーインターフェイスで Amazon EMR on EC2 ジョブをデバッグする | あり | あり | あり |
|
クラスター上のアプリケーションユーザーインターフェイスで Amazon EMR on EC2 ジョブをデバッグする | あり | あり | あり |
|
Spark History Server を使用して Amazon EMR on EKS ジョブ実行をデバッグする | あり | あり | あり |
|
Git リポジトリを作成および削除する | あり | あり | あり |
|
Git リポジトリをリンクまたはリンク解除する | あり | あり | あり |
|
定義済みのクラスターテンプレートから新しいクラスターを作成する | いいえ | あり | あり |
|
クラスター設定を指定して新しいクラスターを作成します。 | いいえ | なし | あり |
|
IAM 認証モードを使用するときに、Studio にユーザーを割り当てます。 | いいえ | いいえ | いいえ |
|
ネットワークオブジェクト記述する。 | あり | あり | あり |
|
IAM ロールを一覧表示する。 | あり | あり | あり |
|
Amazon SageMaker AI Studio から EMR Studio に接続し、Data Wrangler ビジュアルインターフェイスを使用します。 |
いいえ | なし | あり |
|
EMR Studio で Amazon CodeWhisperer を使用します。 | いいえ | なし | あり |
|
EMR Studio から Amazon Athena SQL エディターにアクセスします。このリストには、Athena のすべての機能を使用するために必要なすべてのアクセス許可が含まれていない場合があります。最新のリストについては、「Athena のフルアクセスポリシー」を参照してください。 | いいえ | なし | あり |
|