本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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:Encrypt和kms: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。持久功能的唯一額外安全考量是本指南中記錄的檢查點許可。