Amazon Web Services 한국 블로그
새로운 기능 – AWS Lambda를 위한 신뢰 및 무결성 제어를 위한 코드 서명 기능 출시
코드 서명은 코드가 변경되지 않고 그대로 유지되며 신뢰할 수 있는 게시자로부터 제공되었는지를 확인하기 위해 사용되는 업계의 표준 기술입니다. AWS Lambda 함수 내에서 실행되는 코드는 고도로 강화된 시스템에서 실행되며 안전한 방식으로 실행됩니다. 그러나 함수 코드는 AWS 외부에서 실행되는 배포 파이프라인을 통해 이동하기 때문에 손상되기 쉽습니다.
오늘 우리는 AWS Lambda용 코드 서명을 출시합니다. 코드 서명은 관리자가 Lambda 함수에서 신뢰할 수 있는 게시자가 제공한 서명된 코드 패키지만 실행하고 서명 이후에는 코드가 변경되지 않도록 강제할 수 있도록 지원하는 신뢰 및 무결성 제어입니다.
Lambda용 코드 서명은 Lambda에 신뢰할 수 있는 코드만 배포되도록 하는 최상의 메커니즘을 제공합니다. 따라서 조직이 배포 파이프라인에서 게이트키퍼 구성 요소를 빌드해야 하는 부담이 줄어듭니다. AWS Lambda용 코드 서명은 AWS의 완전 관리형 코드 서명 서비스인 AWS Signer를 활용합니다. 관리자는 서명을 만드는 데 사용되는 AWS Signer의 리소스인 서명 프로필을 생성하고, AWS Identity and Access Management(IAM)를 사용하여 개발자에게 서명 프로필에 대한 액세스 권한을 부여합니다. Lambda 내에서 관리자는 CSC(코드 서명 구성)라는 새로운 리소스를 사용하여 허용된 서명 프로필을 지정합니다. 조직은 CSC를 통해 관리자와 개발자 간의 업무 분리를 구현할 수 있습니다. 관리자는 CSC를 사용하여 함수에 대한 코드 서명 정책을 설정할 수 있으며 개발자는 함수에 코드를 배포할 수 있습니다.
서명 프로필 생성 방법
AWS Signer 콘솔을 사용하여 새 서명 프로필을 생성할 수 있습니다. 서명 프로필은 신뢰할 수 있는 게시자 그룹을 나타낼 수 있으며 디지털 서명 인증서 사용과 유사합니다.
서명 프로필 생성(Create Signing Profile)을 클릭하면 서명된 코드 패키지를 만드는 데 사용할 수 있는 서명 프로필을 만들 수 있습니다.
서명 프로필에서 생성된 서명에 1일에서 135개월 사이의 서명 유효 기간을 할당할 수 있습니다.
CSC(코드 서명 구성) 생성 방법
함수에 코드 서명 구성이라는 새 리소스를 생성하고 연결하여 AWS Lambda 콘솔, CLI(명령줄 인터페이스) 또는 API를 통해 코드 서명을 사용하도록 함수를 구성할 수 있습니다. 추가 리소스(Additional resources) 메뉴에서 코드 서명 구성(Code signing configurations)을 찾을 수 있습니다.
구성 생성(Create configuration)을 클릭하여 이 구성의 코드 아티팩트에 서명할 수 있는 서명 프로필을 정의하고 서명 유효성 검사 정책을 설정할 수 있습니다. 허용된 서명 프로필을 추가하려면 AWS 계정의 모든 서명 프로필을 표시하는 드롭다운에서 선택하거나 버전 ARN을 지정하여 다른 계정의 서명 프로필을 추가할 수 있습니다.
또한 서명 유효성 검사 정책을 ‘경고’ 또는 ‘적용’으로 설정할 수 있습니다. ‘경고’로 설정할 경우, Lambda는 서명 확인 실패가 있는 경우에 CloudWatch 메트릭을 기록하지만 배포는 허용합니다. ‘적용’으로 설정할 경우, Lambda는 서명 확인 실패가 있으면 배포를 거부합니다. 서명 프로필이 CSC의 허용된 서명 프로필 중 하나와 일치하지 않거나, 서명이 만료되었거나, 서명이 취소된 경우에 서명 확인이 실패합니다. 서명 이후 코드 패키지가 변조되거나 변경되면 서명 유효성 검사 정책에 관계없이 항상 배포가 거부됩니다.
새 Lambda API CreateCodeSigningConfig
을 사용하여 CSC를 만들 수도 있습니다. 아래에서 JSON 요청 구문을 확인할 수 있습니다.
{
"CodeSigningConfigId": string,
"CodeSigningConfigArn": string,
"Description": string,
"AllowedPublishers": {
"SigningProfileVersionArns": [string]
},
"CodeSigningPolicies": {
"UntrustedArtifactOnDeployment": string, // WARN OR ENFORCE
},
"LastModified”: string
}
Lambda 함수에 대한 코드 서명 활성화하기
Lambda 함수에 대해 코드 서명 기능을 활성화하려면 함수를 선택하고 코드 서명 구성 섹션에서 편집(Edit)을 클릭합니다.
사용 가능한 CSC 중 하나를 선택하고 저장(Save) 버튼을 클릭합니다.
함수가 코드 서명을 사용하도록 구성되고 나면 AWS Signer의 서명 작업으로 만든 서명된 .zip 파일 또는 서명된 .zip 파일의 Amazon S3 URL을 업로드해야 합니다.
서명된 코드 패키지 생성 방법
허용된 서명 프로필 중 하나를 선택하고 서명할 코드 패키지 ZIP 파일의 S3 위치를 지정합니다. 또한 서명된 코드 패키지를 업로드해야 하는 대상 경로를 지정합니다.
서명 작업은 코드 패키지에 대한 서명을 생성하고 서명된 코드 패키지를 지정된 대상 경로에 배치하는 비동기식 프로세스입니다.
서명 작업이 성공하면 할당된 S3 버킷에서 서명된 ZIP 패키지를 확인할 수 있습니다.
Lambda 콘솔로 돌아가면, 이제 서명된 코드 패키지를 Lambda 함수에 게시할 수 있습니다. Lambda는 서명 검사를 수행하여 코드가 서명 이후 변경되지 않았고 허용되는 서명 프로필 중 하나에 의해 서명되었는지 확인합니다.
함수에 CSC를 연결하여 CreateFunction
또는 PutFunctionCodeSigningConfig
API를 사용하여 함수에 대한 코드 서명을 활성화할 수도 있습니다.
또한 개발자는 SAM CLI를 사용하여 코드 패키지에 서명할 수도 있습니다. 개발자는 패키지 또는 배포 단계에서 서명 프로필을 지정하여 이 작업을 수행합니다. SAM CLI는 Lambda에 코드를 배포하기 전에 자동으로 서명 워크플로를 시작합니다.
코드 서명은 인프라에서 AWS CloudFormation 및 Terraform과 같은 코드 도구로도 지원됩니다. Terraform을 사용하면 개발자가 코드 서명 리소스를 선언하고 생성할 뿐만 아니라 코드에 서명할 수도 있습니다.
정식 출시
AWS Lambda에 대한 코드 서명은 AWS 중국 리전, AWS GovCloud(미국) 리전 및 아시아 태평양(오사카) 리전을 제외한 모든 상업 지역에서 사용할 수 있습니다. 코드 서명 사용에 대한 추가 비용은 없으며 고객은 Lambda 함수에 대한 표준 요금을 지불합니다.
AWS Lambda 및 AWS Signer를 위한 코드 서명에 대해 자세히 알아보려면 Lambda 개발자 가이드를 방문하고 AWS Lambda 포럼이나 일반적인 AWS Support 연락처를 통해 피드백을 보내주십시오.
— Channy;