View a markdown version of this page

Menggunakan izin terkelola parameter di AWS RAM - AWS Resource Access Manager

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

Menggunakan izin terkelola parameter di AWS RAM

Izin terkelola parameter adalah izin terkelola dengan placeholder dalam kondisi polisnya yang Anda isi dengan nilai Anda sendiri. Placeholder ini adalah parameter template. Mereka tidak membuat jenis izin terkelola baru. Mereka menambahkan variabilitas ke template kebijakan yang sudah ada.

Alih-alih membuat izin terkelola pelanggan terpisah untuk setiap nilai kondisi unik, Anda membuat satu izin yang dikelola pelanggan dengan parameter. Saat Anda mengaitkannya dengan berbagi sumber daya, Anda memberikan nilai untuk setiap parameter. AWS RAM mengganti nilai Anda ke dalam templat kebijakan dan melampirkan kebijakan berbasis sumber daya yang dihasilkan ke sumber daya bersama.

Misalnya, tim platform pusat membuat satu izin yang dikelola pelanggan untuk AWS Systems Manager Parameter Penyimpanan Parameter (jenis sumber daya ssm:Parameter). Ini memberikan akses baca hanya untuk kepala sekolah dengan persetujuan team tag. Tim platform membagikan izin yang dikelola pelanggan dengan akun di organisasinya. Setiap akun kemudian menggunakannya dalam pembagian sumber dayanya sendiri, yang dapat berisi satu atau lebih parameter Penyimpanan Parameter. Di setiap pembagian sumber daya, akun memasok team nilai tag dari prinsipal yang dapat membaca parameter Penyimpanan Parameter bersama.

Jenis parameter template

AWS RAM mendukung dua jenis parameter. Jenis menentukan bagaimana AWS RAM menggantikan nilai ke dalam kebijakan yang diberikan. Di AWS RAM API dan AWS CLI, jenisnya adalah STRING dan STRING_LIST. The AWS RAM konsol menunjukkan mereka sebagai Tali dan StringList.

STRING

Menerima tepat satu nilai string.

  • Anda dapat menggunakan STRING parameter dalam kunci kondisi atau dalam nilai kondisi.

  • Anda dapat menyematkan STRING parameter dalam teks lain. Misalnya, "arn:aws:iam::@{accountId}:role/Auditor".

  • Nilai yang dirender selalu berupa string. Karena operator kondisi IAM mengonversi string ke tipe yang mereka bandingkan, a STRING parameter dapat menyediakan nilai numerik, Boolean, tanggal, alamat IP, atau ARN.

STRING_LIST

Menerima dari 1 hingga 100 nilai string.

  • Anda dapat menggunakan STRING_LIST parameter hanya dalam nilai kondisi, bukan dalam kunci kondisi.

  • Jika nilai kondisi adalah string tunggal yang hanya berisi parameter, misalnya "@{teams}", AWS RAM merender array nilai yang Anda berikan. Jika Anda memberikan satu nilai, AWS RAM merender satu string.

  • Jika nilai kondisi memiliki teks sebelum atau sesudah parameter, misalnya "arn:aws:iam::@{accountIds}:role/ParameterReader", AWS RAM menggabungkan setiap nilai dengan teks itu.

  • Untuk menggabungkan setiap nilai dengan lebih dari satu string, daftar string dalam array nilai kondisi. AWS RAM merender setiap entri array untuk setiap nilai dan menghapus hasil duplikat. Hasilnya selalu berupa array.

  • AWS RAM dan IAM tidak membagi string pada koma. String yang dipisahkan koma dibandingkan sebagai satu nilai.

Sebagai contoh, lihat STRING_LIST contoh parameter.

Aturan sintaks template kebijakan

