Secrets Managerを使ってみた

CloudFormationの学習を進めていく途中で、[こちら](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/security-best-practices.html#creds)のベストプラクティスが目に留まりました。

>AWS CloudFormation テンプレートに機密情報を埋め込むのではなく、スタックテンプレートで 動的なリファレンス を使用することをお勧めします。

>動的なリファレンスにより、AWS Systems Manager パラメータストアや AWS Secrets Manager などの他のサービスで保存、管理されている外部値を参照するためのシンプルで強力な方法が提供されます。

ん？

ていうことは、見られちゃ困るものは↑のサービス使って隠してねって事ですね！


という事で今回はSecrets Managerの簡単な使い方を調べてまとめてみました。

##①新しいシークレットを保存する　をポチっと
![シークレット1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/c2aa2cd3-42f2-6ccc-f9fe-e3c8e2826d3e.png)

##②その他のシークレット　をポチッと
![シークレット2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/cfd1b521-a22f-cb13-b82e-c285d5f784fc.png)

##③シークレットキーと値決める
![シークレット3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/bf4b98f0-6649-6fe4-c312-9b06ec9ade4d.png)

|シークレットキー|値（機密情報）|
|:--|--:|
|username|hoge|
|password|fuga|

画像の右側は秘密にしておきたい情報を、左側はそれがわかるような名前を入れます。

##④シークレットの名前と説明を入れる
![シークレット4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/de60c1fe-bd4c-a1a7-8fad-89130904c461.png)
シークレットの名前は分かりやすいように入れておきましょう♪
説明やタグは必要に応じて('ω')ノ

次を押してください。
##⑤自動ローテーションの設定
![シークレット5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/e550dfc6-8f36-f3ed-c8ef-c4ab79fe7f5c.png)
ここは無効のままで結構です♬

次を押してください。
##⑥レビューの確認
![シークレット6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/9764a2c3-b495-ab88-3ac4-5eacaa9e73a7.png)
![シークレット7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/9f1c546f-be03-3e4a-6144-360e2d305328.png)

保存を押して、はい！

これで設定の方は終わりです。

次にしっかり保存されているか確認してみます。

「RDSSecret」をクリックすると、

![シークレット8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/c9b65dfa-9c82-a4d9-1cad-2d793826025f.png)

↓　設定した一覧が表示されます。

![シークレット9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/7ac3e0db-3a8b-4eb1-23f5-fdff40de7098.png)



下にスクロールしていくと「シークレットの値」という箇所があるので、右の「シークレットの値を取得する」をクリック。

![シークレット10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/3f0f6202-1fe4-ecd5-10d5-3cfb36e0a454.png)


すると、

![シークレット11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/d037cdb4-6232-5821-559a-7819f4607015.png)

ほい！

先ほど設定したシークレットキーと値がしっかりと反映されてますね('ω')ノ

__ここからが重要です。__

今回CloudFormationで必要になるものが、

- __シークレットの名前__
- __シークレットキー__

この二つです。

⑥のシークレットの名前と、上画像のシークレットキーを覚えておきましょう。

##⑦今回使うリファレンスパターン

公式で紹介されているリファレンスパターンを貼っておきます。


```
{{resolve:secretsmanager:secret-id:SecretString:json-key:version-stage:version-id}}
```

~~ほッほじゃ？~~

何が書いてあるのかよくわかりません( ；∀；)

一つ一つ日本語っぽくすると↓のようになります（多分💦

![シークレット12 - コピー.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/d7972bc1-28f2-6bcd-f5df-8f7225fe8b45.png)

今回は右の`version-stage`と`version-id`は使わないので消してOKです。

すると↓のような形になります。

```
{{resolve:secretsmanager:secret-id:SecretString:json-key}}
```


そして上記で覚えておいた「シークレットの名前」と「シークレットキー」を入れると……

![シークレット12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/aa38bd62-d7e1-f6de-ca06-4471bbdf8dc1.png)


はい！ほぼ完成です！

最後に、RDSやEC２等で出来立てほやほやの動的リファレンスをこんな感じで貼り付ければ無事、完成です(*´▽｀*)

```
 MasterUsername: '{{resolve:secretsmanager:MyRDSSecret:SecretString:username}}'
 MasterUserPassword: '{{resolve:secretsmanager:MyRDSSecret:SecretString:password}}'
```

お疲れさまでした<(_ _)>