Menggunakan tag untuk mengontrol akses ke CodePipeline sumber daya - AWS CodePipeline

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

Menggunakan tag untuk mengontrol akses ke CodePipeline sumber daya

Kondisi dalam pernyataan kebijakan IAM adalah bagian dari sintaks yang Anda gunakan untuk menentukan izin ke sumber daya yang diperlukan oleh tindakan. CodePipeline Menggunakan tanda dalam kondisi adalah salah satu cara untuk mengontrol akses ke sumber daya dan permintaan. Untuk informasi tentang menandai CodePipeline sumber daya, lihatPenandaan pada sumber daya . Topik ini membahas kontrol akses berbasis tanda.

Saat merancang kebijakan IAM, Anda mungkin menetapkan izin terperinci dengan memberikan akses ke sumber daya tertentu. Saat jumlah sumber daya yang Anda kelola bertambah, tugas ini menjadi lebih sulit. Menandai sumber daya dan menggunakan tanda dalam kondisi pernyataan kebijakan dapat mempermudah tugas ini. Anda memberikan akses secara massal ke sumber daya dengan tag tertentu. Kemudian Anda menerapkan tag ini berulang kali ke sumber daya yang relevan, selama pembuatan atau yang lebih baru.

Tag dapat dilampirkan ke sumber daya atau diteruskan atas permintaan ke layanan yang mendukung penandaan. Di CodePipeline, sumber daya dapat memiliki tag, dan beberapa tindakan dapat menyertakan tag. Saat membuat kebijakan IAM, Anda dapat menggunakan kunci kondisi tag untuk mengontrol:

  • Manakah pengguna yang dapat melakukan tindakan pada sumber daya alur, berdasarkan tanda yang telah dimiliki.

  • Tanda apa yang dapat diteruskan dalam permintaan tindakan.

  • Apakah kunci tanda tertentu dapat digunakan dalam permintaan.

Operator ketentuan string memungkinkan Anda membangun elemen Condition yang membatasi akses berdasarkan perbandingan kunci ke nilai string. Anda dapat menambahkan IfExists ke akhir nama operator kondisi apa pun kecuali kondisi Null. Anda melakukan ini untuk mengatakan "Jika kunci kebijakan ada dalam konteks permintaan, proses kuncinya seperti yang ditentukan dalam kebijakan. Jika kuncinya tidak ada, evaluasi elemen ketentuan sebagai benar." Misalnya, Anda dapat menggunakan StringEqualsIfExists untuk membatasi dengan kunci kondisi yang mungkin tidak ada pada jenis sumber daya lainnya.

Untuk sintaks dan semantik lengkap kunci kondisi tag, lihat Mengontrol Akses Menggunakan Tag. Untuk informasi tambahan tentang kunci kondisi, lihat sumber daya berikut. Contoh CodePipeline kebijakan di bagian ini selaras dengan informasi berikut tentang kunci kondisi dan memperluasnya dengan contoh nuansa CodePipeline seperti penyarangan sumber daya.

Contoh berikut menunjukkan cara menentukan kondisi tag dalam kebijakan untuk CodePipeline pengguna.

contoh 1: Batasi tindakan berdasarkan tanda dalam permintaan

Kebijakan pengguna AWSCodePipeline_FullAccess terkelola memberi pengguna izin tak terbatas untuk melakukan CodePipeline tindakan apa pun pada sumber daya apa pun.

Kebijakan berikut membatasi kekuatan ini dan menolak izin pengguna yang tidak sah untuk membuat saluran pipa di mana tag tertentu tercantum dalam permintaan. Untuk melakukan itu, ia menolak tindakan CreatePipeline jika permintaan menentukan tag bernama Project dengan salah satu nilai ProjectA atau ProjectB. (Kunci syarat aws:RequestTag digunakan untuk mengontrol tanda yang dapat diteruskan dalam permintaan IAM.)

Dalam contoh berikut, maksud kebijakan adalah untuk menolak izin pengguna yang tidak sah untuk membuat pipeline dengan nilai tag yang ditentukan. Namun, membuat pipa membutuhkan akses sumber daya selain pipa itu sendiri (misalnya, tindakan dan tahapan pipa). Karena yang 'Resource' ditentukan dalam kebijakan adalah'*', kebijakan dievaluasi terhadap setiap sumber daya yang memiliki ARN dan dibuat ketika pipeline sedang dibuat. Sumber daya tambahan ini tidak memiliki kunci kondisi tag, sehingga StringEquals pemeriksaan gagal, dan pengguna tidak diberikan kemampuan untuk membuat pipeline apa pun. Untuk mengatasi ini, gunakan operator ketentuan StringEqualsIfExists. Dengan cara ini, pengujian hanya terjadi jika terdapat kunci kondisi.

