DVAセキュリティ
Lambda関数が、SSM Parameter StoreのSecureString型パラメータ(カスタマーマネージドKMSキーで暗号化)からサードパーティAPIキーを取得します。コードは ssm:GetParameter を WithDecryption=true で呼び出しますが、本番デプロイ後に AccessDeniedException が発生します。実行ロールには ssm:GetParameter 権限が付与されています。原因と対策として最も適切なものはどれですか。
A実行ロールに対象CMKへの kms:Decrypt 権限が不足している。キーポリシーまたはロールのIAMポリシーで付与する
✓ 正解
SecureStringをWithDecryption=trueで取得するとParameter StoreがCMKで復号を行うため、実行ロールにssm:GetParameterだけでなくkms:Decryptが必要です。これが欠けると復号段階で拒否されるため、付与すれば解決します。
BSecureStringはLambdaから直接復号できない仕様のため、パラメータをSecrets Managerに移行して取得する
SecureStringは適切なkms:Decrypt権限があればLambdaから直接復号できます。Secrets Managerへの移行は不要で、AccessDeniedExceptionの根本原因(KMS権限不足)も解消しないため対策になりません。
CWithDecryption=true はAdvancedパラメータ階層でのみ有効なため、パラメータ階層をAdvancedに変更する
WithDecryption=trueはStandard階層でもAdvanced階層でも利用可能で、復号の可否と階層は無関係です。階層変更ではKMS権限不足によるAccessDeniedExceptionは解消しません。
DParameter Store用のVPCインターフェイスエンドポイントが未設定のため、エンドポイントを作成して接続する
VPCエンドポイント未設定の場合はネットワーク到達不可によるタイムアウトや接続エラーになり、AccessDeniedException(認可エラー)の原因ではありません。権限不足の問題は解決しません。
解説
SecureStringパラメータを WithDecryption=true で取得する際、Parameter Storeはカスタマーマネージドキーで暗号化された値を復号するためにKMSを呼び出します。このため呼び出し元の実行ロールには ssm:GetParameter に加えて、対象CMKに対する kms:Decrypt 権限が必要です。権限が欠けると ssm:GetParameter があっても復号段階で AccessDeniedException になります。CMKのキーポリシーまたはロールのIAMポリシーで kms:Decrypt を許可すれば解決します。
選択肢のSecrets Managerへの移行は、SecureStringはLambdaから直接復号でき、不要な対応です。
選択肢のAdvanced階層は、WithDecryptionの可否とは無関係です。
選択肢のVPCエンドポイントは、未設定ならタイムアウト等になり、AccessDeniedExceptionの原因ではありません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →