DVA-C02開発HARD単一選択

ある企業がAPI GatewayとLambdaで構成されたAPIを運用しており、Lambdaのコードの中でAPIレスポンスに以下のPythonコードを含めている。 ```python import os return { "statusCode": 200, "body": json.dumps({ "db_password": os.environ["DB_PASSWORD"], "result": process_data(event) }) } ``` セキュリティ審査で「DB_PASSWORDがAPIレスポンスに含まれている」という重大な指摘を受けた。最も速く確実にこの漏洩を修正しつつ、今後の同種の問題を予防する対策として最も適切な組み合わせはどれか。

  1. A. API GatewayのマッピングテンプレートでLambdaレスポンスのdb_passwordフィールドをフィルタリングして隠蔽する
  2. B. Lambdaコードからdb_passwordフィールドを削除し、DB_PASSWORD環境変数をAWS Secrets Managerに移行してローテーションを有効化する
  3. C. Lambda関数のIAMロールのポリシーを修正してDB_PASSWORD環境変数への読み取り権限を制限する
  4. D. CloudTrailでLambdaの呼び出しログを有効化し、db_passwordが含まれるレスポンスをアラートで検知する
解答と解説を見る

正解: B

根本的な修正はコードからdb_passwordフィールドを削除することであり、これは必須の対応である。加えて、環境変数に平文で保存していたDB_PASSWORDをAWS Secrets Managerに移行することで、パスワードへのアクセスをIAMポリシーで制御・監査でき、自動ローテーション機能によって将来的なパスワード漏洩リスクも低減できる。選択肢AのAPI GatewayマッピングテンプレートによるフィルタリングはAPIレスポンスからdb_passwordを隠蔽できるが、Lambdaのログ(CloudWatch Logs)にはまだパスワードが記録される可能性があり、根本的な修正ではない。また、Lambda内部でシークレットを不必要に読み込んでいる問題は解消されない。選択肢DのCloudTrailによる検知は事後の発見であり、既に発生している漏洩を止めるものではない。予防策としても「漏洩を検知して通知する」だけであり、コードの問題を修正しない限り漏洩は継続する。選択肢CのIAMポリシー修正はLambdaの「環境変数への読み取り権限」という概念はIAMで制御できるものではない(Lambda実行環境はアタッチされたIAMロールとは別に環境変数に直接アクセスできる)ため、この選択肢は技術的に誤りである。

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