Konfigurasikan izin pengguna EMR Studio untuk Amazon atau EC2 Amazon EKS - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konfigurasikan izin pengguna EMR Studio untuk Amazon atau EC2 Amazon EKS

Anda harus mengonfigurasi kebijakan izin pengguna untuk Amazon EMR Studio sehingga Anda dapat menyetel izin pengguna dan grup yang berbutir halus. Untuk informasi tentang cara kerja izin pengguna di EMR Studio, Kontrol akses lihat di. Cara Kerja Amazon EMR Studio

catatan

Izin yang tercakup dalam bagian ini tidak memberlakukan kontrol akses data. Untuk mengelola akses ke set data input, Anda harus mengonfigurasi izin untuk klaster yang digunakan Studio Anda. Untuk informasi selengkapnya, lihat Keamanan di Amazon EMR.

Buat peran pengguna EMR Studio untuk mode autentikasi IAM Identity Center

Anda harus membuat peran pengguna EMR Studio saat menggunakan mode autentikasi Pusat Identitas IAM.

Untuk membuat peran pengguna untuk EMR Studio
  1. Ikuti petunjuk dalam Membuat peran untuk mendelegasikan izin ke AWS layanan di Panduan AWS Identity and Access Management Pengguna untuk membuat peran pengguna.

    Saat Anda membuat peran, gunakan kebijakan hubungan kepercayaan berikut.

    { "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "elasticmapreduce.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext" ] } ] }
  2. Hapus izin dan kebijakan peran default.

  3. Sebelum menetapkan pengguna dan grup ke Studio, lampirkan kebijakan sesi EMR Studio Anda ke peran pengguna. Untuk petunjuk tentang cara membuat kebijakan sesi, lihatMembuat kebijakan izin untuk pengguna EMR Studio.

Membuat kebijakan izin untuk pengguna EMR Studio

Lihat bagian berikut untuk membuat kebijakan izin untuk EMR Studio.

catatan

Untuk menyetel izin akses Amazon S3 untuk menyimpan file notebook, dan untuk mengatur izin AWS Secrets Manager akses untuk membaca rahasia saat Anda menautkan Workspaces ke repositori Git, gunakan peran layanan EMR Studio.

Buat kebijakan izin

Buat satu atau beberapa kebijakan izin IAM yang menentukan tindakan apa yang dapat dilakukan pengguna di Studio Anda. Misalnya, Anda dapat membuat tiga kebijakan terpisah untuk tipe pengguna Studio dasar, menengah, dan lanjutan dengan contoh kebijakan di halaman ini.

Untuk rincian setiap operasi Studio yang mungkin dilakukan pengguna, dan tindakan IAM minimum yang diperlukan untuk melakukan setiap operasi, lihatAWS Identity and Access Management izin untuk pengguna EMR Studio. Untuk langkah-langkah untuk membuat kebijakan, lihat Membuat kebijakan IAM di Panduan Pengguna IAM.

Kebijakan izin Anda harus menyertakan pernyataan berikut.

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

Tetapkan kepemilikan untuk kolaborasi Workspace

Kolaborasi ruang kerja memungkinkan beberapa pengguna bekerja secara bersamaan di Workspace yang sama dan dapat dikonfigurasi dengan panel Kolaborasi di UI Workspace. Untuk melihat dan menggunakan panel Kolaborasi, pengguna harus memiliki izin berikut. Setiap pengguna dengan izin ini dapat melihat dan menggunakan panel Kolaborasi.

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

Untuk membatasi akses ke panel Kolaborasi, Anda dapat menggunakan kontrol akses berbasis tag. Saat pengguna membuat Workspace, EMR Studio menerapkan tag default dengan kunci creatorUserId yang nilainya adalah ID pengguna yang membuat Workspace.

catatan

EMR Studio menambahkan creatorUserId tag ke Ruang Kerja yang dibuat setelah 16 November 2021. Untuk membatasi siapa saja yang dapat mengonfigurasi kolaborasi untuk ruang kerja yang Anda buat sebelum tanggal ini, sebaiknya tambahkan creatorUserId tag secara manual ke Ruang Kerja, lalu gunakan kontrol akses berbasis tag dalam kebijakan izin pengguna.

Pernyataan contoh berikut memungkinkan pengguna mengonfigurasi kolaborasi untuk Workspace apa pun dengan kunci tag creatorUserId yang nilainya cocok dengan ID pengguna (ditunjukkan oleh variabel kebijakanaws:userId). Dengan kata lain, pernyataan tersebut memungkinkan pengguna mengonfigurasi kolaborasi untuk Workspaces yang mereka buat. Untuk mempelajari lebih lanjut tentang variabel kebijakan, lihat elemen kebijakan IAM: Variabel dan tag di Panduan Pengguna IAM.

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

Buat kebijakan rahasia Git tingkat pengguna

Untuk menggunakan izin tingkat pengguna

EMR Studio secara otomatis menambahkan for-use-with-amazon-emr-managed-user-policies tag saat membuat rahasia Git. Jika Anda ingin mengontrol akses ke rahasia Git di tingkat pengguna, tambahkan izin berbasis tag ke kebijakan peran pengguna EMR Studio dengan secretsmanager:GetSecretValue seperti yang ditunjukkan pada bagian di bawah ini. Untuk beralih dari izin tingkat layanan ke izin tingkat pengguna

Jika Anda memiliki izin yang ada secretsmanager:GetSecretValue dalam kebijakan peran layanan EMR Studio, Anda harus menghapus izin tersebut.

Untuk beralih dari izin tingkat layanan ke izin tingkat pengguna

catatan

for-use-with-amazon-emr-managed-user-policiesTag memastikan bahwa izin dari Langkah 1 di bawah ini memberikan pencipta ruang kerja akses ke rahasia Git. Namun, jika Anda menautkan repositori Git sebelum 1 September 2023, maka rahasia Git yang sesuai akan ditolak aksesnya karena tag tersebut for-use-with-amazon-emr-managed-user-policies tidak diterapkan. Untuk menerapkan izin tingkat pengguna, Anda harus membuat ulang rahasia lama dari JupyterLab dan menautkan kembali repositori Git yang sesuai.

Untuk informasi selengkapnya tentang variabel kebijakan, lihat elemen kebijakan IAM: Variabel dan tag di Panduan Pengguna IAM.

  1. Tambahkan izin berikut ke kebijakan peran pengguna EMR Studio. Ia menggunakan for-use-with-amazon-emr-managed-user-policies kunci dengan nilai"${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. Jika ada, hapus izin berikut dari kebijakan peran layanan EMR Studio. Karena kebijakan peran layanan berlaku untuk semua rahasia yang ditentukan oleh setiap pengguna, Anda hanya perlu melakukan ini satu kali.

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

Untuk menggunakan izin tingkat layanan

Mulai 1 September 2023, EMR Studio secara otomatis menambahkan tag untuk kontrol for-use-with-amazon-emr-managed-user-policies akses tingkat pengguna. Karena ini adalah kemampuan tambahan, Anda dapat terus menggunakan akses tingkat layanan yang tersedia melalui GetSecretValue izin dalam peran layanan EMR Studio.

Untuk rahasia yang dibuat sebelum 1 September 2023, EMR Studio tidak menambahkan for-use-with-amazon-emr-managed-user-policies tag. Untuk tetap menggunakan izin tingkat layanan, cukup pertahankan peran layanan EMR Studio dan izin peran pengguna yang ada. Namun, untuk membatasi siapa yang dapat mengakses rahasia individu, kami sarankan Anda mengikuti langkah-langkah untuk menambahkan for-use-with-amazon-emr-managed-user-policies tag secara manual Untuk menggunakan izin tingkat pengguna ke rahasia Anda, dan kemudian menggunakan kontrol akses berbasis tag dalam kebijakan izin pengguna Anda.

Untuk informasi selengkapnya tentang variabel kebijakan, lihat elemen kebijakan IAM: Variabel dan tag di Panduan Pengguna IAM.

Lampirkan kebijakan izin ke identitas IAM Anda

Tabel berikut merangkum identitas IAM yang Anda lampirkan pada kebijakan izin, tergantung pada mode otentikasi EMR Studio Anda. Untuk petunjuk tentang cara melampirkan kebijakan, lihat Menambahkan dan menghapus izin identitas IAM.

Jika Anda menggunakan... Lampirkan kebijakan ke...
Autentikasi IAM Identitas IAM Anda (pengguna, grup pengguna, atau peran). Misalnya, Anda dapat melampirkan kebijakan izin ke pengguna di akun Anda Akun AWS.
Federasi IAM dengan penyedia identitas eksternal (iDP)

Peran atau peran IAM yang Anda buat untuk iDP eksternal Anda. Misalnya, IAM untuk federasi SAMP 2.0.

EMR Studio menggunakan izin yang Anda lampirkan ke peran IAM untuk pengguna dengan akses federasi ke Studio.

Pusat Identitas IAM Peran pengguna Amazon EMR Studio Anda.

Contoh kebijakan pengguna

Kebijakan pengguna dasar berikut memungkinkan sebagian besar tindakan EMR Studio, tetapi tidak mengizinkan pengguna membuat kluster EMR Amazon baru.

penting

Kebijakan contoh tidak menyertakan CreateStudioPresignedUrl izin, yang harus Anda izinkan untuk pengguna saat Anda menggunakan mode autentikasi IAM. Untuk informasi selengkapnya, lihat Menetapkan pengguna atau grup ke EMR Studio.

Kebijakan contoh menyertakan Condition elemen untuk menerapkan kontrol akses berbasis tag (TBAC) sehingga Anda dapat menggunakan kebijakan dengan peran layanan contoh untuk EMR Studio. Untuk informasi selengkapnya, lihat Membuat peran layanan 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":"*" } ] }

Kebijakan pengguna perantara berikut memungkinkan sebagian besar tindakan EMR Studio, dan memungkinkan pengguna membuat kluster EMR Amazon baru menggunakan templat klaster.

penting

Kebijakan contoh tidak menyertakan CreateStudioPresignedUrl izin, yang harus Anda izinkan untuk pengguna saat Anda menggunakan mode autentikasi IAM. Untuk informasi selengkapnya, lihat Menetapkan pengguna atau grup ke EMR Studio.

Kebijakan contoh menyertakan Condition elemen untuk menerapkan kontrol akses berbasis tag (TBAC) sehingga Anda dapat menggunakan kebijakan dengan peran layanan contoh untuk EMR Studio. Untuk informasi selengkapnya, lihat Membuat peran layanan 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" } ] }

Kebijakan pengguna lanjutan berikut memungkinkan semua tindakan EMR Studio, dan memungkinkan pengguna membuat kluster EMR Amazon baru menggunakan templat klaster atau dengan menyediakan konfigurasi cluster.

penting

Kebijakan contoh tidak menyertakan CreateStudioPresignedUrl izin, yang harus Anda izinkan untuk pengguna saat Anda menggunakan mode autentikasi IAM. Untuk informasi selengkapnya, lihat Menetapkan pengguna atau grup ke EMR Studio.

Kebijakan contoh menyertakan Condition elemen untuk menerapkan kontrol akses berbasis tag (TBAC) sehingga Anda dapat menggunakan kebijakan dengan peran layanan contoh untuk EMR Studio. Untuk informasi selengkapnya, lihat Membuat peran layanan 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" } ] }

Kebijakan pengguna berikut berisi izin pengguna minimum yang diperlukan untuk menggunakan aplikasi interaktif EMR Tanpa Server dengan EMR Studio Workspaces.

Dalam contoh kebijakan ini yang memiliki izin pengguna untuk aplikasi interaktif EMR Tanpa Server dengan EMR Studio, ganti placeholder serverless-runtime-role untuk emr-studio-service-role dan dengan peran layanan EMR Studio dan peran runtime EMR Tanpa Server Anda yang benar.

{ "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 izin untuk pengguna EMR Studio

Tabel berikut mencakup setiap operasi Amazon EMR Studio yang mungkin dilakukan pengguna, dan mencantumkan tindakan IAM minimum yang diperlukan untuk melakukan operasi tersebut. Anda mengizinkan tindakan ini dalam kebijakan izin IAM (saat Anda menggunakan autentikasi IAM) atau dalam kebijakan sesi peran pengguna (saat Anda menggunakan autentikasi IAM Identity Center) untuk EMR Studio.

Tabel ini juga menampilkan operasi yang diizinkan di setiap contoh kebijakan izin untuk EMR Studio. Untuk informasi selengkapnya tentang contoh kebijakan izin, lihatMembuat kebijakan izin untuk pengguna EMR Studio.

Tindakan Dasar Menengah Lanjutan Tindakan terkait
Membuat dan menghapus Workspace Ya Ya Ya
"elasticmapreduce:CreateEditor", "elasticmapreduce:DescribeEditor", "elasticmapreduce:ListEditors", "elasticmapreduce:DeleteEditor"
Lihat panel Kolaborasi, aktifkan kolaborasi Workspace, dan tambahkan kolaborator. Untuk informasi selengkapnya, lihat Menetapkan kepemilikan untuk kolaborasi Workspace. Ya Ya Ya
"elasticmapreduce:UpdateEditor", "elasticmapreduce:PutWorkspaceAccess", "elasticmapreduce:DeleteWorkspaceAccess", "elasticmapreduce:ListWorkspaceAccessIdentities"
Lihat daftar bucket Amazon S3 Control penyimpanan di akun yang sama dengan Studio saat membuat klaster EMR baru, dan mengakses log kontainer saat menggunakan UI web untuk men-debug aplikasi Ya Ya Ya
"s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketLocation", "s3:GetObject"
Mengakses Workspace Ya Ya Ya
"elasticmapreduce:DescribeEditor", "elasticmapreduce:ListEditors", "elasticmapreduce:StartEditor", "elasticmapreduce:StopEditor", "elasticmapreduce:OpenEditorInConsole"
Melampirkan atau melepaskan klaster Amazon EMR yang ada yang terkait dengan Workspace Ya Ya Ya
"elasticmapreduce:AttachEditor", "elasticmapreduce:DetachEditor", "elasticmapreduce:ListClusters", "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ListBootstrapActions"
Melampirkan atau melepaskan Amazon EMR pada klaster EKS Ya Ya Ya
"elasticmapreduce:AttachEditor", "elasticmapreduce:DetachEditor", "emr-containers:ListVirtualClusters", "emr-containers:DescribeVirtualCluster", "emr-containers:ListManagedEndpoints", "emr-containers:DescribeManagedEndpoint", "emr-containers:GetManagedEndpointSessionCredentials"
Lampirkan atau lepaskan aplikasi EMR Tanpa Server yang terkait dengan Workspace Tidak Ya Ya
"elasticmapreduce:AttachEditor", "elasticmapreduce:DetachEditor", "emr-serverless:GetApplication", "emr-serverless:StartApplication", "emr-serverless:ListApplications", "emr-serverless:GetDashboardForJobRun", "emr-serverless:AccessInteractiveEndpoints", "iam:PassRole"

PassRoleIzin diperlukan untuk lulus peran runtime pekerjaan EMR Tanpa Server. Untuk informasi selengkapnya, lihat Peran runtime Job di Panduan Pengguna Tanpa Server Amazon EMR.

Debug Amazon EMR EC2 pada pekerjaan dengan antarmuka pengguna aplikasi persisten Ya Ya Ya
"elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL", "elasticmapreduce:ListClusters", "elasticmapreduce:ListSteps", "elasticmapreduce:DescribeCluster", "s3:ListBucket", "s3:GetObject"
Debug Amazon EMR EC2 pada pekerjaan dengan antarmuka pengguna aplikasi on-cluster Ya Ya Ya
"elasticmapreduce:GetOnClusterAppUIPresignedURL"
Men-debug pekerjaan Amazon EMR pada EKS yang berjalan menggunakan Spark History Server Ya Ya Ya
"elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL", "emr-containers:ListVirtualClusters", "emr-containers:DescribeVirtualCluster", "emr-containers:ListJobRuns", "emr-containers:DescribeJobRun", "s3:ListBucket", "s3:GetObject"
Membuat dan menghapus repositori Git Ya Ya Ya
"elasticmapreduce:CreateRepository", "elasticmapreduce:DeleteRepository", "elasticmapreduce:ListRepositories", "elasticmapreduce:DescribeRepository", "secretsmanager:CreateSecret", "secretsmanager:ListSecrets", "secretsmanager:TagResource"
Menautkan dan menghapus tautan repositori Git Ya Ya Ya
"elasticmapreduce:LinkRepository", "elasticmapreduce:UnlinkRepository", "elasticmapreduce:ListRepositories", "elasticmapreduce:DescribeRepository"
Membuat klaster baru dari templat klaster yang telah ditetapkan Tidak Ya Ya
"servicecatalog:SearchProducts", "servicecatalog:DescribeProduct", "servicecatalog:DescribeProductView", "servicecatalog:DescribeProvisioningParameters", "servicecatalog:ProvisionProduct", "servicecatalog:UpdateProvisionedProduct", "servicecatalog:ListProvisioningArtifacts", "servicecatalog:DescribeRecord", "servicecatalog:ListLaunchPaths", "cloudformation:DescribeStackResources", "elasticmapreduce:ListClusters", "elasticmapreduce:DescribeCluster"
Menyediakan konfigurasi cluster untuk membuat cluster baru. Tidak Tidak Ya
"elasticmapreduce:RunJobFlow", "iam:PassRole", "elasticmapreduce:ListClusters", "elasticmapreduce:DescribeCluster"
Tetapkan pengguna ke Studio saat Anda menggunakan mode autentikasi IAM. Tidak Tidak Tidak
"elasticmapreduce:CreateStudioPresignedUrl"
Jelaskan objek jaringan. Ya Ya Ya
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DescribeNetwork", "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource": "*" } ] }
Daftar peran IAM. Ya Ya Ya
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListIAMRoles", "Effect": "Allow", "Action": [ "iam:ListRoles" ], "Resource": "*" } ] }
Connect ke EMR Studio dari Amazon SageMaker AI Studio dan gunakan antarmuka visual Data Wrangler. Tidak Tidak Ya
"sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeDomain", "sagemaker:ListDomains", "sagemaker:ListUserProfiles"
Gunakan Amazon CodeWhisperer di EMR Studio Anda. Tidak Tidak Ya
"codewhisperer:GenerateRecommendations"
Akses editor SQL Amazon Athena dari EMR Studio Anda. Daftar ini mungkin tidak menyertakan semua izin yang Anda perlukan untuk menggunakan semua fitur Athena. Untuk up-to-date daftar terbanyak, lihat kebijakan akses penuh Athena. Tidak Tidak Ya
"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"