SAA-C03セキュアなアーキテクチャの設計MEDIUM単一選択

ある企業が、Lambda 関数から Amazon RDS for MySQL へ接続するアーキテクチャを構築している。データベースのパスワードを安全に管理し、定期的に自動ローテーションしたい。Lambda 関数のコード変更を最小限に抑えながら、この要件を実現する最も適切な方法はどれか。

  1. A. データベースパスワードを Lambda 関数の環境変数に平文で設定し、IAM ポリシーで Lambda 関数のみがアクセスできるように制限する。
  2. B. Amazon Cognito でデータベースユーザーを管理し、JWT トークンを使って RDS に認証する。
  3. C. AWS Secrets Manager にデータベース認証情報を保存し、Lambda 関数実行時に Secrets Manager API で認証情報を取得する。自動ローテーション機能を有効化して定期的にパスワードを更新する。
  4. D. AWS Systems Manager Parameter Store(SecureString)にパスワードを保存し、Lambda 関数から取得する。ローテーションは手動で行う。
解答と解説を見る

正解: C

AWS Secrets Manager は RDS との統合による自動ローテーション機能を内蔵しており、設定するだけでパスワードが定期的に自動更新される。Lambda 関数は実行時に Secrets Manager から認証情報を取得するため、コードへのパスワード埋め込みが不要。自動ローテーション時も Lambda 関数のコード変更は不要である。選択肢Aは環境変数への平文保存であり、コンソールから閲覧可能でセキュリティリスクがある。また自動ローテーション機能もない。選択肢DのParameter Store SecureString は機密情報の安全な保存には適しているが、RDS パスワードの自動ローテーション機能は Secrets Manager に比べて制限されており、追加の Lambda 関数実装が必要になる。選択肢Bは Cognito を使った JWT 認証で RDS には接続できない(RDS は IAM 認証または通常のパスワード認証を使う)。

▸ この試験を本気で演習する(全150問・無料)