Contoh kebijakan izin untuk AWS Secrets Manager - AWS Secrets Manager

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

Contoh kebijakan izin untuk AWS Secrets Manager

Kebijakan izin adalah teks terstruktur JSON. Lihat Struktur dokumen kebijakan JSON.

Kebijakan izin yang Anda lampirkan ke sumber daya dan identitas sangat mirip. Beberapa elemen yang Anda sertakan dalam kebijakan untuk akses ke rahasia meliputi:

  • Principal: siapa yang memberikan akses ke. Lihat Menentukan prinsipal dalam Panduan Pengguna IAM. Ketika Anda melampirkan kebijakan ke identitas, Anda tidak menyertakan Principal elemen dalam kebijakan.

  • Action: apa yang bisa mereka lakukan. Lihat Tindakan Secrets Manager.

  • Resource: rahasia mana yang dapat mereka akses. Lihat Sumber daya Secrets Manager.

    Karakter wildcard (*) memiliki arti yang berbeda tergantung pada kebijakan yang Anda lampirkan:

    • Dalam kebijakan yang dilampirkan pada rahasia, * berarti kebijakan tersebut berlaku untuk rahasia ini.

    • Dalam kebijakan yang dilampirkan pada identitas, * berarti kebijakan tersebut berlaku untuk semua sumber daya, termasuk rahasia, di akun.

Untuk melampirkan kebijakan ke rahasia, lihatLampirkan kebijakan izin ke rahasia AWS Secrets Manager.

Untuk melampirkan kebijakan ke identitas, lihatMelampirkan kebijakan izin ke identitas.

Contoh: Izin untuk mengambil nilai rahasia individu

Untuk memberikan izin untuk mengambil nilai rahasia, Anda dapat melampirkan kebijakan ke rahasia atau identitas. Untuk bantuan menentukan jenis kebijakan yang akan digunakan, lihat Kebijakan berbasis identitas dan kebijakan berbasis sumber daya. Untuk informasi tentang cara melampirkan kebijakan, lihat Lampirkan kebijakan izin ke rahasia AWS Secrets Manager danMelampirkan kebijakan izin ke identitas.

Contoh berikut menunjukkan dua cara berbeda untuk memberikan akses ke rahasia. Contoh pertama adalah kebijakan berbasis sumber daya yang dapat Anda lampirkan ke rahasia. Contoh ini berguna ketika Anda ingin memberikan akses ke satu rahasia ke beberapa pengguna atau peran. Contoh kedua adalah kebijakan berbasis identitas yang dapat Anda lampirkan ke pengguna atau peran di IAM. Contoh ini berguna ketika Anda ingin memberikan akses ke grup IAM. Untuk memberikan izin untuk mengambil sekelompok rahasia dalam panggilan API batch, lihatContoh: Izin untuk mengambil sekelompok nilai rahasia dalam batch.

contoh Baca satu rahasia (lampirkan ke rahasia)

Anda dapat memberikan akses ke rahasia dengan melampirkan kebijakan berikut ke rahasia. Untuk menggunakan kebijakan ini, lihatLampirkan kebijakan izin ke rahasia AWS Secrets Manager.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountId:role/EC2RoleToAccessSecrets" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }
contoh Baca rahasia yang dienkripsi menggunakan kunci yang dikelola pelanggan (lampirkan ke identitas)

Jika rahasia dienkripsi menggunakan kunci yang dikelola pelanggan, Anda dapat memberikan akses untuk membaca rahasia dengan melampirkan kebijakan berikut ke identitas. Untuk menggunakan kebijakan ini, lihatMelampirkan kebijakan izin ke identitas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "SecretARN" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "KMSKeyARN" } ] }

Contoh: Izin untuk membaca dan menggambarkan rahasia individu

contoh Baca dan jelaskan satu rahasia (lampirkan pada identitas)

Anda dapat memberikan akses ke rahasia dengan melampirkan kebijakan berikut ke identitas. Untuk menggunakan kebijakan ini, lihatMelampirkan kebijakan izin ke identitas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": "SecretARN" } ] }

Contoh: Izin untuk mengambil sekelompok nilai rahasia dalam batch

