

# 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` 요소의 범위를 특정 함수 ARN으로 지정합니다. 이렇게 하면 실행 역할이 필요한 함수에 대해서만 체크포인트 작업으로 제한됩니다.

**예제: 여러 함수에 대한 권한 범위**

```
{
    "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:*"
            ]
        }
    ]
}
```

또는 Amazon CloudWatch Logs에 대한 기본 Lambda 실행 권한과 함께 필요한 지속성 실행 권한이 포함된 AWS 관리형 정책 `AWSLambdaBasicDurableExecutionRolePolicy`를 사용할 수 있습니다.

## 상태 암호화
<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가 재생 중에 실행 상태를 검색할 때 로깅됩니다.

지속성 함수에 대한 데이터 이벤트 로깅을 활성화하려면 Lambda 데이터 이벤트를 로깅하도록 CloudTrail 추적을 구성합니다. 자세한 내용은 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>

지속성 함수는 VPC 연결, 환경 변수 암호화, Dead Letter Queue(DLQ), 예약된 동시성, 함수 URL, 코드 서명 및 규정 준수 인증(SOC, PCI DSS, HIPAA 등)을 포함하여 Lambda의 모든 보안, 거버넌스 및 규정 준수 기능을 상속합니다.

Lambda 보안 기능에 대한 자세한 내용은 Lambda 개발자 안내서의 [AWS Lambda의 보안](https://docs.aws.amazon.com/lambda/latest/dg/lambda-security.html)을 참조하세요. 지속성 함수에 대한 유일한 추가 보안 고려 사항은 이 안내서에서 설명하는 체크포인트 권한입니다.