Dapatkan nilai rahasia atau rahasia dari Secrets Manager - AWS CloudFormation

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-stage atau version-id parameter 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-stage atau version-id parameter 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 MasterPassword properti disetel ke referensi dinamis Secrets Manager. Setelah membuat tumpukan dari template ini, Anda memperbarui nilai rahasia di Secrets Manager. Namun, MasterPassword properti mempertahankan nilai kata sandi lama.

    Untuk menerapkan nilai rahasia baru, Anda harus memodifikasi AWS::RDS::DBInstance sumber 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, sepertisecretsmanager, saat ini tidak didukung dalam sumber daya khusus.

  • Referensi secretsmanager dinamis dapat digunakan di semua atribut sumber daya. Menggunakan referensi secretsmanager dinamis 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-nya SecretString.

json-key

Nama kunci dari pasangan kunci-nilai yang nilainya ingin Anda ambil. Jika Anda tidak menentukanjson-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-stage maka jangan tentukan version-id. Jika Anda tidak menentukan salah satu version-stage atauversion-id, maka defaultnya adalah AWSCURRENT versinya.

Segmen ini mungkin tidak memasukkan karakter titik dua ( :).

version-id

Pengidentifikasi unik dari versi rahasia yang akan digunakan. Jika Anda menentukan version-id, jangan tentukan version-stage. Jika Anda tidak menentukan salah satu version-stage atauversion-id, maka defaultnya adalah AWSCURRENT versinya.

Segmen ini mungkin tidak memasukkan karakter titik dua ( :).

Contoh

Mengambil nilai nama pengguna dan kata sandi dari rahasia

AWS::RDS::DBInstanceContoh berikut mengambil nama pengguna dan nilai kata sandi yang disimpan dalam MySecret rahasia. Contoh ini menunjukkan pola yang direkomendasikan untuk referensi dinamis tanpa versi, yang secara otomatis menggunakan AWSCURRENT 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 forMySecret.

{{resolve:secretsmanager:MySecret}}

Atau:

{{resolve:secretsmanager:MySecret::::}}

Mengambil nilai dari versi rahasia tertentu

Referensi dinamis berikut mengambil password nilai untuk AWSPREVIOUS versi. MySecret

{{resolve:secretsmanager:MySecret:SecretString:password:AWSPREVIOUS}}

Mengambil rahasia dari yang lain Akun AWS

Referensi dinamis berikut mengambil SecretString untuk MySecret yang lain Akun AWS. Anda harus menentukan ARN rahasia lengkap untuk mengakses rahasia di tempat lain. Akun AWS

{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret}}

Referensi dinamis berikut mengambil password nilai untuk MySecret yang lain Akun AWS. Anda harus menentukan ARN rahasia lengkap untuk mengakses rahasia di tempat lain. Akun AWS

{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret:SecretString:password}}