contoh Baca sekelompok rahasia dalam batch (lampirkan ke identitas)

Anda dapat memberikan akses untuk mengambil grup rahasia dalam panggilan API batch dengan melampirkan kebijakan berikut ke identitas. Kebijakan membatasi pemanggil sehingga mereka hanya dapat mengambil rahasia yang ditentukan oleh SecretArn1, SecretArn2, dan SecretArn3, bahkan jika panggilan batch menyertakan rahasia lain. Jika penelepon juga meminta rahasia lain dalam panggilan API batch, Secrets Manager tidak akan mengembalikannya. Untuk informasi lebih lanjut, lihat BatchGetSecretValue. . Untuk menggunakan kebijakan ini, lihatMelampirkan kebijakan izin ke identitas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:BatchGetSecretValue", "secretsmanager:ListSecrets" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "SecretARN1", "SecretARN2", "SecretARN3" ] } ] }

Contoh: Wildcard

Anda dapat menggunakan wildcard untuk menyertakan sekumpulan nilai dalam elemen kebijakan.

contoh Akses semua rahasia di jalur (lampirkan ke identitas)

Kebijakan berikut memberikan akses untuk mengambil semua rahasia dengan nama yang diawali dengan "TestEnv/”. Untuk menggunakan kebijakan ini, lihatMelampirkan kebijakan izin ke identitas.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:Region:AccountId:secret:TestEnv/*" } }
contoh Akses metadata pada semua rahasia (lampirkan ke identitas)

Pemberian DescribeSecret dan izin kebijakan berikut dimulai denganList: ListSecrets dan. ListSecretVersionIds Untuk menggunakan kebijakan ini, lihatMelampirkan kebijakan izin ke identitas.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:List*" ], "Resource": "*" } }
contoh Cocokkan nama rahasia (lampirkan ke identitas)

Kebijakan berikut memberikan semua izin Secrets Manager untuk rahasia berdasarkan nama. Untuk menggunakan kebijakan ini, lihatMelampirkan kebijakan izin ke identitas.

Untuk mencocokkan nama rahasia, Anda membuat ARN untuk rahasia dengan menyusun Region, ID Akun, nama rahasia, dan wildcard (?) untuk mencocokkan karakter acak individual. Secrets Manager menambahkan enam karakter acak ke nama rahasia sebagai bagian dari ARN mereka, sehingga Anda dapat menggunakan wildcard ini untuk mencocokkan karakter tersebut. Jika Anda menggunakan sintaks"another_secret_name-*", Secrets Manager tidak hanya cocok dengan rahasia yang dimaksudkan dengan 6 karakter acak, tetapi juga cocok"another_secret_name-<anything-here>a1b2c3".

Karena Anda dapat memprediksi semua bagian ARN rahasia kecuali 6 karakter acak, menggunakan '??????' sintaks karakter wildcard memungkinkan Anda memberikan izin dengan aman ke rahasia yang belum ada. Namun, ketahuilah, jika Anda menghapus rahasia dan membuatnya kembali dengan nama yang sama, pengguna secara otomatis menerima izin untuk rahasia baru, meskipun 6 karakter berubah.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:*", "Resource": [ "arn:aws:secretsmanager:Region:AccountId:secret:a_specific_secret_name-a1b2c3", "arn:aws:secretsmanager:Region:AccountId:secret:another_secret_name-??????" ] } ] }

Contoh: Izin untuk membuat rahasia

Untuk memberikan izin pengguna untuk membuat rahasia, kami sarankan Anda melampirkan kebijakan izin ke grup IAM milik pengguna. Lihat grup pengguna IAM.

contoh Buat rahasia (lampirkan ke identitas)

Kebijakan berikut memberikan izin untuk membuat rahasia dan melihat daftar rahasia. Untuk menggunakan kebijakan ini, lihatMelampirkan kebijakan izin ke identitas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:CreateSecret", "secretsmanager:ListSecrets" ], "Resource": "*" } ] }

Contoh: Tolak AWS KMS kunci tertentu untuk mengenkripsi rahasia

penting

