Lambda .zip デプロイパッケージの暗号化
AWS Lambda では、.zip デプロイパッケージと関数設定詳細の保管時のサーバー側暗号化に常に AWS KMS key を提供します。デフォルトでは、Lambda は AWS 所有のキー を使用します。このデフォルトの動作がワークフローに適している場合は、他の設定をする必要はありません。AWS では、このキーの使用に料金は発生しません。
必要に応じて、AWS KMS カスタマー管理のキーを使用することもできます。その場合、KMS キーのローテーションの制御や、KMS キーの管理に関する組織の要件への準拠を行うことができます。カスタマーマネージドキーを使用すると、KMS キーへのアクセス許可があるアカウントのユーザーのみが、関数のコードや設定を表示または管理できます。
カスタマーマネージドキーには、標準の AWS KMS 料金が発生します。詳細については、「AWS Key Management Service 料金表
カスタマーマネージドキーを作成する
対称カスタマーマネージドキーを作成するには、AWS Management Console または AWS KMS API を使用します。
対称カスタマーマネージドキーを作成するには
「AWS Key Management Service デベロッパーガイド」の「KMS キーを作成する」の手順に従ってください。
アクセス許可
キーポリシー
キーポリシーは、カスタマーマネージドキーへのアクセスを制御します。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。詳細については、「AWS Key Management Service デベロッパーガイド」の「キーポリシーを変更する方法」を参照してください。
カスタマーマネージドキーを使用して .zip デプロイパッケージを暗号化する場合、Lambda はキーに grant を追加しません。AWS KMS キーポリシーで、Lambda がユーザーに代わって次の AWS KMS API オペレーションを呼び出せるようにする必要があります。
次のキーポリシーの例では、アカウント 111122223333 のすべての Lambda 関数が、指定されたカスタマーマネージドキーに必要な AWS KMS オペレーションを呼び出せるようにします。
例 AWS KMS キーポリシー
キーアクセスのトラブルシューティングに関する詳細については、「AWS Key Management Service デベロッパーガイド」を参照してください。
プリンシパルアクセス権限
カスタマーマネージドキーを使用して .zip デプロイパッケージを暗号化すると、そのキーにアクセスできるプリンシパルのみが .zip デプロイパッケージにアクセスできます。例えば、カスタマーマネージドキーにアクセスできないプリンシパルは、GetFunction レスポンスに含まれている署名付き S3 URL を使用して .zip パッケージをダウンロードすることはできません。AccessDeniedException は、レスポンスの Code セクションで返されます。
例 AWS KMS AccessDeniedException
{ "Code": { "RepositoryType": "S3", "Error": { "ErrorCode": "AccessDeniedException", "Message": "KMS access is denied. Check your KMS permissions. KMS Exception: AccessDeniedException KMS Message: User: arn:aws:sts::111122223333:assumed-role/LambdaTestRole/session is not authorized to perform: kms:Decrypt on resource: arn:aws:kms:us-east-1:111122223333:key/key-id with an explicit deny in a resource-based policy" }, "SourceKMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/key-id" }, ...
AWS KMS キーのアクセス許可については、「AWS KMS キーアクセスとアクセス許可」を参照してください。
.zip デプロイパッケージにカスタマーマネージドキーを使用する
次の API パラメータを使用して、.zip デプロイパッケージのカスタマーマネージドキーを設定します。
-
SourceKMSKeyArn: ソースの .zip デプロイパッケージ (アップロードするファイル) を暗号化します。
-
KMSKeyArn: 環境変数と Lambda SnapStart のスナップショットを暗号化します。
-
DurableConfig.KMSKeyArn: 耐久性のある実行のデータを暗号化します。このキーは、関数レベルの
KMSKeyArnから独立しています。
SourceKMSKeyArn と KMSKeyArn の両方が指定されている場合、Lambda は KMSKeyArn キーを使用して、Lambda が関数の呼び出しに使用する解凍されたバージョンのパッケージを暗号化します。SourceKMSKeyArn が指定されていて KMSKeyArn が指定されていない場合、Lambda は AWS マネージドキーを使用して解凍されたバージョンのパッケージを暗号化します。
注記
セルフマネージド S3 コードストレージを使用する関数とレイヤーの場合、Lambda はソースコードのコピーを保存しません。コードは S3 バケットに残り、ソースコードの保管時の暗号化は S3 バケット設定によって管理されます。Lambda は KMSKeyArn キーを使用して、Lambda が関数の呼び出しに使用する解凍済みバージョンのパッケージを暗号化します。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「Protecting data with server-side encryption」を参照してください。