

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
<a name="dynamic-references-secretsmanager"></a>

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?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) 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
<a name="dynamic-references-secretsmanager-best-practices"></a>

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](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html).
+ **Gunakan referensi berversi hemat** — Hanya tentukan eksplisit `version-stage` atau `version-id` parameter untuk skenario tertentu seperti situasi pengujian atau rollback.

## Pertimbangan-pertimbangan
<a name="dynamic-references-secretsmanager-considerations"></a>

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 [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html)sumber 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, seperti`secretsmanager`, 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
<a name="dynamic-references-secretsmanager-permissions"></a>

Untuk menentukan rahasia yang disimpan di Secrets Manager, Anda harus memiliki izin [https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html)untuk memanggil rahasia tersebut.

## Pola referensi
<a name="dynamic-references-secretsmanager-pattern"></a>

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.  
Wajib.

`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 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-stage` maka jangan tentukan `version-id`. Jika Anda tidak menentukan salah satu `version-stage` atau`version-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` atau`version-id`, maka defaultnya adalah `AWSCURRENT` versinya.  
Segmen ini mungkin tidak memasukkan karakter titik dua ( `:`).

## Contoh
<a name="dynamic-references-secretsmanager-examples"></a>

**Topics**
+ [Mengambil nilai nama pengguna dan kata sandi dari rahasia](#dynamic-references-secretsmanager-examples-user-name-and-password)
+ [Mengambil seluruh SecretString](#dynamic-references-secretsmanager-examples-entire-secretstring)
+ [Mengambil nilai dari versi rahasia tertentu](#dynamic-references-secretsmanager-examples-specific-version)
+ [Mengambil rahasia dari yang lain Akun AWS](#dynamic-references-secretsmanager-examples-secrets-from-another-account)

### Mengambil nilai nama pengguna dan kata sandi dari rahasia
<a name="dynamic-references-secretsmanager-examples-user-name-and-password"></a>

[https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html)Contoh 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
<a name="dynamic-references-secretsmanager-examples-user-name-and-password.json"></a>

```
{
    "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
<a name="dynamic-references-secretsmanager-examples-user-name-and-password.yaml"></a>

```
  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
<a name="dynamic-references-secretsmanager-examples-entire-secretstring"></a>

Referensi dinamis berikut mengambil `SecretString` for`MySecret`.

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

Atau:

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

### Mengambil nilai dari versi rahasia tertentu
<a name="dynamic-references-secretsmanager-examples-specific-version"></a>

Referensi dinamis berikut mengambil `password` nilai untuk `AWSPREVIOUS` versi. `MySecret`

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

### Mengambil rahasia dari yang lain Akun AWS
<a name="dynamic-references-secretsmanager-examples-secrets-from-another-account"></a>

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}}
```