Untuk menolak kunci yang dikelola pelanggan, kami sarankan Anda membatasi akses menggunakan kebijakan kunci atau hibah kunci. Untuk informasi selengkapnya, lihat Otentikasi dan kontrol akses AWS KMS di Panduan AWS Key Management Service Pengembang.

contoh Tolak kunci yang AWS dikelola aws/secretsmanager (lampirkan ke identitas)

Kebijakan berikut menunjukkan cara menolak penggunaan kunci AWS terkelola aws/secretsmanager untuk membuat atau memperbarui rahasia. Ini berarti bahwa rahasia harus dienkripsi menggunakan kunci yang dikelola pelanggan. Jika aws/secretsmanager kuncinya ada, Anda juga harus menyertakan ID kuncinya. Anda juga menyertakan string kosong karena Secrets Manager menafsirkannya sebagai kunci AWS aws/secretsmanager terkelola. Pernyataan kedua menolak permintaan untuk membuat rahasia yang tidak menyertakan kunci KMS, karena Secrets Manager menafsirkannya sebagai kunci AWS terkelola. aws/secretsmanager

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireCustomerManagedKeysOnSecrets", "Effect": "Deny", "Action": [ "secretsmanager:CreateSecret", "secretsmanager:UpdateSecret" ], "Resource": "*", "Condition": { "ForAnyValue:StringLikeIfExists": { "secretsmanager:KmsKeyId": [ "*alias/aws/secretsmanager", "*<key_ID_of_the_AWS_managed_key>", "" ] } } }, { "Sid": "RequireKmsKeyIdParameterOnCreate", "Effect": "Deny", "Action": "secretsmanager:CreateSecret", "Resource": "*", "Condition": { "Null": { "secretsmanager:KmsKeyId": "true" } } } ] }

Contoh: Izin dan VPC

Jika Anda perlu mengakses Secrets Manager dari dalam VPC, Anda dapat memastikan bahwa permintaan ke Secrets Manager berasal dari VPC dengan menyertakan kondisi dalam kebijakan izin Anda. Untuk informasi selengkapnya, lihat Kondisi titik akhir VPC dan Menggunakan titik akhir AWS Secrets Manager VPC.

Pastikan bahwa permintaan untuk mengakses rahasia dari AWS layanan lain juga berasal dari VPC, jika tidak kebijakan ini akan menolak akses mereka.

contoh Memerlukan permintaan untuk datang melalui titik akhir VPC (lampirkan ke rahasia)

Kebijakan berikut memungkinkan pengguna untuk melakukan operasi Secrets Manager hanya ketika permintaan datang melalui titik akhir VPC. vpce-1234a5678b9012c Untuk menggunakan kebijakan ini, lihatLampirkan kebijakan izin ke rahasia AWS Secrets Manager.

{ "Id": "example-policy-1", "Version": "2012-10-17", "Statement": [ { "Sid": "RestrictGetSecretValueoperation", "Effect": "Deny", "Principal": "*", "Action": "secretsmanager:GetSecretValue", "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1234a5678b9012c" } } } ] }
contoh Memerlukan permintaan untuk datang dari VPC (lampirkan ke rahasia)

Kebijakan berikut memungkinkan perintah untuk membuat dan mengelola rahasia hanya ketika mereka berasal vpc-12345678. Selain itu, kebijakan memungkinkan operasi yang menggunakan akses nilai terenkripsi rahasia hanya ketika permintaan berasal. vpc-2b2b2b2b Anda mungkin menggunakan kebijakan seperti ini jika Anda menjalankan aplikasi dalam satu VPC, tetapi Anda menggunakan VPC kedua yang terisolasi untuk fungsi manajemen. Untuk menggunakan kebijakan ini, lihatLampirkan kebijakan izin ke rahasia AWS Secrets Manager.

{ "Id": "example-policy-2", "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAdministrativeActionsfromONLYvpc-12345678", "Effect": "Deny", "Principal": "*", "Action": [ "secretsmanager:Create*", "secretsmanager:Put*", "secretsmanager:Update*", "secretsmanager:Delete*", "secretsmanager:Restore*", "secretsmanager:RotateSecret", "secretsmanager:CancelRotate*", "secretsmanager:TagResource", "secretsmanager:UntagResource" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpc": "vpc-12345678" } } }, { "Sid": "AllowSecretValueAccessfromONLYvpc-2b2b2b2b", "Effect": "Deny", "Principal": "*", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpc": "vpc-2b2b2b2b" } } } ] }

