View a markdown version of this page

AWS Lambda의 저장된 데이터 암호화 - AWS Lambda

AWS Lambda의 저장된 데이터 암호화

AWS Lambda는 항상 다음 리소스에 대한 저장 시 암호화를 제공합니다.

  • 환경 변수

  • 배포 패키지와 계층 아카이브를 포함하여 Lambda에 업로드하는 파일

  • 이벤트 소스 매핑 필터 기준 객체

  • 지속적인 실행 데이터

참고

자체 관리형 S3 코드 스토리지를 사용하는 함수 및 계층의 경우 Lambda는 소스 코드의 사본을 저장하지 않습니다. 코드는 S3 버킷에 남아 있으며 소스 코드에 대한 저장 시 암호화는 S3 버킷 구성으로 관리됩니다. Lambda는 KMSKeyArn을 사용하여 Lambda에서 함수를 간접적으로 호출하는 데 사용하는 패키지의 압축 해제된 버전을 암호화합니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서서버 측 암호화를 사용하여 데이터 보호를 참조하세요.

필요에 따라 고객 관리형 키를 사용하여 환경 변수, .zip 배포 패키지, 필터 기준 객체지속적인 실행 데이터를 암호화하도록 Lambda를 구성할 수 있습니다.

Amazon CloudWatch Logs 및 AWS X-Ray의 경우에도 데이터를 기본적으로 암호화하며, 고객 관리형 키를 사용하도록 구성할 수도 있습니다. 자세한 내용은 CloudWatch Logs의 로그 데이터 암호화AWS X-Ray의 데이터 보호를 참조하세요.

Lambda에 대한 암호화 키 모니터링

Lambda에서 AWS KMS 고객 관리형 키를 사용할 때 AWS CloudTrail을 사용할 수 있습니다. 다음 예제는 Lambda가 고객 관리형 키로 암호화된 데이터에 액세스하기 위해 수행하는 Decrypt, DescribeKeyGenerateDataKey 호출에 대한 CloudTrail 이벤트입니다.

지속적인 실행 데이터와 관련된 CloudTrail 예제는 내구성 함수를 위한 KMS 키 모니터링 섹션을 참조하세요.

Decrypt

AWS KMS 고객 관리형 키를 사용하여 필터 기준 객체를 암호화한 경우 일반 텍스트로 해당 객체에 액세스하려고 할 때(예: ListEventSourceMappings 직접 호출) Lambda가 사용자를 대신하여 Decrypt 요청을 전송합니다. 다음 예제 이벤트는 Decrypt 작업을 기록합니다.

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "AROA123456789EXAMPLE:example", "arn": "arn:aws:sts::123456789012:assumed-role/role-name/example", "accountId": "123456789012", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROA123456789EXAMPLE", "arn": "arn:aws:iam::123456789012:role/role-name", "accountId": "123456789012", "userName": "role-name" }, "attributes": { "creationDate": "2024-05-30T00:45:23Z", "mfaAuthenticated": "false" } }, "invokedBy": "lambda.amazonaws.com" }, "eventTime": "2024-05-30T01:05:46Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "eu-west-1", "sourceIPAddress": "lambda.amazonaws.com", "userAgent": "lambda.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:eu-west-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "encryptionContext": { "aws-crypto-public-key": "ABCD+7876787678+CDEFGHIJKL/888666888999888555444111555222888333111==", "aws:lambda:EventSourceArn": "arn:aws:sqs:eu-west-1:123456789012:sample-source", "aws:lambda:FunctionArn": "arn:aws:lambda:eu-west-1:123456789012:function:sample-function" }, "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management", "sessionCredentialFromConsole": "true" }
DescribeKey

AWS KMS 고객 관리형 키를 사용하여 필터 기준 객체를 암호화한 경우 해당 객체에 액세스하려고 할 때(예: DescribeKey 직접 호출) Lambda가 사용자를 대신하여 GetEventSourceMapping 요청을 전송합니다. 다음 예제 이벤트는 DescribeKey 작업을 기록합니다.

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "AROA123456789EXAMPLE:example", "arn": "arn:aws:sts::123456789012:assumed-role/role-name/example", "accountId": "123456789012", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROA123456789EXAMPLE", "arn": "arn:aws:iam::123456789012:role/role-name", "accountId": "123456789012", "userName": "role-name" }, "attributes": { "creationDate": "2024-05-30T00:45:23Z", "mfaAuthenticated": "false" } } }, "eventTime": "2024-05-30T01:09:40Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "eu-west-1", "sourceIPAddress": "54.240.197.238", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36", "requestParameters": { "keyId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "responseElements": null, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management", "tlsDetails": { "tlsVersion": "TLSv1.3", "cipherSuite": "TLS_AES_256_GCM_SHA384", "clientProvidedHostHeader": "kms.eu-west-1.amazonaws.com" }, "sessionCredentialFromConsole": "true" }
GenerateDataKey

CreateEventSourceMapping 또는 UpdateEventSourceMapping 호출에서 AWS KMS 고객 관리 키를 사용하여 필터 기준 객체를 암호화하는 경우 Lambda는 사용자를 대신하여 GenerateDataKey 요청을 전송하여 필터 기준을 암호화하는 데이터 키를 생성합니다(봉투 암호화). 다음 예제 이벤트는 GenerateDataKey 작업을 기록합니다.

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "AROA123456789EXAMPLE:example", "arn": "arn:aws:sts::123456789012:assumed-role/role-name/example", "accountId": "123456789012", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROA123456789EXAMPLE", "arn": "arn:aws:iam::123456789012:role/role-name", "accountId": "123456789012", "userName": "role-name" }, "attributes": { "creationDate": "2024-05-30T00:06:07Z", "mfaAuthenticated": "false" } }, "invokedBy": "lambda.amazonaws.com" }, "eventTime": "2024-05-30T01:04:18Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "eu-west-1", "sourceIPAddress": "lambda.amazonaws.com", "userAgent": "lambda.amazonaws.com", "requestParameters": { "numberOfBytes": 32, "keyId": "arn:aws:kms:eu-west-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "encryptionContext": { "aws-crypto-public-key": "ABCD+7876787678+CDEFGHIJKL/888666888999888555444111555222888333111==", "aws:lambda:EventSourceArn": "arn:aws:sqs:eu-west-1:123456789012:sample-source", "aws:lambda:FunctionArn": "arn:aws:lambda:eu-west-1:123456789012:function:sample-function" }, }, "responseElements": null, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management" }