

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

# Lambda 耐用函數的安全性和許可
<a name="durable-security"></a>

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

## 執行角色許可
<a name="durable-execution-role"></a>

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

```
{
    "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 執行許可。

## 狀態加密
<a name="durable-state-encryption"></a>

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

檢查點資料包括：
+ 步驟結果和傳回值
+ 執行進度和時間軸
+ 等待狀態資訊

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

### 使用自訂序列化程式和還原序列化程式進行自訂加密
<a name="durable-custom-encryption"></a>

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

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

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

## CloudTrail 日誌記錄
<a name="durable-cloudtrail-logging"></a>

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

檢查點操作會顯示在具有下列事件名稱的 CloudTrail 日誌中：
+ `CheckpointDurableExecution` - 步驟完成並建立檢查點時記錄
+ `GetDurableExecutionState` - 當 Lambda 在重播期間擷取執行狀態時記錄

若要啟用耐用函數的資料事件記錄，請設定 CloudTrail 追蹤來記錄 Lambda 資料事件。如需詳細資訊，請參閱《CloudTrail 使用者指南》中的[記錄資料事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html)。

**範例：檢查點操作的 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"
}
```

## 跨帳戶考量事項
<a name="durable-cross-account-access"></a>

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

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

## 繼承的 Lambda 安全功能
<a name="durable-inherited-security"></a>

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

如需 Lambda 安全性功能的詳細資訊，請參閱《Lambda 開發人員指南》中的 [中的安全性 AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-security.html)。持久功能的唯一額外安全考量是本指南中記錄的檢查點許可。