Membatasi akses ke Parameter Store parameter menggunakan kebijakan IAM - AWS Systems Manager

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

Membatasi akses ke Parameter Store parameter menggunakan kebijakan IAM

Anda membatasi akses ke AWS Systems Manager parameter dengan menggunakan AWS Identity and Access Management (IAM). Secara lebih spesifik, Anda membuat kebijakan IAM yang membatasi akses ke operasi API berikut:

Saat menggunakan kebijakan IAM untuk membatasi akses ke parameter Systems Manager, kami sarankan Anda membuat dan menggunakan kebijakan IAM restriktif. Misalnya, kebijakan berikut memungkinkan pengguna untuk memanggil operasi API DescribeParameters dan GetParameters untuk satu set sumber daya terbatas. Ini berarti pengguna bisa mendapatkan informasi tentang dan menggunakan semua parameter yang diawali dengan prod-*.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }
penting

Jika pengguna memiliki akses ke sebuah jalur, maka pengguna dapat mengakses semua tingkat pada jalur tersebut. Misalnya, jika pengguna memiliki izin untuk mengakses jalur /a, maka pengguna juga bisa mengakses /a/b. Bahkan jika pengguna secara eksplisit ditolak aksesnya di IAM untuk parameter/a/b, mereka masih dapat memanggil operasi GetParametersByPath API secara rekursif untuk dan melihat. /a /a/b

Untuk administrator tepercaya, Anda dapat memberikan akses ke semua operasi API parameter Systems Manager dengan menggunakan kebijakan yang mirip dengan contoh berikut. Kebijakan ini memberikan pengguna akses penuh ke semua parameter produksi yang diawali dengan dbserver-prod-*.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:GetParameterHistory", "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:DeleteParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/dbserver-prod-*" }, { "Effect": "Allow", "Action": "ssm:DescribeParameters", "Resource": "*" } ] }

Menolak izin

Setiap API bersifat unik dan memiliki operasi dan izin yang berbeda yang dapat Anda izinkan atau tolak secara individual. Penolakan eksplisit dalam kebijakan apa pun akan menimpa izin yang diberikan.

catatan

Kunci default AWS Key Management Service (AWS KMS) memiliki Decrypt izin untuk semua prinsipal IAM di dalam. Akun AWS Jika Anda ingin memiliki tingkat akses yang berbeda ke parameter SecureString di akun Anda, kami tidak menyarankan Anda menggunakan kunci default.

Jika Anda ingin semua operasi API yang mengambil nilai parameter untuk memiliki perilaku yang sama, maka Anda dapat menggunakan pola seperti GetParameter* dalam sebuah kebijakan. Contoh berikut menunjukkan cara menolak GetParameter, GetParameters, GetParameterHistory, dan GetParametersByPath untuk semua parameter yang diawali dengan prod-*.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }

Contoh berikut menunjukkan cara menolak beberapa perintah sambil mengizinkan pengguna untuk melakukan perintah lain pada semua parameter yang diawali dengan prod-*.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:DeleteParameters", "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:GetParameterHistory" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }
catatan

Riwayat parameter mencakup semua versi parameter, termasuk yang saat ini digunakan. Oleh karena itu, jika pengguna ditolak izin untuk GetParameter, GetParameters, dan GetParameterByPath namun diberikan izin untuk GetParameterHistory, mereka dapat melihat parameter saat ini, termasuk parameter SecureString, menggunakan GetParameterHistory.

Mengizinkan hanya parameter tertentu untuk berjalan di node

Anda dapat mengontrol akses sehingga node terkelola hanya dapat menjalankan parameter yang Anda tentukan.

Jika Anda memilih jenis SecureString parameter saat membuat parameter, Systems Manager menggunakan AWS KMS untuk mengenkripsi nilai parameter. AWS KMS mengenkripsi nilai dengan menggunakan salah satu Kunci yang dikelola AWS atau kunci yang dikelola pelanggan. Untuk informasi selengkapnya tentang AWS KMS dan AWS KMS key, lihat Panduan AWS Key Management Service Pengembang.

Anda dapat melihat Kunci yang dikelola AWS dengan menjalankan perintah berikut dari file AWS CLI.

aws kms describe-key --key-id alias/aws/ssm

Contoh berikut memungkinkan node untuk mendapatkan nilai parameter hanya untuk parameter yang dimulai denganprod-. Jika parameternya adalah SecureString parameter, maka node mendekripsi string menggunakan. AWS KMS

catatan

Kebijakan instans, seperti dalam contoh berikut, ditugaskan untuk peran instans tersebut dalam IAM. Untuk informasi lebih lanjut tentang mengkonfigurasi akses ke fitur Systems Manager, termasuk cara menetapkan kebijakan untuk pengguna dan instans, lihat Mengelola EC2 instans dengan Systems Manager.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-2:123456789012:key/4914ec06-e888-4ea5-a371-5b88eEXAMPLE" ] } ] }

Izin IAM untuk menggunakan kunci AWS default dan kunci yang dikelola pelanggan

Parameter Store SecureStringparameter dienkripsi dan didekripsi menggunakan kunci. AWS KMS Anda dapat memilih untuk mengenkripsi SecureString parameter Anda menggunakan salah satu AWS KMS key atau kunci KMS default yang disediakan oleh. AWS

Saat menggunakan kunci yang dikelola pelanggan, kebijakan IAM yang memberikan akses pengguna ke sebuah parameter atau jalur parameter harus menyediakan izin kms:Encrypt eksplisit untuk kunci tersebut. Misalnya, kebijakan berikut memungkinkan pengguna untuk membuat, memperbarui, dan melihat SecureString parameter yang dimulai dengan prod- parameter yang ditentukan Wilayah AWS dan Akun AWS.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:GetParameter", "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:111122223333:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" Footnote callout 1 to explain a line in a JSON policy ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE" ] } ] }

1Izin kms:GenerateDataKey diperlukan untuk membuat parameter lanjutan terenkripsi menggunakan kunci yang dikelola pelanggan tertentu.

Sebaliknya, semua pengguna dalam akun pelanggan memiliki akses ke kunci yang dikelola AWS secara default. Jika Anda menggunakan kunci default ini untuk mengenkripsi parameter SecureString dan tidak ingin pengguna bekerja dengan parameter SecureString, kebijakan IAM mereka harus secara eksplisit menolak akses ke kunci default, seperti yang ditunjukkan dalam contoh kebijakan berikut.

catatan

Anda dapat menemukan Amazon Resource Name (ARN) dari kunci default di konsol AWS KMS pada halaman kunci yang dikelola AWS. Kunci default adalah kunci yang diidentifikasi dengan aws/ssm dalam kolom Alias.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/abcd1234-ab12-cd34-ef56-abcdeEXAMPLE" ] } ] }

Jika Anda memerlukan kontrol akses yang sangat baik atas parameter SecureString di akun Anda, Anda harus menggunakan kunci yang dikelola pelanggan untuk melindungi dan membatasi akses ke parameter ini. Kami juga merekomendasikan penggunaan AWS CloudTrail untuk memantau aktivitas SecureString parameter.

Untuk informasi selengkapnya, lihat topik berikut.