Lambda 耐用函數的安全性和許可 - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Lambda 耐用函數的安全性和許可

Lambda 耐用函數需要特定的 IAM 許可才能管理檢查點操作。僅授予函數所需的許可,以遵循最低權限原則。

執行角色許可

您耐用函數的執行角色需要建立檢查點和擷取執行狀態的許可。下列政策顯示最低必要許可:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CheckpointDurableExecution", "lambda:GetDurableExecutionState" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name:*" } ] }

當您使用主控台建立耐用的函數時,Lambda 會自動將這些許可新增至執行角色。如果您使用 AWS CLI 或 建立函數 AWS CloudFormation,請將這些許可新增至執行角色。

最低權限原則

Resource元素範圍限定為特定函數 ARNs,而不是使用萬用字元。這只會將執行角色限制為需要它們的函數的檢查點操作。

範例:多個函數的範圍許可

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CheckpointDurableExecution", "lambda:GetDurableExecutionState" ], "Resource": [ "arn:aws:lambda:us-east-1:123456789012:function:orderProcessor:*", "arn:aws:lambda:us-east-1:123456789012:function:paymentHandler:*" ] } ] }

或者,您可以使用 AWS 受管政策AWSLambdaBasicDurableExecutionRolePolicy,其中包含必要的持久執行許可,以及 Amazon CloudWatch Logs 的基本 Lambda 執行許可。

狀態加密

Lambda 耐用函數使用 AWS 擁有的金鑰自動啟用靜態加密,無需付費。每個函數執行都會維持其他執行無法存取的隔離狀態。不支援客戶受管金鑰 (CMK)。

檢查點資料包括:

  • 步驟結果和傳回值

  • 執行進度和時間軸

  • 等待狀態資訊

當 Lambda 讀取或寫入檢查點資料時,所有資料都會使用 TLS 在傳輸中加密。

使用自訂序列化程式和還原序列化程式進行自訂加密

對於關鍵安全需求,您可以使用自訂序列化程式和使用耐用 SDK 的還原序列化程式 (SerDer) 來實作自己的加密和解密機制。此方法可讓您完全控制用來保護檢查點資料的加密金鑰和演算法。

重要

當您使用自訂加密時,您會失去 Lambda 主控台和 API 回應中操作結果的可見性。檢查點資料會在執行歷史記錄中顯示加密,且無法在未解密的情況下進行檢查。

函數的執行角色對自訂 SerDer 實作中使用的 AWS KMS 金鑰的需求kms:Encryptkms:Decrypt許可。

CloudTrail 日誌記錄

Lambda 會將檢查點操作記錄為其中的資料事件 AWS CloudTrail。您可以使用 CloudTrail 來稽核檢查點的建立時間、追蹤執行狀態變更,以及監控對持久執行資料的存取。

檢查點操作會顯示在具有下列事件名稱的 CloudTrail 日誌中:

  • CheckpointDurableExecution - 步驟完成並建立檢查點時記錄

  • GetDurableExecutionState - 當 Lambda 在重播期間擷取執行狀態時記錄

若要啟用耐用函數的資料事件記錄,請設定 CloudTrail 追蹤來記錄 Lambda 資料事件。如需詳細資訊,請參閱《CloudTrail 使用者指南》中的記錄資料事件

範例:檢查點操作的 CloudTrail 日誌項目

{ "eventVersion": "1.08", "eventTime": "2024-11-16T10:30:45Z", "eventName": "CheckpointDurableExecution", "eventSource": "lambda.amazonaws.com", "requestParameters": { "functionName": "myDurableFunction", "executionId": "exec-abc123", "stepId": "step-1" }, "responseElements": null, "eventType": "AwsApiCall" }

跨帳戶考量事項

如果您跨 AWS 帳戶叫用耐久的函數,呼叫帳戶需要 lambda:InvokeFunction 許可,但檢查點操作一律使用函數帳戶中的執行角色。呼叫帳戶無法直接存取檢查點資料或執行狀態。

此隔離可確保檢查點資料在函數的帳戶內保持安全,即使從外部帳戶調用也一樣。

繼承的 Lambda 安全功能

耐用的函數繼承 Lambda 的所有安全、控管和合規功能,包括 VPC 連線、環境變數加密、無效字母佇列、預留並行、函數 URLs、程式碼簽署和合規認證 (SOC、PCI DSS、HIPAA 等)。

如需 Lambda 安全性功能的詳細資訊,請參閱《Lambda 開發人員指南》中的 中的安全性 AWS Lambda。持久功能的唯一額外安全考量是本指南中記錄的檢查點許可。