Kebijakan berbasis identitas - AWS Secrets Manager

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

Kebijakan berbasis identitas

Anda dapat melampirkan kebijakan izin ke IAMidentitas: pengguna, grup pengguna, dan peran. Dalam kebijakan berbasis identitas, Anda menentukan rahasia mana yang dapat diakses identitas dan tindakan yang dapat dilakukan identitas pada rahasia. Untuk informasi selengkapnya, lihat Menambahkan dan menghapus izin IAM identitas.

Anda dapat memberikan izin untuk peran yang mewakili aplikasi atau pengguna di layanan lain. Misalnya, aplikasi yang berjalan pada EC2 instance Amazon mungkin memerlukan akses ke database. Anda dapat membuat IAM peran yang dilampirkan ke profil EC2 instance dan kemudian menggunakan kebijakan izin untuk memberikan akses peran ke rahasia yang berisi kredenal untuk database. Untuk informasi selengkapnya, lihat Menggunakan IAM peran untuk memberikan izin ke aplikasi yang berjalan di EC2 instans Amazon. Layanan lain yang dapat Anda lampirkan peran untuk menyertakan Amazon Redshift, AWS Lambda, dan Amazon. ECS

Anda juga dapat memberikan izin kepada pengguna yang diautentikasi oleh sistem identitas selain. IAM Misalnya, Anda dapat mengaitkan IAM peran ke pengguna aplikasi seluler yang masuk dengan Amazon Cognito. Peran tersebut memberikan kredensi sementara aplikasi dengan izin dalam kebijakan izin peran. Kemudian Anda dapat menggunakan kebijakan izin untuk memberikan akses peran ke rahasia. Untuk informasi selengkapnya, lihat Penyedia identitas dan federasi.

Anda dapat menggunakan kebijakan berbasis identitas untuk:

  • Berikan akses identitas ke beberapa rahasia.

  • Kontrol siapa yang dapat membuat rahasia baru, dan siapa yang dapat mengakses rahasia yang belum dibuat.

  • Berikan akses IAM grup ke rahasia.

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 Kebijakan berbasis sumber daya danKebijakan berbasis identitas.

Contoh ini berguna ketika Anda ingin memberikan akses ke IAM grup. Untuk memberikan izin untuk mengambil sekelompok rahasia dalam API panggilan batch, lihatContoh: Izin untuk mengambil sekelompok nilai rahasia dalam batch.

contoh Baca rahasia yang dienkripsi menggunakan kunci yang dikelola pelanggan

Jika rahasia dienkripsi menggunakan kunci yang dikelola pelanggan, Anda dapat memberikan akses untuk membaca rahasia dengan melampirkan kebijakan berikut 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

Anda dapat memberikan akses ke rahasia dengan melampirkan kebijakan berikut 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 satu batch

Anda dapat memberikan akses untuk mengambil sekelompok rahasia dalam API panggilan 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 API panggilan batch, Secrets Manager tidak akan mengembalikannya. Untuk informasi lebih lanjut, lihat BatchGetSecretValue. .

{ "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

Kebijakan berikut memberikan akses untuk mengambil semua rahasia dengan nama yang diawali dengan”TestEnv/".

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

Pemberian DescribeSecret dan izin kebijakan berikut dimulai denganList: ListSecrets dan. ListSecretVersionIds

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

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

Untuk mencocokkan nama rahasia, Anda membuat rahasia dengan menyusun Region, ID Akun, nama rahasia, dan wildcard (?) untuk mencocokkan karakter acak individual. ARN Secrets Manager menambahkan enam karakter acak ke nama rahasia sebagai bagian dari merekaARN, 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 rahasia kecuali 6 karakter acak, menggunakan '??????' sintaks karakter wildcard memungkinkan Anda memberikan izin dengan aman ke rahasia yang belum ada. ARN 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 IAM grup milik pengguna. Lihat grup IAM pengguna.

contoh Buat rahasia

Kebijakan berikut memberikan izin untuk membuat rahasia dan melihat daftar rahasia. Untuk menggunakan kebijakan ini, lihatKebijakan berbasis 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

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 kunci 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 KMS kunci, 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" } } } ] }