Contoh: Kontrol akses ke rahasia menggunakan tag

Anda dapat menggunakan tag untuk mengontrol akses ke rahasia Anda. Menggunakan tag untuk mengontrol izin sangat membantu di lingkungan yang berkembang pesat dan membantu situasi di mana manajemen kebijakan menjadi rumit. Salah satu strategi adalah melampirkan tag ke rahasia dan kemudian memberikan izin ke identitas ketika rahasia memiliki tag tertentu.

contoh Izinkan akses ke rahasia dengan tag tertentu (lampirkan ke identitas)

Kebijakan berikut memungkinkan DescribeSecret pada rahasia dengan tag dengan kunci "" dan nilai ServerName"ServeABC”. Untuk menggunakan kebijakan ini, lihatMelampirkan kebijakan izin ke identitas.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "secretsmanager:DescribeSecret", "Resource": "*", "Condition": { "StringEquals": { "secretsmanager:ResourceTag/ServerName": "ServerABC" } } } }

Contoh: Batasi akses ke identitas dengan tag yang cocok dengan tag rahasia

Salah satu strateginya adalah melampirkan tag ke rahasia dan identitas IAM. Kemudian Anda membuat kebijakan izin untuk mengizinkan operasi ketika tag identitas cocok dengan tag rahasia. Untuk tutorial selengkapnya, lihat Menentukan izin untuk mengakses rahasia berdasarkan tag.

Menggunakan tag untuk mengontrol izin sangat membantu di lingkungan yang berkembang pesat dan membantu situasi di mana manajemen kebijakan menjadi rumit. Untuk informasi lebih lanjut, lihat Apa fungsi ABAC untuk AWS?

contoh Izinkan akses ke peran yang memiliki tag yang sama dengan rahasia (lampirkan ke rahasia)

Kebijakan berikut 123456789012hanya GetSecretValue memberikan akun jika tag AccessProjectmemiliki nilai yang sama untuk rahasia dan peran. Untuk menggunakan kebijakan ini, lihatLampirkan kebijakan izin ke rahasia AWS Secrets Manager.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "AWS": "123456789012" }, "Condition": { "StringEquals": { "aws:ResourceTag/AccessProject": "${ aws:PrincipalTag/AccessProject }" } }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } }

Contoh: Prinsipal layanan

Jika kebijakan sumber daya yang dilampirkan pada rahasia Anda menyertakan prinsip AWS layanan, kami sarankan Anda menggunakan kunci kondisi SourceAccount global aws: SourceArn dan aws:. ARN dan nilai akun disertakan dalam konteks otorisasi hanya ketika permintaan datang ke Secrets Manager dari layanan lain. AWS Kombinasi kondisi ini menghindari skenario wakil yang berpotensi membingungkan.

Jika ARN sumber daya menyertakan karakter yang tidak diizinkan dalam kebijakan sumber daya, Anda tidak dapat menggunakan ARN sumber daya tersebut dalam nilai kunci kondisi. aws:SourceArn Sebagai gantinya, gunakan tombol aws:SourceAccount kondisi. Untuk informasi selengkapnya, lihat persyaratan IAM.

Prinsipal layanan biasanya tidak digunakan sebagai prinsipal dalam kebijakan yang melekat pada rahasia, tetapi beberapa layanan memerlukannya. AWS Untuk informasi tentang kebijakan sumber daya yang diharuskan layanan untuk Anda lampirkan ke rahasia, lihat dokumentasi layanan.

contoh Izinkan layanan mengakses rahasia menggunakan kepala layanan (lampirkan ke rahasia)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "service-name.amazonaws.com" ] }, "Action": "secretsmanager:GetSecretValue", "Resource": "*", "Condition": { "ArnLike": { "aws:sourceArn": "arn:aws:service-name::123456789012:*" }, "StringEquals": { "aws:sourceAccount": "123456789012" } } } ] }