Saat Anda menambahkan parameter ke templat kebijakan izin terkelola, aturan berikut berlaku. Jika permintaan melanggar salah satu aturan ini, AWS RAM Menolaknya dengan InvalidParameterException atau InvalidPolicyException kesalahan.

  • Parameter placeholder menggunakan sintaks @{parameterName}.

  • Nama parameter dapat berisi huruf (a-z, A-Z), angka (0-9), titik dua (:), tanda hubung (-), dan garis bawah (_). Nama harus unik dalam versi izin terkelola, dan perbandingan mengabaikan kasus.

  • Anda harus mendeklarasikan setiap parameter saat Anda membuat izin atau versi izin. Setiap deklarasi memerlukan nama, tipe, dan deskripsi. Deskripsi dapat mencapai 255 karakter.

  • Setiap parameter yang dideklarasikan harus muncul di template kebijakan.

  • Placeholder cocok dengan nama yang dinyatakan dengan tepat, termasuk kasus. Teks di @{...} format yang tidak persis sama dengan nama yang dideklarasikan tetap dalam kebijakan sebagai teks literal. Misalnya, jika Anda menyatakan teams tapi tulis @{Teams}, AWS RAM memperlakukan @{Teams} sebagai teks dan menolak permintaan karena teams tidak digunakan.

  • Parameter hanya dapat muncul di Condition elemen, sebagai kunci kondisi atau sebagai nilai kondisi. AWS RAM menolak parameter di Effect, Action, atau elemen lainnya.

  • Kunci kondisi dapat berisi paling banyak satu parameter, dan itu harus STRING parameter. Nilai kondisi dapat berisi lebih dari satu parameter, misalnya "@{project}-@{stage}". Ketika nilai kondisi digabungkan STRING_LIST parameter, AWS RAM merender setiap kombinasi nilainya, hingga 100 string untuk setiap nilai kondisi.

  • Anda dapat mendeklarasikan hingga 100 parameter untuk setiap versi izin terkelola.

  • Parameter tidak memiliki nilai default. Ketika Anda mengaitkan izin dengan pembagian sumber daya, Anda harus memberikan nilai yang tidak kosong untuk setiap parameter yang dideklarasikan, dan Anda tidak dapat memberikan nama yang tidak dideklarasikan atau memberikan nama yang sama dua kali.

Buat izin terkelola berparameter

Anda membuat izin terkelola parameter dengan cara yang sama seperti Anda membuat izin yang dikelola pelanggan lainnya. Perbedaannya adalah Anda mendeklarasikan parameter dan menggunakan @{parameterName} placeholder dalam kondisi template kebijakan.

Console
Untuk membuat izin terkelola berparameter
  1. Buka Pustaka izin terkelola dan pilih Buat izin yang dikelola pelanggan.

  2. Di bawah Detail izin yang dikelola pelanggan, masukkan nama dan pilih jenis sumber daya.

  3. Di bawah Template kebijakan, masukkan kebijakan. Gunakan @{parameterName} placeholder dalam kondisi di mana Anda ingin setiap bagian sumber daya memberikan nilainya sendiri.

  4. Di bawah Parameter template, pilih Tambahkan parameter dari kebijakan untuk menambahkan baris untuk setiap placeholder dalam kebijakan, atau pilih Tambahkan parameter untuk menambahkan satu baris pada satu waktu. Untuk setiap parameter, masukkan Nama parameter, pilih Mengetik (Tali atau StringList), dan masukkan a Deskripsi. Deskripsi ditampilkan kepada siapa saja yang memberikan nilai untuk parameter.

  5. (Opsional) Tambahkan tag.

  6. Memilih Buat izin yang dikelola pelanggan.

AWS CLI
Untuk membuat izin terkelola berparameter
  • Jalankan buat-izin perintah dengan --policy-template dan --permission-template-parameters parameter.

    Contoh berikut membuat izin yang dikelola pelanggan untuk ssm:Parameter jenis sumber daya. Dalam kebijakan ini, kepala sekolah dapat membaca parameter hanya jika kepala sekolah memiliki team tag yang nilainya ada di teams daftar.

    $ aws ram create-permission \ --name ParameterReadByTeam \ --resource-type ssm:Parameter \ --permission-template-parameters '[{"name":"teams","type":"STRING_LIST","description":"Values of the team principal tag that can read the shared parameters"}]' \ --policy-template '{"Effect":"Allow","Action":["ssm:GetParameter","ssm:GetParameters"],"Condition":{"StringEquals":{"aws:PrincipalTag/team":"@{teams}"}}}' { "permission": { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "1", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "status": "ATTACHABLE", "creationTime": 1763300000.000, "lastUpdatedTime": 1763300000.000, "permissionTemplateParameters": [ { "name": "teams", "type": "STRING_LIST", "description": "Values of the team principal tag that can read the shared parameters" } ] } }

