Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Dapatkan nilai rahasia atau rahasia dari Secrets Manager
Secrets Manager adalah layanan yang memungkinkan Anda menyimpan dan mengelola rahasia dengan aman seperti kredensi database, kata sandi, dan kunci API pihak ketiga. Dengan menggunakan Secrets Manager, Anda dapat menyimpan dan mengontrol akses ke rahasia ini secara terpusat, sehingga Anda dapat mengganti kredensi hardcode dalam kode Anda (termasuk kata sandi), dengan panggilan API ke Secrets Manager untuk mengambil rahasia secara terprogram. Untuk informasi lebih lanjut, lihat Apa itu AWS Secrets Manager? dalam AWS Secrets Manager User Guide.
Untuk menggunakan seluruh rahasia atau nilai rahasia yang disimpan di Secrets Manager dalam CloudFormation template Anda, Anda menggunakan referensi secretsmanager dinamis.
Praktik terbaik
Ikuti praktik terbaik ini saat menggunakan referensi dinamis Secrets Manager di CloudFormation template Anda:
-
Gunakan referensi tanpa versi untuk CloudFormation template Anda — Simpan kredensi di Secrets Manager dan gunakan referensi dinamis tanpa menentukan
version-stageatauversion-idparameter untuk mendukung alur kerja rotasi rahasia yang tepat. -
Manfaatkan rotasi otomatis — Gunakan fitur rotasi otomatis Secrets Manager dengan referensi dinamis tanpa versi untuk manajemen kredensi. Ini memastikan kredensialmu diperbarui secara berkala tanpa memerlukan perubahan template. Untuk informasi selengkapnya, lihat Merotasi rahasia AWS Secrets Manager.
-
Gunakan referensi berversi hemat — Hanya tentukan eksplisit
version-stageatauversion-idparameter untuk skenario tertentu seperti situasi pengujian atau rollback.
Pertimbangan
Saat menggunakan referensi secretsmanager dinamis, ada pertimbangan penting yang perlu diingat:
-
CloudFormation tidak melacak versi rahasia mana yang digunakan dalam penerapan sebelumnya. Rencanakan strategi manajemen rahasia Anda dengan hati-hati sebelum menerapkan referensi dinamis. Gunakan referensi tanpa versi bila memungkinkan untuk memanfaatkan rotasi rahasia otomatis. Pantau dan validasi pembaruan sumber daya saat membuat perubahan pada konfigurasi referensi dinamis, seperti saat beralih dari referensi dinamis yang tidak berversi ke berversi, dan sebaliknya.
-
Memperbarui hanya nilai rahasia di Secrets Manager tidak secara otomatis menyebabkan CloudFormation untuk mengambil nilai baru. CloudFormation mengambil nilai rahasia hanya selama pembuatan sumber daya atau pembaruan yang memodifikasi sumber daya yang berisi referensi dinamis.
Misalnya, anggaplah template Anda menyertakan AWS::RDS::DBInstancesumber daya tempat
MasterPasswordproperti disetel ke referensi dinamis Secrets Manager. Setelah membuat tumpukan dari template ini, Anda memperbarui nilai rahasia di Secrets Manager. Namun,MasterPasswordproperti mempertahankan nilai kata sandi lama.Untuk menerapkan nilai rahasia baru, Anda harus memodifikasi
AWS::RDS::DBInstancesumber daya di CloudFormation template Anda dan melakukan pembaruan tumpukan.Untuk menghindari proses manual ini di masa depan, pertimbangkan untuk menggunakan Secrets Manager untuk memutar rahasia secara otomatis.
-
Referensi dinamis untuk nilai aman, seperti
secretsmanager, saat ini tidak didukung dalam sumber daya khusus. -
Referensi
secretsmanagerdinamis dapat digunakan di semua atribut sumber daya. Menggunakan referensisecretsmanagerdinamis menunjukkan bahwa Secrets Manager maupun CloudFormation log tidak boleh mempertahankan nilai rahasia yang diselesaikan. Namun, nilai rahasia dapat muncul di layanan yang sumber dayanya digunakan. Tinjau penggunaan Anda untuk menghindari kebocoran data rahasia.
Izin
Untuk menentukan rahasia yang disimpan di Secrets Manager, Anda harus memiliki izin GetSecretValueuntuk memanggil rahasia tersebut.
Pola referensi
Untuk mereferensikan rahasia Secrets Manager di CloudFormation template Anda, gunakan pola secretsmanager referensi berikut.
{{resolve:secretsmanager:secret-id:secret-string:json-key:version-stage:version-id}}
secret-id-
Nama atau ARN rahasianya.
Untuk mengakses rahasia di Anda Akun AWS, Anda hanya perlu menentukan nama rahasia. Untuk mengakses rahasia di tempat yang berbeda Akun AWS, tentukan ARN lengkap rahasia tersebut.
Diperlukan.
secret-string-
Satu-satunya nilai yang di-support adalah
SecretString. Nilai default-nyaSecretString. json-key-
Nama kunci dari pasangan kunci-nilai yang nilainya ingin Anda ambil. Jika Anda tidak menentukan
json-key, CloudFormation mengambil seluruh teks rahasia.Segmen ini mungkin tidak memasukkan karakter titik dua (
:). version-stage-
Label pementasan versi rahasia yang akan digunakan. Secrets Manager menggunakan label pementasan untuk melacak versi yang berbeda selama proses rotasi. Jika Anda menggunakan
version-stagemaka jangan tentukanversion-id. Jika Anda tidak menentukan salah satuversion-stageatauversion-id, maka defaultnya adalahAWSCURRENTversinya.Segmen ini mungkin tidak memasukkan karakter titik dua (
:). version-id-
Pengidentifikasi unik dari versi rahasia yang akan digunakan. Jika Anda menentukan
version-id, jangan tentukanversion-stage. Jika Anda tidak menentukan salah satuversion-stageatauversion-id, maka defaultnya adalahAWSCURRENTversinya.Segmen ini mungkin tidak memasukkan karakter titik dua (
:).
Contoh
Topik
Mengambil nilai nama pengguna dan kata sandi dari rahasia
AWS::RDS::DBInstanceContoh berikut mengambil nama pengguna dan nilai kata sandi yang disimpan dalam rahasia. Contoh ini menunjukkan pola yang direkomendasikan untuk referensi dinamis tanpa versi, yang secara otomatis menggunakan MySecretAWSCURRENT versi dan mendukung alur kerja rotasi Secrets Manager tanpa memerlukan perubahan template.
JSON
{ "MyRDSInstance": { "Type": "AWS::RDS::DBInstance", "Properties": { "DBName": "MyRDSInstance", "AllocatedStorage": "20", "DBInstanceClass": "db.t2.micro", "Engine": "mysql", "MasterUsername": "{{resolve:secretsmanager:MySecret:SecretString:username}}", "MasterUserPassword": "{{resolve:secretsmanager:MySecret:SecretString:password}}" } } }
YAML
MyRDSInstance: Type: AWS::RDS::DBInstance Properties: DBName: MyRDSInstance AllocatedStorage: '20' DBInstanceClass: db.t2.micro Engine: mysql MasterUsername: '{{resolve:secretsmanager:MySecret:SecretString:username}}' MasterUserPassword: '{{resolve:secretsmanager:MySecret:SecretString:password}}'
Mengambil seluruh SecretString
Referensi dinamis berikut mengambil SecretString for.MySecret
{{resolve:secretsmanager:MySecret}}
Atau:
{{resolve:secretsmanager:MySecret::::}}
Mengambil nilai dari versi rahasia tertentu
Referensi dinamis berikut mengambil nilai untuk password versi. AWSPREVIOUSMySecret
{{resolve:secretsmanager:MySecret:SecretString:password:AWSPREVIOUS}}
Mengambil rahasia dari yang lain Akun AWS
Referensi dinamis berikut mengambil SecretString untuk yang lain Akun AWS. Anda harus menentukan ARN rahasia lengkap untuk mengakses rahasia di tempat lain. Akun AWSMySecret
{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret}}
Referensi dinamis berikut mengambil nilai untuk password yang lain Akun AWS. Anda harus menentukan ARN rahasia lengkap untuk mengakses rahasia di tempat lain. Akun AWSMySecret
{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret:SecretString:password}}