Lambda 실행 - AWS Lambda 보안 개요

Lambda 실행

Lambda가 사용자를 대신하여 함수를 실행할 때 코드 실행에 필요한 기본 시스템의 프로비저닝과 구성 모두를 관리합니다. 이를 통해 개발자는 기본 시스템의 관리 작업이 아니라 비즈니스 로직과 코드 작성에 집중할 수 있습니다.

Lambda 서비스는 제어 영역데이터 영역으로 나뉩니다. 각 영역의 용도는 서비스마다 다릅니다. 제어 영역은 관리 API(예:CreateFunction, UpdateFunctionCode, PublishLayerVersion 등)를 제공하고 모든 AWS 서비스와의 통합을 관리합니다. Lambda의 제어 영역에 대한 통신은 TLS에 의해 전송 중에 보호됩니다. Lambda의 제어 영역 내에 저장된 모든 고객 데이터는 AWS KMS를 사용하여 미사용 시 암호화되며, 이는 무단 공개 또는 변조로부터 데이터를 보호하도록 설계되었습니다.

데이터 영역은 Lambda 함수의 호출을 트리거하는 Lambda의 호출 API입니다. Lambda 함수가 호출되면 데이터 영역은 AWS Lambda 작업자(또는 단순히 Amazon EC2 인스턴스의 한 유형인 작업자)의 실행 환경을 해당 함수 버전에 할당하거나 해당 함수 버전에 대해 이미 설정된 기존 실행 환경을 선택한 다음 호출을 완료하는 데 사용합니다. 자세한 내용은 이 문서의 "AWS Lambda MicroVM 및 작업자” 단원을 참조하세요.

Lambda 실행 환경

각 호출은 Lambda의 호출 서비스에 의해 요청을 서비스할 수 있는 작업자의 실행 환경으로 라우팅됩니다. 고객과 다른 사용자는 데이터 영역을 통해서만 실행 환경과의 인바운드/수신 네트워크 통신을 직접 시작할 수 있습니다. 이렇게 하면 실행 환경과의 통신을 인증하고 승인할 수 있습니다.

실행 환경은 특정 함수 버전용으로 예약되어 있으며 함수 버전, 함수 또는 AWS 계정에서 재사용할 수 없습니다. 즉, 두 가지 버전이 있을 수 있는 단일 함수로 최소 두 개의 고유한 실행 환경을 만들 수 있습니다.

각 실행 환경은 한 번에 하나의 동시 호출에만 사용할 수 있으며, 성능상의 이유로 동일한 함수 버전의 여러 호출에서 재사용할 수 있습니다. 여러 요소(예: 호출 속도, 함수 구성 등)에 따라 지정된 함수 버전에 대해 하나 이상의 실행 환경이 존재할 수 있습니다. 이러한 접근 방식을 통해 Lambda는 고객에게 함수 버전 수준의 격리를 제공할 수 있습니다.

Lambda는 현재 함수 버전의 실행 환경 내에서 호출을 격리하지 않습니다. 즉, 한 번의 호출이 다음 호출에 영향을 줄 수 있는 상태(예: /tmp에 기록된 파일 또는 메모리 내 데이터)를 남길 수 있습니다. Lambda는 한 호출이 다른 호출에 영향을 주지 않도록 별도의 함수를 추가로 생성하는 것을 권장합니다. 예를 들어 오류가 발생하기 쉬운 복잡한 구문 분석 작업에 대해 고유한 함수를 만들고 보안에 중요한 작업을 수행하지 않는 함수를 재사용할 수 있습니다. Lambda는 현재 고객이 생성할 수 있는 함수의 수를 제한하지 않습니다. 한도에 대한 자세한 내용은 Lambda 할당량 페이지를 참조하십시오.

실행 환경은 Lambda에 의해 지속적으로 모니터링 및 관리되며, 다음을 포함하되 이에 국한되지 않는 여러 이유로 생성 또는 제거될 수 있습니다.

  • 새 호출이 도착했으며 적절한 실행 환경이 없음

  • 내부 런타임 또는 작업자 소프트웨어 배포가 발생함

  • 프로비저닝된 동시성 구성이 게시됨

  • 실행 환경 또는 작업자의 임대 시간이 최대 수명에 가까워지거나 초과되었습니다.

  • 기타 내부 워크로드 재분배 프로세스

고객은 함수 구성에 프로비저닝된 동시성을 구성하여 함수 버전에 대해 존재하는 사전 프로비저닝된 실행 환경의 수를 관리할 수 있습니다. 이렇게 구성되면 Lambda는 구성된 실행 환경 수가 항상 존재하도록 생성, 관리 및 보장합니다. 이를 통해 고객은 규모에 관계없이 서버리스 애플리케이션의 시작 성능을 보다 효과적으로 제어할 수 있습니다.

프로비저닝된 동시성 구성을 통해서만 고객은 호출에 응답하여 Lambda에서 생성하거나 관리하는 실행 환경의 수를 결정적으로 제어할 수 있습니다.

실행 역할

