開発者が Lambda 関数から 10MB のファイルを暗号化して S3 に保存する処理を実装している。社内ポリシーでは AWS KMS を用いた暗号化が必須とされている。KMS の API 制限と処理効率を考慮した場合、最も適切な実装はどれか。
KMS の Encrypt API は最大 4KB のデータしか直接暗号化できないため、10MB のファイルには使用不可。エンベロープ暗号化(Envelope Encryption)では GenerateDataKey で平文データキーと暗号化済みデータキーを取得し、平文データキーでローカル暗号化後に平文キーをメモリから破棄する。暗号化済みデータキーと暗号文をセットで保管するのが AWS 推奨パターン。 選択肢AのEncrypt APIは、最大 4KB のデータしか直接暗号化できないため、10MB のファイルには使用不可である。 選択肢Cのサーバーサイド暗号化(SSE-S3)は、KMS を使用しないため、社内ポリシー要件を満たさない。 選択肢DのGenerateDataKeyPair APIは、RSA キーペアを生成するものであり、対称キーでのエンベロープ暗号化とは異なる。