本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
加密 Lambda .zip 部署套件
Lambda 一般使用 AWS KMS key為 .zip 部署套件和函數組態詳細資訊提供靜態伺服器端加密。預設情況下,Lambda 使用 AWS 擁有的金鑰。如果此預設行為符合您的工作流程,您不需要設定任何其他項目。 AWS 不會向您收取使用此金鑰的費用。
如果您願意,您可以改為提供 AWS KMS 客戶受管金鑰。您可以這樣做以控制 KMS 金鑰的輪換或滿足您的組織對管理 KMS 金鑰的請求。當您使用客戶受管的金鑰時,只有您帳戶中具有 KMS 金鑰存取權的使用者才能檢視或管理函數的程式碼或組態。
客戶受管金鑰會產生標準 AWS KMS 費用。如需詳細資訊,請參閱 AWS Key Management Service 定價。
建立客戶受管金鑰
您可以使用 AWS Management Console或 AWS KMS APIs 來建立對稱客戶受管金鑰。
建立對稱客戶受管金鑰
請依照《AWS Key Management Service 開發人員指南》中的建立對稱加密,建立對稱 KMS 金鑰步驟執行。
許可
金鑰政策
金鑰政策會控制客戶受管金鑰的存取權限。每個客戶受管金鑰都必須只有一個金鑰政策,其中包含決定誰可以使用金鑰及其使用方式的陳述式。如需詳細資訊,請參閱《AWS Key Management Service
開發人員指南》中的如何變更金鑰政策。
使用客戶受管金鑰來加密 .zip 部署套件時,Lambda 不會為金鑰新增授權。相反地,您的 AWS KMS 金鑰政策必須允許 Lambda 代表您呼叫下列 AWS KMS API 操作:
下列範例金鑰政策允許帳戶 111122223333 中的所有 Lambda 函數呼叫指定客戶受管金鑰的必要 AWS KMS 操作:
範例 AWS KMS 金鑰政策
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id
",
"Condition": {
"StringLike": {
"kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:*
"
}
}
}
]
}
如需有關故障診斷金鑰存取的詳細資訊,請參閱《AWS Key Management Service 開發人員指南》。
主體許可
當您使用客戶受管金鑰來加密 .zip 部署套件時,只有可存取該金鑰的主體才能存取 .zip 部署套件。例如,無法存取客戶受管金鑰的主體無法使用包含在 GetFunction 回應中的預先簽章 S3 URL 下載 .zip 套件。回應的 Code
區段中會傳回 AccessDeniedException
。
範例 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
和 KMSKeyArn
時,Lambda 會使用 KMSKeyArn
金鑰來加密 Lambda 用來調用函數的解壓縮套件版本。當已指定 SourceKMSKeyArn
但未指定 KMSKeyArn
時,Lambda 會使用 AWS 受管金鑰 來加密套件的解壓縮版本。
- Lambda console
-
若要在建立函數時新增客戶受管金鑰加密
開啟 Lambda 主控台中的 函數頁面。
-
選擇建立函數。
-
選擇 Author from scratch (從頭開始撰寫) 或 Container image (容器映像)。
-
在 基本資訊 下,請執行下列動作:
-
針對 函數名稱,輸入函數名稱。
-
對於執行時間,選擇函數要使用的語言版本。
-
展開進階設定,然後選取使用 AWS KMS 客戶受管金鑰啟用加密。
-
選擇客戶受管金鑰。
-
選擇 Create function (建立函數)。
若要移除客戶受管金鑰加密,或使用不同的金鑰,必須再次上傳 .zip 部署套件。
若要將客戶受管金鑰加密新增至現有函數
開啟 Lambda 主控台中的 函數頁面。
-
選擇函數的名稱。
-
在程式碼來源窗格中選擇上傳來源。
-
選擇 .zip 檔案或 Amazon S3 位置。
-
上傳檔案或輸入 Amazon S3 位置。
-
選擇使用 AWS KMS 客戶受管金鑰啟用加密。
-
選擇客戶受管金鑰。
-
選擇 Save (儲存)。
- AWS CLI
-
若要在建立函數時新增客戶受管金鑰加密
在下列 create-function 範例中:
-
--zip-file
:指定 .zip 部署套件的本機路徑。
-
--source-kms-key-arn
:指定客戶受管金鑰,以加密部署套件的壓縮版本。
-
--kms-key-arn
:指定客戶受管金鑰,以加密環境變數和部署套件的解壓縮版本。
aws lambda create-function \
--function-name myFunction \
--runtime nodejs22.x \
--handler index.handler \
--role arn:aws:iam::111122223333:role/service-role/my-lambda-role \
--zip-file
fileb://myFunction.zip
\
--source-kms-key-arn
arn:aws:kms:us-east-1:111122223333:key/key-id
\
--kms-key-arn
arn:aws:kms:us-east-1:111122223333:key/key2-id
在下列 create-function 範例中:
-
--code
:指定 Amazon S3 儲存貯體中 .zip 檔案的位置。您只需針對版本控制的物件使用 S3ObjectVersion
參數。
-
--source-kms-key-arn
:指定客戶受管金鑰,以加密部署套件的壓縮版本。
-
--kms-key-arn
:指定客戶受管金鑰,以加密環境變數和部署套件的解壓縮版本。
aws lambda create-function \
--function-name myFunction \
--runtime nodejs22.x --handler index.handler \
--role arn:aws:iam::111122223333:role/service-role/my-lambda-role \
--code
S3Bucket=amzn-s3-demo-bucket
,S3Key=myFileName.zip
,S3ObjectVersion=myObjectVersion
\
--source-kms-key-arn
arn:aws:kms:us-east-1:111122223333:key/key-id
\
--kms-key-arn
arn:aws:kms:us-east-1:111122223333:key/key2-id
若要將客戶受管金鑰加密新增至現有函數
在下列 update-function-code 範例中:
aws lambda update-function-code \
--function-name myFunction \
--zip-file
fileb://myFunction.zip
\
--source-kms-key-arn
arn:aws:kms:us-east-1:111122223333:key/key-id
在下列 update-function-code 範例中:
-
--s3-bucket
:指定 Amazon S3 儲存貯體中 .zip 檔案的位置。
-
--s3-key
:指定部署套件的 Amazon S3 金鑰。
-
--s3-object-version
:對於版本控制的物件,要使用的部署套件物件版本。
-
--source-kms-key-arn
:指定客戶受管金鑰,以加密部署套件的壓縮版本。Lambda 使用 AWS 擁有的金鑰來加密用於函數調用的解壓縮套件。如果您想要使用客戶受管金鑰來加密套件的解壓縮版本,請使用 --kms-key-arn
選項執行 update-function-configuration 命令。
aws lambda update-function-code \
--function-name myFunction \
--s3-bucket
amzn-s3-demo-bucket
\
--s3-key
myFileName.zip
\
--s3-object-version
myObject Version
--source-kms-key-arn
arn:aws:kms:us-east-1:111122223333:key/key-id
若要從現有函數中移除客戶受管金鑰加密
在下列 update-function-code 範例中,--zip-file
指定 .zip 部署套件的本機路徑。當您在沒有 --source-kms-key-arn
選項的情況下執行此命令時,Lambda 會使用 AWS 擁有的金鑰來加密部署套件的壓縮版本。
aws lambda update-function-code \
--function-name myFunction \
--zip-file
fileb://myFunction.zip