또한 각 Lambda 함수는 함수와 관련된 제어 영역 및 데이터 영역 작업을 수행할 때 Lambda 서비스에서 위임하는 IAM 역할실행 역할로 구성해야 합니다. Lambda 서비스는 이 역할을 위임하여 함수를 호출하는 동안 환경 변수로 사용할 수 있는 임시 보안 자격 증명을 가져옵니다. 성능상의 이유로 Lambda 서비스는 이러한 자격 증명을 캐시하여 동일한 실행 역할을 사용하는 여러 실행 환경에서 다시 사용할 수 있습니다.

최소 권한 원칙을 준수하기 위해 Lambda는 각 함수에 고유한 역할이 있으며 필요한 최소 권한 집합으로 구성할 것을 권장합니다.

또한 Lambda 서비스는 VPC 기능에 대한 탄력적 네트워크 인터페이스(ENI) 생성 및 구성, Amazon CloudWatch Application Insights에 로그 보내기, AWS X-Ray에 추적 보내기 또는 기타 호출되지 않은 관련 작업과 같은 특정 제어 영역 작업을 수행하는 실행 역할을 위임할 수 있습니다. 고객은 AWS CloudTrail의 감사 로그를 검토하여 이러한 사용 사례를 언제든지 검토하고 감사할 수 있습니다.

이 주제에 대한 자세한 내용은 AWS Lambda 실행 역할 설명서 페이지를 참조하세요.

Lambda MicroVM 및 작업자

Lambda는 AWS Lambda 작업자라는 Amazon EC2 인스턴스 플릿에서 실행 환경을 생성합니다. 작업자는 고객에게 표시되지 않는 별도의 격리된 AWS 계정에서 Lambda에 의해 시작되고 관리되는 베어 메탈 EC2 Nitro 인스턴스입니다. 작업자는 Firecracker에서 만든 하나 이상의 하드웨어 가상화 마이크로 가상 머신(MVM)을 보유하고 있습니다. Firecracker는 Linux의 KVM(커널 기반 가상 머신)을 사용하여 MVM을 만들고 관리하는 오픈 소스 VMM(가상 머신 모니터)입니다. 서버리스 운영 모델을 제공하는 안전한 다중 테넌트 컨테이너 및 함수 기반 서비스를 만들고 관리하기 위해 특별히 구축되었습니다. Firecracker의 보안 모델에 대한 자세한 내용은 Firecracker 프로젝트 웹 사이트를 참조하십시오.

공동 책임 모델의 일부인 Lambda는 작업자의 보안 구성, 제어 및 패치 수준을 유지 관리할 책임이 있습니다. Lambda 팀은 Amazon Inspector를 사용하여 알려진 잠재적 보안 문제는 물론 기타 사용자 지정 보안 문제 알림 메커니즘 및 사전 공개 목록을 검색하므로 고객은 실행 환경의 기본 보안 태세를 관리할 필요가 없습니다.

AWS Lambda 작업자의 격리 모델을 보여 주는 다이어그램입니다.

그림 3 – AWS Lambda 작업자의 격리 모델

작업자의 임대 수명은 최대 14시간입니다. 작업자가 최대 임대 시간에 가까워지면 더 이상 호출이 라우팅되지 않고, MVM이 정상적으로 종료되며, 기본 Worker 인스턴스가 종료됩니다. Lambda는 플릿 수명의 수명 주기 활동을 지속적으로 모니터링하고 경보를 보냅니다.

작업자와의 모든 데이터 영역 통신은 Galois/Counter Mode(AES-GCM)의 고급 암호화 표준을 사용하여 암호화됩니다. Lambda의 서비스 계정에서 Lambda가 관리하는 네트워크 격리 Amazon VPC에 호스팅되므로 고객은 데이터 영역 작업을 통해서만 작업자와 직접 상호 작용할 수 있습니다.

작업자가 새 실행 환경을 만들어야 하는 경우, 고객 함수 아티팩트에 액세스할 수 있는 시간 제한 권한이 부여됩니다. 이 아티팩트는 Lambda의 실행 환경과 작업자를 위해 특별히 최적화되었습니다. ZIP 형식을 사용하여 업로드한 함수 코드는 한 번 최적화된 후 AWS 관리형 키와 AES-GCM을 사용하여 암호화된 형식으로 저장됩니다.

컨테이너 이미지 형식을 사용하여 Lambda에 업로드된 함수도 최적화됩니다. 컨테이너 이미지는 먼저 원본 소스에서 다운로드되어 고유한 청크로 최적화된 다음, AES-CTR, AES-GCM 및SHA-256 MAC의 조합을 사용하는 인증된 수렴 암호화 방법을 사용하여 암호화된 청크로 저장됩니다. 수렴 암호화 방법을 사용하면 Lambda로 암호화된 청크의 중복을 안전하게 제거할 수 있습니다. 고객 데이터의 암호화를 해제하는 데 필요한 모든 키는 고객 관리형 AWS KMS 고객 마스터 키(CMK)를 사용하여 보호됩니다. 고객은 Lambda 서비스의 CMK 사용량을 통해 AWS CloudTrail 로그에서 추적 및 감사를 수행할 수 있습니다.