SAA / ドメイン1 セキュアなアーキテクチャの設計

AWS Secrets Manager

は、データベースパスワード、 キー、OAuth トークンなどのシークレットを安全に保存、取得、ローテーションするサービスです。

SAA では、認証情報をコード、、環境変数、ユーザーデータへ埋め込まず、実行時に ロールで取得する設計が重要です。


概要

シークレットは で暗号化され、 とリソースポリシーでアクセスを制御します。アプリケーションは またはライブラリから必要時に値を取得します。


主要技術

①安全な保存と取得

アプリケーションにはではなく ロールを付与し、必要なシークレットだけを取得できるを設定します。 によって 操作を監査できます。

別アカウントからシークレットを読ませるには、シークレットのリソースポリシーと相手側の IAM ポリシーの両方で許可します。さらに、AWS managed key (aws/secretsmanager) はで使えないため、シークレットをで暗号化し、そのキーポリシーで相手のロールに kms:Decrypt を許可します。

の環境変数や のタスク定義の環境変数に値を直接書くと、保存時に暗号化されていても、関数やタスク定義の設定を参照できる利用者には値が見えます。値そのものは か Parameter Store の SecureString に置き、実行時に取得させるか、ECS ではタスク定義の secrets で参照させます。


②自動ローテーション ⚠️ 頻出

は対応データベースの認証情報を定期的に変更できます。一般的なシークレットでは ローテーション関数を使い、新旧認証情報の切り替えを自動化します。

のタスク定義の secrets で参照した値は、の起動時に環境変数として注入されます。ローテーションで値が変わっても実行中のタスクには反映されないため、新しいタスクへ入れ替える必要があります。再起動せずに新しい値を使わせたい場合は、アプリケーションが実行時に Secrets Manager の (またはライブラリ) で取得します。


③レプリケーションと可用性

シークレットを別へレプリケートし、災害対策や複数リージョンアプリケーションで利用できます。アプリケーション側では取得失敗やローテーションを考慮し、値を適切にします。


④Parameter Storeとの違い

要件Parameter Store
シークレットの保存対応しますSecureString で対応します。
組み込みのローテーション主用途です標準機能の中心ではありません。
設定値の階層管理可能ですが主目的ではありません主用途です。
データベース認証情報適しています手動運用を組み合わせます。

試験対策

問題文のキーワード選ぶ機能
DB パスワードを自動更新 のローテーション
から安全に取得 ロール + Secrets Manager
を管理
一般設定値を階層管理 Parameter Store

「ハードコードしない」「自動ローテーション」「監査可能」が Secrets Manager の重要な判断軸です。


参考文献

  1. ※1出題比率: AWS 公式の試験ガイドに記載された、採点対象の設問のうちその分野が占める割合です。

検索

キーワードを入力してください