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, DescribeKey 및 GenerateDataKey 호출에 대한 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" }