Membuat versi izin terkelola parameter

Izin terkelola parameter diberi versi dengan cara yang sama seperti izin yang dikelola pelanggan lainnya. Setiap versi menyatakan parameternya secara independen, sehingga versi baru dapat mendeklarasikan serangkaian parameter yang berbeda dari versi sebelumnya.

Untuk membuat versi baru, jalankan buat-versi-izin perintah dengan --policy-template dan --permission-template-parameters parameter. Contoh berikut menambahkan kondisi kedua dengan STRING parameter bernama environment.

$ aws ram create-permission-version \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","type":"STRING_LIST","description":"Values of the team principal tag that can read the shared parameters"},{"name":"environment","type":"STRING","description":"Value of the environment principal tag that can read the shared parameters"}]' \ --policy-template '{"Effect":"Allow","Action":["ssm:GetParameter","ssm:GetParameters"],"Condition":{"StringEquals":{"aws:PrincipalTag/team":"@{teams}","aws:PrincipalTag/environment":"@{environment}"}}}'

Versi baru menjadi versi default segera setelah Anda membuatnya. Berbagi sumber daya yang ada menyimpan versi yang mereka gunakan. Ketika pemilik berbagi sumber daya memperbaruinya ke versi baru, pemilik harus memberikan nilai untuk parameter yang dideklarasikan versi baru. Untuk informasi selengkapnya, lihat Memperbarui AWS izin terkelola ke versi yang lebih baru.

Untuk informasi selengkapnya tentang cara kerja versi izin yang dikelola pelanggan dan versi default, lihat Membuat dan menggunakan izin yang dikelola pelanggan di AWS RAM.

Pratinjau template kebijakan yang dirender

Sebelum mengaitkan izin terkelola parameter dengan berbagi sumber daya, Anda dapat melihat pratinjau kebijakan yang AWS RAM render dari nilai parameter tertentu.

Di AWS RAM konsol, saat Anda membuat atau memperbarui berbagi sumber daya, masukkan nilai di bawah Nilai parameter template dan pilih Pratinjau kebijakan yang dirender.

Di AWS CLI, jalankan dapatkan izin perintah dengan --permission-template-parameters parameter. permission bidang respons berisi kebijakan dengan nilai-nilai Anda sebagai pengganti placeholder.

$ aws ram get-permission \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","values":["payments","analytics"]},{"name":"environment","values":["prod"]}]' { "permission": { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "2", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "permission": "{\"Effect\":\"Allow\",\"Action\":[\"ssm:GetParameter\",\"ssm:GetParameters\"],\"Condition\":{\"StringEquals\":{\"aws:PrincipalTag/team\":[\"payments\",\"analytics\"],\"aws:PrincipalTag/environment\":\"prod\"}}}", "creationTime": 1763400000.000, "lastUpdatedTime": 1763400000.000, "isResourceTypeDefault": false, "permissionType": "CUSTOMER_MANAGED", "featureSet": "STANDARD", "status": "ATTACHABLE", "permissionTemplateParameters": [ { "name": "teams", "type": "STRING_LIST", "description": "Values of the team principal tag that can read the shared parameters" }, { "name": "environment", "type": "STRING", "description": "Value of the environment principal tag that can read the shared parameters" } ] } }

Tanpa --permission-template-parameters parameter, get-permission perintah mengembalikan template kebijakan dengan @{parameterName} placeholder. permissionTemplateParameters field mencantumkan nama, jenis, dan deskripsi dari setiap parameter yang dideklarasikan.

Mengaitkan izin terkelola parameter dengan berbagi sumber daya

Saat Anda mengaitkan izin terkelola parameter dengan berbagi sumber daya, Anda harus memberikan nilai untuk semua parameter yang dideklarasikan versi. AWS RAM merender templat kebijakan dengan nilai-nilai Anda dan melampirkan kebijakan berbasis sumber daya yang dihasilkan ke sumber daya bersama jenis tersebut.

