
【VPC外リージョンサービス】
Secrets Manager は、アプリケーションで利用する Secret(機密情報) を安全に保管・管理するサービスです。
データベースのパスワードやAPIキーといった Secret Value(シークレット値) を KMSにより安全に暗号化し、IAM および アクセスポリシーを使って厳密にアクセス制御を行います。
各シークレットには一意の Secret ID(シークレットの識別子) が割り当てられ、取得時には Retrieve(シークレット取得) API を利用してアプリケーションが動的に値を参照できます。
Rotation(ローテーション) に対応しており、Rotation Lambda Function(ローテーション用Lambda関数) を使用することで、RDS、Redshift、 DocumentDB などのデータベース認証情報を自動的に更新できます。この処理は Secret Rotation Schedule(ローテーションスケジュール) に基づいて定期的に実行され、セキュリティリスクを最小化します。
Secrets Manager は Version(バージョン管理) 機能を備えており、シークレットの履歴を追跡したり、過去の値へロールバックしたりすることが可能です。すべての操作履歴は CloudTrailに記録され、変更や取得のアクティビティを可視化できます。
マルチリージョンレプリケーション に対応しており、異なるリージョン間でシークレットを安全に複製・同期することができます。
Cross-Account Access(クロスアカウントアクセス) によって、他のAWSアカウントからシークレットを安全に参照できるよう設計されています。これにより、複数アカウントやシステム間でのシークレット共有が容易になります。
Secrets Manager は、Config や Security Hub とも連携し、シークレットの構成状態を監査・可視化したり、セキュリティ評価の一部として利用したりできます。
重要用語
ユースケース
| DBパスワード・APIキーの安全保管 | データベース接続情報や外部サービスのAPIキーをSecrets Managerに保存し、アプリケーションコードや設定ファイルに平文で書かないようにする。 |
| 認証情報の自動ローテーション | RDS等と連携し、DBパスワードを自動的に定期変更しつつ、アプリケーション側からは常に最新のシークレットを参照させる。 |
| 複数環境のシークレット管理 | dev/stg/prodといった環境ごとに名前空間を分け、環境に応じて異なるシークレットを安全に管理・参照する。 |
ベストプラクティス
| 自動ローテーションの設定 | DBやAPIキーのシークレットを定期的に自動更新する。 |
| アクセス権限の細分化 | シークレットごとにIAMポリシーでアクセス制御する。 |
| 環境ごとのシークレット分離 | 開発・本番で別シークレットを用意し、誤用を防ぐ。 |
高可用性・バックアップ・リトライ
| 高可用性・バックアップ・リトライ設計のポイント |
|---|
| 【デフォルト】AWS内部で冗長化 ・シークレットデータ ・暗号化キー(KMS) ・メタデータ ・サービスエンドポイント |
セキュリティ
| 関連サービス | 設定内容 |
|---|---|
| KMS(データの暗号化と鍵の安全管理) | 【シークレット値の暗号化が必要】 独自KMSキーを使うことを推奨(鍵操作、監査 |
| Secrets Manager(機密情報の安全管理) | - |
| SSM Parameter Store(設定情報の一元管理) | - |
| CloudTrail(操作履歴の記録・監査・追跡) | 【自動記録】 作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI) データ操作は追跡できない(データプレーンAPI) |
| Config(リソースの構成状態・設定変更を記録) | 【Configが有効な場合】 シークレット設定変更履歴・KMS暗号化/ローテーション設定の準拠評価 |
| GuardDuty(脅威を自動検出) | 【GuardDutyが有効な場合】 シークレット削除・権限変更のAPI異常検知 |
ログ・監視
標準メトリクス
| メトリクス名 | 説明 |
|---|---|
| APICallCount | API呼び出し数 |
| ResourceCount | シークレット数 |
制限値(固定値/ハードリミット/ソフトリミット)
| 固定値 | 制限値 |
|---|---|
| バージョン数/シークレット | 100(アクティブ) |
| ハードリミット | 制限値 |
|---|---|
| シークレットサイズ | 最大10 KB(65,536 Bytes) |
| リソースポリシーのサイズ | 最大20 KB |
| ローテーション間隔 | 最短1時間 |
| ソフトリミット | 制限値 |
|---|---|
| シークレット数/リージョン | 500,000 |
| GetSecretValue APIレート | 10,000 RPS(デフォルト) |
| その他のAPIレート | 5,000 RPS |
AWS CLIのサンプルコード
CloudFormationのサンプルコード
Terraformのサンプルコード
料金計算
| 課金項目 | 説明 |
|---|---|
| シークレット | 保存するシークレットの月額料金 |
| APIコール | シークレット取得などのAPIコール数 (10,000回単位) |