SOAセキュリティとコンプライアンス
ある企業は Amazon RDS for MySQL データベースを使用するウェブアプリケーションを EC2 上で運用しています。現在、データベースの認証情報が EC2 インスタンスの環境変数にプレーンテキストで設定されており、セキュリティ監査で指摘されました。
要件は以下の3点です。
- 認証情報の暗号化保存
- 90日ごとの自動ローテーション
- アプリケーションが API 経由で最新の認証情報を取得できること
最も運用負荷が低いソリューションはどれですか?
ASystems Manager Parameter Store に SecureString で認証情報を保存し、Lambda と EventBridge で90日ごとにパスワードを自動更新するスクリプトを実装する
Parameter Store の SecureString は KMS で暗号化されるが、RDS との組み込み自動ローテーション機能がなく、ローテーション処理を Lambda と EventBridge で自作する必要がある。要件を満たせるが Secrets Manager の組み込み機能と比べて実装・運用の負荷が高い。
BAWS Secrets Manager に認証情報を登録し、RDS との自動ローテーションを有効化して90日のローテーション間隔を設定する
✓ 正解
AWS Secrets Manager は RDS との組み込み統合でローテーション Lambda を自動プロビジョニングし、指定間隔でパスワードを自動更新・反映する。GetSecretValue API でアプリから最新情報を取得でき、暗号化保存・自動ローテーション・API 取得の3要件をすべて最小運用負荷で満たせる。
CRDS の IAM データベース認証を有効化し、EC2 インスタンスの IAM ロールで一時トークンを取得してデータベースに接続する
IAM データベース認証は IAM 一時トークンを使い保存パスワード自体を不要にする優れた方法だが、「90日ごとのパスワードローテーション」という要件とは異なる認証方式であり、アプリケーションの DB 接続コードをトークン取得方式に変更する必要があって既存アプリへの影響が大きい。
DKMS カスタマーマネージドキーで暗号化した認証情報ファイルを S3 バケットに配置し、EC2 インスタンスの IAM ロールで読み取り・復号して使用する
S3 バケットへの認証情報ファイル配置と KMS 暗号化は保存時のセキュリティを確保できるが、自動ローテーション機能がなく90日ごとの更新に手動作業が発生する。また S3 からのファイル取得と復号も追加実装が必要で Secrets Manager より複雑になる。
解説
AWS Secrets Manager は、データベース認証情報・API キー・OAuth トークンなどのシークレットを安全に保存・管理するマネージドサービスです。Amazon RDS との組み込み統合により、ローテーション用 Lambda 関数が自動的にプロビジョニングされ、指定した間隔(1〜365日)でパスワードの更新と RDS への反映が自動で行われます。アプリケーションは GetSecretValue API を呼び出すだけで常に最新の認証情報を取得でき、カスタムの自動化コードを構築せずに3つの要件をすべて満たせます。
選択肢AのSystems Manager Parameter Storeは、SecureString 型での KMS 暗号化保存は可能ですが、RDS との自動ローテーション機能がなく Lambda と EventBridge を自作する必要があるため Secrets Manager より運用負荷が高い。
選択肢CのIAM データベース認証は、パスワードをなくして一時 IAM トークンで接続するセキュアな方式だが、「90日ごとのパスワードローテーション」という要件とは概念が異なり、アプリケーションの DB 接続コードをトークン取得方式に変更する必要がある。
選択肢DのS3+KMS による認証情報ファイル管理は、暗号化保存は実現できるが自動ローテーション機能がなく、90日ごとの更新には手動操作が必要となるため要件を満たさない。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでSOAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →