【AWS】機密データの管理 ~ Secrets Manager 編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/01/31/231636

の続き。
今回は、『【2】AWS Secrets Manager』を扱う。

目次

【1】AWS Secrets Manager
【2】パラメータストアとの比較
【3】シークレットキー作成
 1)作成前の準備
 2)作成手順
【4】設定値の取得
 1)AWS CLI
 2)boto3 API

【1】AWS Secrets Manager

* 認証情報(シークレット)を所有する暗号化キーで暗号化し、
   AWS Key Management Service (KMS) に保管するサービス
 => シークレット情報(RDSの認証情報など)をセキュアに一元管理できる

※ KMSについては、以下の関連記事を参照。

AWS Key Management Service (KMS)
https://dk521123.hatenablog.com/entry/2020/02/27/232553

【2】パラメータストアとの比較

項目 パラメータストア Secrets Manager 備考
料金 無料 有料
自動ローテーション機能 なし あり

詳細

以下を参照のこと

https://qiita.com/tomoya_oka/items/a3dd44879eea0d1e3ef5

【3】シークレットキー作成

1)作成前の準備

・独自のKMSを使用する場合は、事前にKMSキーを作成しておくこと

2)作成手順

https://qiita.com/mm-Genqiita/items/f93285a6058c64b39f23

が参考になる

Step1)シークレットタイプの選択

 => RDS/Redshiftなど用途にあったサービスを選択する

Step2)シークレットの名前設定

 => シークレット名、必要であれば説明などを記入

Step3)自動ローテーションを設定

 => あり・なしを選択

Step4)レビュー

 => 設定を確認し問題なければ、保存して完了

【4】設定値の取得

1)AWS CLI
2)boto3 API
etc...

※ EC2などの実行する環境には、Secrets ManagerにアクセスするIAMロールを
 事前にアタッチしておくこと
※ 「2)boto3 API」については、
 作成時に各プログラム言語のサンプルが参照できる

1)AWS CLI

https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/index.html
https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/tutorials_basic.html#tutorial-basic-step2
サンプル
https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html
https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/tutorials_db-rotate.html

# 権限があれば、JSONで結果が返ってくる
aws secretsmanager get-secret-value --region us-east-1 --secret-id sample-rds-key

# jqコマンドを使用してJSONをパースする
# jq の -r オプション : 囲み文字であるダブルクォートが除去
aws secretsmanager get-secret-value --region us-east-1 --secret-id sample-rds-key | jq -r .SecretString | jq -r .username

# 変数に格納する
secret=$(aws secretsmanager get-secret-value  --region us-east-1 --secret-id sample-rds-key | jq .SecretString | jq fromjson)
user=$(echo $secret | jq -r .username)
password=$(echo $secret | jq -r .password)

2)boto3 API

以下の関連記事を参照のこと。

機密データの管理 ~ Secrets Manager / boto3 編 ~
https://dk521123.hatenablog.com/entry/2021/10/05/105550

参考文献

https://dev.classmethod.jp/cloud/aws/secrets-manager-tutorials/
https://qiita.com/mm-Genqiita/items/f93285a6058c64b39f23
https://dev.classmethod.jp/cloud/aws/about-secrets-manager/
http://nopipi.hatenablog.com/entry/2019/02/12/233435#AWS-Secrets-Manager%E3%81%A8%E3%81%AF
https://qiita.com/inductor/items/ac8f4a1a947f0d3bbaa6

関連記事

機密データの管理 ~ Secrets Manager / boto3 編 ~
https://dk521123.hatenablog.com/entry/2021/10/05/105550
機密データの管理 ~ パラメータストア 編 ~
https://dk521123.hatenablog.com/entry/2020/01/31/231636
AWS Key Management Service (KMS)
https://dk521123.hatenablog.com/entry/2020/02/27/232553
CodeBuild で パラメータストア / Secrets Manager を使う
https://dk521123.hatenablog.com/entry/2020/02/18/230358
jq コマンド ~ コマンドで JSON を扱う ~
https://dk521123.hatenablog.com/entry/2020/02/01/000000