Console
Untuk mengaitkan izin terkelola parameter dengan berbagi sumber daya
  1. Saat Anda membuat atau memperbarui berbagi sumber daya, pada Izin terkelola asosiasi halaman, pilih izin terkelola parameter untuk jenis sumber daya.

  2. Di bawah Nilai parameter template, masukkan nilai untuk setiap parameter. Untuk StringList parameter, tekan Enter setelah setiap nilai, atau tempel nilai yang dipisahkan oleh baris baru.

  3. (Opsional) Pilih Pratinjau kebijakan yang dirender Untuk memeriksa kebijakan yang AWS RAM akan melampirkan.

  4. Selesaikan sisa penyihir. Halaman ulasan mencantumkan nilai-nilai di bawah Nilai parameter template.

AWS CLI
Untuk mengaitkan izin terkelola parameter dengan berbagi sumber daya
  1. Jalankan buat-berbagi sumber daya atau asosiasi-sumber daya-bagi-izin dengan --permission-template-parameters parameter.

    Untuk create-resource-share, parameternya adalah daftar. Setiap entri berisi permissionArn dan permissionTemplateParameters nilai-nilai untuk izin tersebut. Contoh berikut membuat berbagi sumber daya yang berbagi parameter Penyimpanan Parameter dengan yang lain Akun AWS. Kepala sekolah dengan team menandai payments atau analytics dan environment menandai prod bisa membacanya.

    $ aws ram create-resource-share \ --name PaymentsConfig \ --resource-arns arn:aws:ssm:us-east-1:123456789012:parameter/payments/endpoint \ --principals 111122223333 \ --permission-arns arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"permissionArn":"arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam","permissionTemplateParameters":[{"name":"teams","values":["payments","analytics"]},{"name":"environment","values":["prod"]}]}]' { "resourceShare": { "resourceShareArn": "arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "name": "PaymentsConfig", "owningAccountId": "123456789012", "allowExternalPrincipals": true, "status": "ACTIVE", "creationTime": 1763300000.000, "lastUpdatedTime": 1763300000.000, "featureSet": "STANDARD" } }

    create-resource-share selalu menggunakan versi default dari setiap izin terkelola. Anda hanya dapat mengaitkan versi default izin terkelola dengan berbagi sumber daya.

  2. Untuk mengubah nilai parameter pada berbagi sumber daya yang ada, atau memindahkannya ke versi default izin, jalankan asosiasi-sumber daya-bagi-izin dengan --replace parameter. Untuk perintah ini, --permission-template-parameters mengambil nilai parameter secara langsung.

    $ aws ram associate-resource-share-permission \ --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","values":["payments"]},{"name":"environment","values":["prod"]}]' \ --replace { "returnValue": true }

Untuk memindahkan banyak berbagi sumber daya dari satu versi atau izin ke versi lain, jalankan asosiasi pengganti-izin. Jika versi target menyatakan parameter, sertakan --permission-template-parameters. AWS RAM menerapkan nilai yang sama untuk setiap berbagi sumber daya yang diperbarui perintah.

Lihat parameter dan nilai template

Anda dapat melihat parameter yang dinyatakan oleh izin terkelola dan nilai-nilai yang disediakan oleh sumber daya Anda bersama.

Melihat parameter yang dinyatakan oleh izin terkelola

Jalankan dapatkan izin perintah. Yang permissionTemplateParameters bidang mencantumkan nama, jenis, dan deskripsi dari setiap parameter. Di konsol, halaman detail izin menunjukkan informasi yang sama.

Melihat nilai yang disediakan oleh berbagi sumber daya

Jalankan daftar-sumber daya-bagi-izin perintah. Untuk setiap izin terkelola parameter terkait, permissionTemplateParameters bidang menyertakan nilai-nilai yang disediakan oleh berbagi sumber daya.

$ aws ram list-resource-share-permissions \ --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 { "permissions": [ { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "2", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "status": "ATTACHABLE", "creationTime": 1763400000.000, "lastUpdatedTime": 1763400000.000, "isResourceTypeDefault": false, "permissionType": "CUSTOMER_MANAGED", "featureSet": "STANDARD", "permissionTemplateParameters": [ { "name": "teams", "values": ["payments"] }, { "name": "environment", "values": ["prod"] } ] } ] }

asosiasi daftar izin perintah juga mengembalikan nilai untuk berbagi sumber daya yang Anda miliki. Saat Anda mencantumkan pembagian sumber daya di lainnya Akun AWS yang menggunakan izin yang dikelola pelanggan yang Anda bagikan, tanggapan tidak menyertakan nilai-nilainya.

Berbagi izin terkelola parameter di seluruh akun

