코드 서명을 사용하여 Lambda로 코드 무결성 확인 - AWS Lambda

코드 서명을 사용하여 Lambda로 코드 무결성 확인

AWS Lambda에 대한 코드 서명은 신뢰할 수 있는 코드만 Lambda 함수에서 실행되도록 하는 데 도움이 됩니다. 함수에 코드 서명을 활성화하면 Lambda는 모든 코드 배포를 검사하고 코드 패키지가 신뢰할 수 있는 소스에 의해 서명되었는지 확인합니다.

참고

컨테이너 이미지로 정의된 함수는 코드 서명을 지원하지 않습니다.

코드 무결성을 확인하려면 AWS Signer를 사용하여 함수 및 계층에 대해 디지털 방식으로 서명된 코드 패키지를 생성합니다. 사용자가 코드 패키지를 배포하려고 경우 Lambda는 배포를 수락하기 전에 코드 패키지에 대한 유효성 검사를 수행합니다. 코드 서명 유효성 검사는 배포 시 실행되므로 함수 실행 시의 성능에는 영향을 주지 않습니다.

AWS Signer를 사용하여 서명 프로필을 생성할 수도 있습니다. 서명 프로필을 사용하여 서명된 코드 패키지를 생성합니다. AWS Identity and Access Management(IAM)를 사용하여 코드 패키지에 서명할 수 있고 서명 프로필을 생성할 수 있는 사용자를 제어합니다. 자세한 내용은 AWS Signer 개발자 안내서인증 및 액세스 제어를 참조하세요.

Lambda 계층은 함수 코드 패키지와 동일한 서명된 코드 패키지 형식을 따릅니다. 코드 서명이 활성화된 함수에 계층을 추가하면 Lambda는 해당 계층이 허용된 서명 프로필에 의해 서명되었는지 확인합니다. 함수에 대해 코드 서명을 활성화하면 함수에 추가된 모든 계층도 허용된 서명 프로필 중 하나에 의해 서명되어야 합니다.

변경 사항을 AWS CloudTrail에 기록하도록 코드 서명을 구성할 수 있습니다. 함수에 대한 성공적인 배포와 차단된 배포는 서명 및 유효성 검사 관련 정보와 함께 CloudTrail에 기록됩니다.

AWS Signer 사용 또는 AWS Lambda에 대한 코드 서명에 따르는 추가 요금은 없습니다.

서명 검증

Lambda는 서명된 코드 패키지를 함수에 배포할 때 다음과 같은 검증을 수행합니다.

  1. 무결성 - 코드 패키지가 서명된 이후 수정되지 않았는지 검증합니다. Lambda는 패키지의 해시를 서명의 해시와 비교합니다.

  2. 만료 - 코드 패키지의 서명이 만료되지 않았는지 검증합니다.

  3. 불일치 - 코드 패키지가 Lambda 함수에 대해 허용되는 서명 프로필 중 하나를 사용하여 서명되었는지 검증합니다. 서명이 없는 경우에도 불일치가 발생합니다.

  4. 해지 - 코드 패키지의 서명이 해지되지 않았는지 검증합니다.

코드 서명 구성에 정의된 서명 검증 정책은 검증 확인 중 하나라도 실패하는 경우 다음 작업 중 Lambda가 수행할 작업을 결정합니다.

  • 경고 - Lambda는 코드 패키지의 배포를 허용하지만 경고를 발생시킵니다. Lambda는 새로운 Amazon CloudWatch 지표를 발생시키고 경고를 CloudTrail 로그에 저장합니다.

  • 적용 - Lambda는 경고를 발생시키고(경고 동작과 동일) 코드 패키지의 배포를 차단합니다.

만료, 불일치 및 해지 검증에 대한 정책을 구성할 수 있습니다. 무결성 검사에 대한 정책은 구성할 수 없습니다. 무결성 검사가 실패하면 Lambda는 배포를 차단합니다.

Lambda API를 사용하여 코드 서명 구성

AWS CLI 또는 AWS SDK를 사용하여 코드 서명 구성을 관리하려면 다음 API 작업을 사용합니다.

함수에 대한 코드 서명 구성을 관리하려면 다음 API 작업을 사용합니다.