Anda dapat membaca berikut ini sebagai: “Jika sumber daya yang diperiksa memiliki kunci "RequestTag/Project" kondisi tag, maka izinkan tindakan hanya jika nilai kunci dimulai denganprojectA. Jika sumber daya yang diperiksa tidak memiliki kunci kondisi itu, jangan khawatir tentang hal tersebut.”

Selain itu, kebijakan ini mencegah pengguna yang tidak sah ini merusak sumber daya dengan menggunakan kunci aws:TagKeys kondisi untuk tidak mengizinkan tindakan modifikasi tag menyertakan nilai tag yang sama ini. Administrator pelanggan harus melampirkan kebijakan IAM ini kepada pengguna administratif yang tidak sah, selain kebijakan pengguna yang dikelola.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codepipeline:CreatePipeline", "codepipeline:TagResource" ], "Resource": "*", "Condition": { "StringEqualsIfExists": { "aws:RequestTag/Project": ["ProjectA", "ProjectB"] } } }, { "Effect": "Deny", "Action": [ "codepipeline:UntagResource" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["Project"] } } } ] }
contoh 2: Batasi tindakan penandaan berdasarkan tag sumber daya

Kebijakan pengguna AWSCodePipeline_FullAccess terkelola memberi pengguna izin tak terbatas untuk melakukan CodePipeline tindakan apa pun pada sumber daya apa pun.

Kebijakan berikut membatasi kekuatan ini dan menolak izin pengguna yang tidak sah untuk melakukan tindakan pada pipeline proyek tertentu. Untuk melakukan itu, kebijakan menolak beberapa tindakan jika sumber daya memiliki tanda bernama Project dengan salah satu nilai ProjectA atau ProjectB. (Kunci syarat aws:ResourceTag digunakan untuk mengontrol akses ke sumber daya berdasarkan tanda pada sumber daya tersebut.) Administrator pelanggan harus melampirkan kebijakan IAM ini kepada pengguna IAM yang tidak sah, selain kebijakan pengguna terkelola.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codepipeline:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": ["ProjectA", "ProjectB"] } } } ] }
contoh 3: Izinkan tindakan berdasarkan tag dalam permintaan

Kebijakan berikut memberikan izin kepada pengguna untuk membuat pipeline pengembangan di. CodePipeline

Untuk melakukan itu, memungkinkan tindakan CreatePipeline dan TagResource jika permintaan menentukan tag bernama Project dengan nilai ProjectA. Dengan kata lain, satu-satunya kunci tag yang dapat ditentukan adalahProject, dan nilainya harusProjectA.

Kunci aws:RequestTag kondisi digunakan untuk mengontrol tag mana yang dapat diteruskan dalam permintaan IAM. Syarat aws:TagKeys memastikan kunci tanda peka huruf besar dan kecil. Kebijakan ini berguna bagi pengguna atau peran yang tidak memiliki kebijakan pengguna AWSCodePipeline_FullAccess terkelola yang dilampirkan. Kebijakan terkelola memberi pengguna izin tak terbatas untuk melakukan CodePipeline tindakan apa pun pada sumber daya apa pun.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:CreatePipeline", "codepipeline:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/Project": "ProjectA" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["Project"] } } } ] }
contoh 4: Batasi tindakan untagging berdasarkan tag sumber daya

Kebijakan pengguna AWSCodePipeline_FullAccess terkelola memberi pengguna izin tak terbatas untuk melakukan CodePipeline tindakan apa pun pada sumber daya apa pun.

Kebijakan berikut membatasi kekuatan ini dan menolak izin pengguna yang tidak sah untuk melakukan tindakan pada pipeline proyek tertentu. Untuk melakukan itu, kebijakan menolak beberapa tindakan jika sumber daya memiliki tanda bernama Project dengan salah satu nilai ProjectA atau ProjectB.

Selain itu, kebijakan ini mencegah pengguna yang tidak sah ini merusak sumber daya dengan menggunakan kunci aws:TagKeys kondisi untuk tidak mengizinkan tindakan modifikasi tag menghapus tag sepenuhnya. Project Administrator pelanggan harus melampirkan kebijakan IAM ini ke pengguna atau peran yang tidak sah, selain kebijakan pengguna yang dikelola.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codepipeline:UntagResource" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["Project"] } } } ] }