DevOpsチームはLambda関数を使ったサーバーレスアプリケーションをCodePipelineでデプロイしています。セキュリティ要件として「CI/CDパイプライン自体が侵害された場合でも、セキュリティチームが承認した署名済みコードパッケージのみが本番Lambda関数にデプロイされること」を保証する必要があります。この要件を最も確実に満たすアーキテクチャはどれですか?
AWS Signerは、Lambdaデプロイパッケージに暗号学的デジタル署名を付与するマネージドサービスです。本番Lambda関数にCode Signing Configurationをアタッチすると、有効な署名を持たないパッケージはパイプラインの状態に関わらずLambdaのAPI呼び出し時点でデプロイが拒否されます。これはパイプライン侵害時でも機能するプラットフォームレベルの強制(enforcement)であり、セキュリティチームが管理する署名鍵で署名されたコードのみを本番へ通せます。 選択肢Bのチェックサム検証は、ライフサイクルフックのスクリプト自体が侵害された攻撃者によって改ざん・スキップされる可能性があり、暗号学的署名ほどの信頼性がありません。 選択肢CのKMS暗号化はデータの機密性を保護しますが、コードの完全性(誰の承認で署名されたか)を保証するものではなく、パイプライン侵害への防御になりません。 選択肢DのManual Approvalは人間の承認を介しますが、パイプラインが侵害された場合に承認ステップ自体がバイパスされるリスクがあり、技術的な強制力を持ちません。