本ページは、AWS に関する個人の勉強および勉強会で使用することを目的に、AWS ドキュメントなどを参照し作成しておりますが、記載の誤り等が含まれる場合がございます。

最新の情報については、AWS 公式ドキュメントをご参照ください。

データベース認証情報、API キー、その他のシークレットのライフサイクルを通しての管理、取得、ローテーションできるサービスです。

【AWS Black Belt Online Seminar】AWS Secrets Manager(YouTube)(0:34:51)

secrets-manager-blackbelt

Secrets Manager サービス概要

Secrets Manager ドキュメント

Secrets Manager よくある質問

Secrets Manager の料金

同様のサービスに Systems Manager の Parameter Store というものがあり、どちらを選択するか迷うことがあります。

いくつかの項目で比較したものは下記のとおりです。

項目

Parameter Store

Secrets Manager

料金

無料 👑

有料

可用性

×

マルチリージョンレプリケーション 👑

暗号化

KMS

KMS

自動ローテーション

×

有 👑

AWS サービス連携

多数

管理できるシークレットのタイプ(後述)参照

バージョニング

監査・監視

CloudTrail, CloudWatch

CloudTrail, CloudWatch

この表で比較しても「結局どっち?」となるかもしれません。

個人的なユースケースとしては次のとおりだと考えており、「自動ローテーションが必要かどうか」が最初の判断基準だと考えてもよさそうです。

基本的にデータベースの接続情報が選択できます。

「その他のシークレットタイプ」を選択することでデータベース接続情報以外のデータをシークレットとして登録することも可能です。その場合、SSM の Parameter Store と比較検討したほうがよいでしょう。

types

名前に"/"を使うことで、疑似的に階層化の管理が可能です。

階層化を行うことで、次のように project-x 配下のシークレットに対して一括したアクセス制御を行うことができます。

"Resource": "arn:aws:secretsmanager:ap-northeast-1:123456789012:secret:project-x/*"

作成するシークレットは KMS を使った暗号化が可能です。デフォルトでは、aws/secretsmanager という AWS マネージド型キーが使用できます。

このほかに、顧客管理のキー(CMK)が指定できます。

自動的にパスワードを変更するローテーションを設定することができます。

rotation

設定方法は簡単で、自動ローテーションを ON にして、スケジュールを設定するだけで、自動ローテーションを構成できます。

自動ローテーションを行う AWS Lambda 関数が CloudFormation によって自動デプロイされることで実現されています。

シークレットは、指定した AWS リージョンにのみ作成されますが、 レプリケーションすることで複数のリージョンで同じ名前のシークレットを保持することが可能です。

replication

レプリケーションを有効にした場合、レプリケーション元をプライマリシークレット、レプリケーション先をレプリカシークレットと呼び、自動ローテーションが有効な場合は、レプリカシークレットのほうにも反映されます。

ただし、次の点で注意が必要です。

AWS CloudTrail による AWS Secrets Manager イベントのログ記録」や「Amazon AWS Secrets Manager でのモニタリング CloudWatch」 にも記載されているように API 実行の記録やメトリクスを把握することができます。

シークレットを削除する場合、最短で 7 日間の猶予期間後に削除されるようにスケジュールされます。猶予期間の間はシークレットが利用不可になり、この間は料金が発生しません。

remove

この猶予期間の間に、「Amazon CloudWatch を使用して、削除予定の AWS Secrets Manager シークレットをモニタリングする」にあるようにモニタリングすることで、利用有無を確認することができます。

猶予期間の間に削除をキャンセルすることで、シークレットを復元し利用可能に戻すことができます。

猶予期間が過ぎた場合は、復元することが不可能になります。

overview