Anda dapat berbagi izin terkelola parameter dengan yang lain Akun AWS seperti izin yang dikelola pelanggan lainnya. Akun penerima dapat melihat nama, jenis, dan deskripsi setiap parameter, jadi tulis deskripsi yang memberi tahu mereka nilai apa yang akan diberikan. Setiap akun penerima memberikan nilainya sendiri ketika mengaitkan izin terkelola bersama dengan pembagian sumber dayanya sendiri.

Untuk petunjuk tentang berbagi izin yang dikelola pelanggan, lihat Berbagi dan menggunakan izin yang dikelola pelanggan di seluruh akun di AWS RAM.

Kontrol nilai parameter template dengan kebijakan IAM

Anda dapat menggunakan ram:PermissionTemplateParameter/parameter-name kunci kondisi dalam kebijakan IAM untuk mengontrol nilai mana yang dapat diberikan oleh prinsipal untuk parameter. Kuncinya multivalue dan berisi nilai-nilai dalam permintaan untuk parameter bernama. Ini tersedia di sumber izin untuk ram:CreateResourceShare, ram:AssociateResourceSharePermission, dan ram:ReplacePermissionAssociations tindakan.

Dalam contoh kebijakan berikut, pernyataan pertama memberikan tindakan pada ParameterReadByTeam izin yang dikelola pelanggan. Pernyataan kedua menyangkal mereka jika ada nilai yang disediakan untuk teams adalah sesuatu yang lain dari payments atau analytics. Karena kuncinya bernilai banyak, kebijakan menggunakan ForAnyValue mengatur operator. AWS RAM memerlukan nilai untuk setiap parameter yang dideklarasikan, sehingga permintaan yang menggunakan izin yang dikelola pelanggan ini selalu menyertakan kunci.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ram:CreateResourceShare", "ram:AssociateResourceSharePermission", "ram:ReplacePermissionAssociations" ], "Resource": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam" }, { "Effect": "Deny", "Action": [ "ram:CreateResourceShare", "ram:AssociateResourceSharePermission", "ram:ReplacePermissionAssociations" ], "Resource": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "Condition": { "ForAnyValue:StringNotEquals": { "ram:PermissionTemplateParameter/teams": [ "payments", "analytics" ] } } } ] }

Pernyataan ini hanya mengontrol sumber izin. Kepala sekolah juga memerlukan izin untuk sumber daya lain dalam permintaan, seperti pembagian sumber daya dan sumber daya yang dibagikan. Untuk contoh lainnya, lihat Contoh kebijakan IAM untuk AWS RAM.

STRING_LIST contoh parameter

Contoh-contoh berikut menunjukkan bagaimana AWS RAM menghibahkan STRING_LIST parameter.

contoh SEBUAH STRING_LIST parameter saja dalam nilai kondisi

Template:

"Condition": { "StringEquals": { "aws:PrincipalTag/team": "@{teams}" } }

Nilai: ["payments", "analytics"]

Kebijakan yang diberikan:

"Condition": { "StringEquals": { "aws:PrincipalTag/team": ["payments", "analytics"] } }

Dengan nilai tunggal ["payments"], nilai yang dirender adalah string "payments".

contoh SEBUAH STRING_LIST parameter dengan teks di sekitarnya

AWS RAM menggabungkan setiap nilai dengan teks sebelum dan sesudah parameter.

Template:

"Condition": { "ArnLike": { "aws:PrincipalArn": "arn:aws:iam::@{accountIds}:role/ParameterReader" } }

Nilai: ["111122223333", "444455556666"]

Kebijakan yang diberikan:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::111122223333:role/ParameterReader", "arn:aws:iam::444455556666:role/ParameterReader" ] } }
contoh SEBUAH STRING_LIST parameter dalam array nilai kondisi

AWS RAM merender setiap entri dalam array untuk setiap nilai, dan menghapus hasil duplikat.

Template:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::@{accountIds}:role/Auditor", "arn:aws:iam::@{accountIds}:role/Reader" ] } }

Nilai: ["111122223333", "444455556666"]

Kebijakan yang diberikan:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::111122223333:role/Auditor", "arn:aws:iam::444455556666:role/Auditor", "arn:aws:iam::111122223333:role/Reader", "arn:aws:iam::444455556666:role/Reader" ] } }