Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
IAMkebijakan untuk akses berbasis tag ke cluster dan notebook EMR
Anda dapat menggunakan kondisi dalam kebijakan berbasis identitas untuk mengontrol akses ke cluster dan EMR buku catatan berdasarkan tag.
Untuk informasi selengkapnya tentang menambahkan tag ke cluster, lihat EMRMenandai cluster.
Contoh berikut menunjukkan skenario dan cara yang berbeda untuk menggunakan operator kondisi dengan kunci EMR kondisi Amazon. Pernyataan IAM kebijakan ini dimaksudkan untuk tujuan demonstrasi saja dan tidak boleh digunakan dalam lingkungan produksi. Ada beberapa cara untuk menggabungkan pernyataan kebijakan untuk memberikan dan menolak izin sesuai dengan kebutuhan Anda. Untuk informasi selengkapnya tentang IAM kebijakan perencanaan dan pengujian, lihat Panduan IAM Pengguna.
penting
Secara eksplisit menolak izin untuk tindakan penandaan adalah pertimbangan penting. Hal ini mencegah pengguna dari penandaan sumber daya dan dengan demikian memberikan sendiri izin yang tidak ingin Anda berikan. Jika Anda tidak menolak tindakan penandaan untuk sumber daya, pengguna dapat memodifikasi tag dan menghindari maksud kebijakan berbasis tag.
Contoh pernyataan kebijakan berbasis identitas untuk klaster
Contoh berikut menunjukkan kebijakan izin berbasis identitas yang digunakan untuk mengontrol tindakan yang diizinkan dengan cluster. EMR
penting
ModifyInstanceGroup
Tindakan di Amazon EMR tidak mengharuskan Anda menentukan ID cluster. Untuk alasan itu, menolak tindakan ini berdasarkan tanda klaster memerlukan pertimbangan tambahan. Untuk informasi selengkapnya, lihat Menyangkal ModifyInstanceGroup tindakan di Amazon EMR.
Topik
Izinkan tindakan hanya pada klaster dengan nilai tanda tertentu
Contoh berikut menunjukkan kebijakan yang mengizinkan pengguna melakukan tindakan berdasarkan tanda klaster
dengan nilai department
dan juga mengizinkan pengguna untuk memberi tanda klaster dengan tanda yang sama. Contoh kebijakan terakhir menunjukkan cara menolak hak istimewa untuk menandai EMR cluster dengan apa pun kecuali tag yang sama.dev
Di kebijakan contoh berikut, syarat operator StringEquals
mencoba untuk mencocokkan
dengan nilai untuk tanda dev
. Jika tanda department
belum ditambahkan ke klaster, atau tidak mengandung nilai department
, kebijakan tersebut tidak berlaku, dan tindakan tersebut tidak diizinkan oleh kebijakan ini. Jika tidak ada pernyataan kebijakan lain mengizinkan tindakan, pengguna hanya dapat bekerja dengan klaster yang memiliki tanda ini dengan nilai ini.dev
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt12345678901234", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListSteps", "elasticmapreduce:TerminateJobFlows", "elasticmapreduce:SetTerminationProtection", "elasticmapreduce:ListInstances", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ListBootstrapActions", "elasticmapreduce:DescribeStep" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": "dev" } } } ] }
Anda juga dapat menentukan beberapa nilai tanda menggunakan operator syarat. Misalnya, untuk mengizinkan semua tindakan pada grup di mana tanda
berisi nilai department
atau dev
, Anda bisa mengganti blok syarat di contoh sebelumnya dengan berikut ini. test
"Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department":["dev", "test"] } }
Memerlukan penandaan klaster ketika sebuah klaster dibuat
Seperti pada contoh sebelumnya, contoh kebijakan berikut mencari tag pencocokan yang sama: nilai
untuk dev
tag. Namun dalam contoh ini, kunci department
RequestTag
kondisi menetapkan bahwa kebijakan berlaku selama pembuatan tag. Jadi, Anda harus membuat cluster dengan tag yang cocok dengan nilai yang ditentukan.
Untuk membuat cluster dengan tag, Anda juga harus memiliki izin untuk elasticmapredue:AddTags
tindakan tersebut. Untuk pernyataan ini, kunci elasticmapreduce:ResourceTag
kondisi memastikan bahwa IAM hanya memberikan akses ke sumber daya tag dengan nilai
pada dev
tag. department
Resource
Elemen ini digunakan untuk membatasi izin ini ke sumber daya cluster.
Untuk PassRole
sumber daya, Anda harus memberikan ID AWS akun atau alias, nama peran layanan dalam PassRoleForEMR
pernyataan, dan nama profil instance dalam PassRoleForEC2
pernyataan. Untuk informasi selengkapnya tentang IAM ARN format, lihat IAMARNsdi Panduan IAM Pengguna.
Untuk informasi selengkapnya tentang pencocokan nilai tag-key, lihat aws:RequestTag/tag-key
di IAMPanduan Pengguna.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RunJobFlowExplicitlyWithTag", "Effect": "Allow", "Action": [ "elasticmapreduce:RunJobFlow" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/department": "dev" } } }, { "Sid": "AddTagsForDevClusters", "Effect": "Allow", "Action": "elasticmapreduce:AddTags", "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": "dev" } } }, { "Sid": "PassRoleForEMR", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::
AccountId
:role/Role-Name-With-Path
", "Condition": { "StringLike": { "iam:PassedToService": "elasticmapreduce.amazonaws.com*" } } }, { "Sid": "PassRoleForEC2", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::AccountId
:role/Role-Name-With-Path
", "Condition": { "StringLike": { "iam:PassedToService": "ec2.amazonaws.com*" } } } ] }
Izinkan tindakan pada klaster dengan tanda tertentu, terlepas dari nilai tanda
Anda juga dapat mengizinkan tindakan hanya pada klaster yang memiliki tanda tertentu, terlepas dari nilai tanda. Untuk melakukannya, Anda dapat menggunakan operator Null
. Untuk informasi selengkapnya, lihat Operator kondisi untuk memeriksa keberadaan kunci kondisi di Panduan IAM Pengguna. Misalnya, untuk mengizinkan tindakan hanya pada EMR cluster yang memiliki
tag, terlepas dari nilai yang dikandungnya, Anda dapat mengganti blok Kondisi pada contoh sebelumnya dengan yang berikut. department
Null
Operator mencari keberadaan tag
pada EMR cluster. Jika tanda ada, pernyataan department
Null
mengevaluasi ke SALAH, cocok dengan syarat yang ditentukan di pernyataan kebijakan ini, dan tindakan yang tepat diizinkan.
"Condition": { "Null": { "elasticmapreduce:ResourceTag/department":"false" } }
Pernyataan kebijakan berikut memungkinkan pengguna untuk membuat EMR klaster hanya jika klaster akan memiliki
tag, yang dapat berisi nilai apa pun. Untuk department
PassRole
sumber daya, Anda perlu memberikan ID AWS akun atau alias, dan nama peran layanan. Untuk informasi selengkapnya tentang IAM ARN format, lihat IAMARNsdi Panduan IAM Pengguna.
Untuk informasi selengkapnya yang menentukan operator kondisi null (“false”), lihat Operator kondisi untuk memeriksa keberadaan kunci kondisi di IAMPanduan Pengguna.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateClusterTagNullCondition", "Effect": "Allow", "Action": [ "elasticmapreduce:RunJobFlow" ], "Resource": [ "*" ], "Condition": { "Null": { "aws:RequestTag/department": "false" } } }, { "Sid": "AddTagsNullCondition", "Effect": "Allow", "Action": "elasticmapreduce:AddTags", "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*", "Condition": { "Null": { "elasticmapreduce:ResourceTag/department": "false" } } }, { "Sid": "PassRoleForElasticMapReduce", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::
AccountId
:role/Role-Name-With-Path
", "Condition": { "StringLike": { "iam:PassedToService": "elasticmapreduce.amazonaws.com*" } } }, { "Sid": "PassRoleForEC2", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::AccountId
:role/Role-Name-With-Path
", "Condition": { "StringLike": { "iam:PassedToService": "ec2.amazonaws.com*" } } } ] }
Contoh pernyataan kebijakan berbasis identitas untuk Notebook EMR
Contoh pernyataan IAM kebijakan di bagian ini menunjukkan skenario umum untuk menggunakan kunci untuk membatasi tindakan yang diizinkan menggunakan EMR Buku Catatan. Selama tidak ada kebijakan lain yang terkait dengan (pengguna) utama mengizinkan tindakan, kunci konteks syarat membatasi tindakan yang diizinkan seperti yang ditunjukkan.
contoh — Izinkan akses hanya ke EMR Notebook yang dibuat pengguna berdasarkan penandaan
Contoh pernyataan kebijakan berikut, ketika dilampirkan ke peran atau pengguna, memungkinkan pengguna untuk bekerja hanya dengan buku catatan yang telah mereka buat. Pernyataan kebijakan ini menggunakan tanda default yang diterapkan ketika notebook dibuat.
Dalam contoh, operator StringEquals
kondisi mencoba mencocokkan variabel yang mewakili pengguna saat ini ID pengguna ({aws:userId}
) dengan nilai tagcreatorUserID
. Jika tanda creatorUserID
belum ditambahkan ke notebook, atau tidak berisi nilai ID pengguna saat ini, kebijakan tidak berlaku, dan tindakan tersebut tidak diizinkan oleh kebijakan ini. Jika tidak ada pernyataan kebijakan lain mengizinkan tindakan, pengguna hanya dapat bekerja dengan notebook yang memiliki tanda ini dengan nilai ini.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:DescribeEditor", "elasticmapreduce:StartEditor", "elasticmapreduce:StopEditor", "elasticmapreduce:DeleteEditor", "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/creatorUserId": "${aws:userId}" } } } ] }
contoh –Memerlukan penandaan notebook saat notebook dibuat
di contoh ini, kunci konteks RequestTag
digunakan. Tindakan CreateEditor
diperbolehkan hanya jika pengguna tidak mengubah atau menghapus tanda creatorUserID
yang ditambahkan secara default. Variabel $ {aws:userId}, menentukan User ID pengguna yang saat ini aktif, yang merupakan nilai default tag.
Pernyataan kebijakan dapat digunakan untuk membantu memastikan bahwa pengguna tidak menghapus tanda createUserId
atau mengubah nilainya.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/creatorUserId": "${aws:userid}" } } } ] }
Contoh ini mengharuskan pengguna membuat klaster dengan tanda yang membuat string kunci dept
dan nilai diatur ke salah satu langkah berikut: datascience
, analytics
, operations
.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/dept": [ "datascience", "analytics", "operations" ] } } } ] }
contoh –Batasi pembuatan notebook ke klaster yang ditandai, dan memerlukan tanda notebook
Contoh ini mengizinkan pembuatan notebook hanya jika notebook dibuat dengan tanda yang memiliki string kunci owner
yang diatur ke salah satu nilai yang ditentukan. Selain itu, notebook hanya bisa dibuat jika klaster memiliki tanda dengan string kunci department
yang diatur ke salah satu nilai yang ditentukan.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/owner": [ "owner1", "owner2", "owner3" ], "elasticmapreduce:ResourceTag/department": [ "dep1", "dep3" ] } } } ] }
contoh –Batasi kemampuan mulai notebook berdasarkan tanda
Contoh ini membatasi kemampuan untuk memulai notebook hanya untuk notebook yang memiliki tanda dengan string kunci owner
yang diatur ke salah satu nilai yang ditentukan. Karena elemen Resource
digunakan hanya untuk menentukan editor
, syarat tidak berlaku untuk klaster, dan tidak perlu ditandai.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "owner1", "owner2" ] } } } ] }
Contoh ini mirip dengan yang di atas. Namun, batas hanya berlaku untuk grup yang ditandai, bukan notebook.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "dep1", "dep3" ] } } } ] }
Contoh ini menggunakan seperangkat notebook dan tanda klaster yang berbeda. Hal ini mengizinkan notebook untuk dimulai hanya jika:
-
Notebook ini memiliki tanda dengan string kunci
owner
yang diatur ke salah satu nilai yang ditentukan—dan—
-
Klaster memiliki tanda dengan string kunci
department
yang diatur ke salah satu nilai yang ditentukan
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "user1", "user2" ] } } }, { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "datascience", "analytics" ] } } } ] }
contoh –Batasi kemampuan untuk membuka editor notebook berdasarkan tanda
Contoh ini mengizinkan editor notebook dibuka hanya jika:
-
Notebook ini memiliki tanda dengan string kunci
owner
yang diatur ke salah satu nilai yang ditentukan.—dan—
-
Klaster memiliki tanda dengan string kunci
department
yang diatur ke salah satu nilai yang ditentukan.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "user1", "user2" ] } } }, { "Action": [ "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "datascience", "analytics" ] } } } ] }