IAMkebijakan untuk akses berbasis tag ke cluster dan notebook EMR - Amazon EMR

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

ModifyInstanceGroupTindakan 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.

Izinkan tindakan hanya pada klaster dengan nilai tanda tertentu

Contoh berikut menunjukkan kebijakan yang mengizinkan pengguna melakukan tindakan berdasarkan tanda klaster department dengan nilai dev 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.

Di kebijakan contoh berikut, syarat operator StringEquals mencoba untuk mencocokkan dev dengan nilai untuk tanda department. Jika tanda department belum ditambahkan ke klaster, atau tidak mengandung nilai dev, 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.

{ "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 department berisi nilai dev atau test, Anda bisa mengganti blok syarat di contoh sebelumnya dengan berikut ini.

"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 dev untuk department tag. Namun dalam contoh ini, kunci 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 dev pada department tag. ResourceElemen 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-keydi 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 department tag, terlepas dari nilai yang dikandungnya, Anda dapat mengganti blok Kondisi pada contoh sebelumnya dengan yang berikut. NullOperator mencari keberadaan tag department pada EMR cluster. Jika tanda ada, pernyataan 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 department tag, yang dapat berisi nilai apa pun. Untuk 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" ] } } } ] }