AWS Lambda에 대한 코드 서명 구성 - AWS Lambda

AWS Lambda에 대한 코드 서명 구성

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

참고

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

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

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

함수에 대한 코드 서명을 활성화하려면 코드 서명 구성을 생성하고 함수에 연결합니다. 코드 서명 구성은 허용된 서명 프로필의 목록과 유효성 검사가 실패한 경우 수행할 정책 작업을 정의합니다.

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

IAM을 사용하여 코드 서명 구성을 생성할 수 있는 사용자를 제어합니다. 일반적으로 특정 관리 사용자만 이 기능을 사용하도록 허용합니다. 또한 개발자가 코드 서명이 활성화된 함수만 생성하도록 강제하는 IAM 정책을 설정할 수 있습니다.

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

Lambda 콘솔, AWS Command Line Interface(AWS CLI), AWS CloudFormation, 및 AWS Serverless Application Model(AWS SAM)를 사용하여 함수에 대한 코드 서명을 구성할 수 있습니다.

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

서명 검증

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

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

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

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

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

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

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

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

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

구성 사전 조건

Lambda 함수에 대한 코드 서명을 구성하려면 먼저 AWS Signer를 사용하여 다음을 수행해야 합니다.

  • 하나 이상의 서명 프로필을 생성합니다.

  • 서명 프로필을 사용하여 함수에 대한 서명된 코드 패키지를 생성합니다.

자세한 내용은 AWS Signer 개발자 안내서서명 프로필 생성(콘솔)을 참조하세요.

코드 서명 구성 생성

코드 서명 구성은 허용된 서명 프로필의 목록과 서명 검증 정책을 정의합니다.

코드 서명 구성을 생성하려면(콘솔)
  1. Lambda 콘솔의 코드 서명 구성 페이지를 엽니다.

  2. 구성 생성을 선택합니다.

  3. 설명(Description)에 구성을 설명하는 이름을 입력합니다.

  4. 서명 프로필(Signing profiles)에서 구성에 최대 20개의 서명 프로필을 추가합니다.

    1. 서명 프로필 버전 ARN(Signing profile version ARN)에서 프로필 버전의 Amazon 리소스 이름(ARN)을 선택하거나 ARN을 입력합니다.

    2. 다른 서명 프로필을 추가하려면 서명 프로필 추가(Add signing profiles)를 선택합니다.

  5. 서명 검증 정책(Signature validation policy)에서 경고(Warn) 또는 적용(Enforce)을 선택합니다.

  6. 구성 생성을 선택합니다.

코드 서명 구성 업데이트

코드 서명 구성을 업데이트할 경우 변경 사항은 코드 서명 구성이 연결된 함수의 향후 배포에 영향을 미칩니다.

코드 서명 구성을 업데이트하려면(콘솔)
  1. Lambda 콘솔의 코드 서명 구성 페이지를 엽니다.

  2. 업데이트할 코드 서명 구성을 선택한 다음 편집(Edit)을 선택합니다.

  3. 설명(Description)에 구성을 설명하는 이름을 입력합니다.

  4. 서명 프로필(Signing profiles)에서 구성에 최대 20개의 서명 프로필을 추가합니다.

    1. 서명 프로필 버전 ARN(Signing profile version ARN)에서 프로필 버전의 Amazon 리소스 이름(ARN)을 선택하거나 ARN을 입력합니다.

    2. 다른 서명 프로필을 추가하려면 서명 프로필 추가(Add signing profiles)를 선택합니다.

  5. 서명 검증 정책(Signature validation policy)에서 경고(Warn) 또는 적용(Enforce)을 선택합니다.

  6. Save changes(변경 사항 저장)를 선택합니다.

코드 서명 구성 삭제.

코드 서명 구성을 사용하는 함수가 없는 경우에만 코드 서명 구성을 삭제할 수 있습니다.

코드 서명 구성을 삭제하려면(콘솔)
  1. Lambda 콘솔의 코드 서명 구성 페이지를 엽니다.

  2. 업데이트할 코드 서명 구성을 선택한 다음 삭제(Delete)를 선택합니다.

  3. 확인하려면 삭제(Delete)를 다시 선택합니다.

함수에 대한 코드 서명 활성화

함수에 대한 코드 서명을 활성화하려면 코드 서명 구성을 함수와 연결합니다.

코드 서명 구성을 함수와 연결하려면(콘솔)
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 코드 서명을 활성화하려는 함수를 선택합니다.

  3. 구성 탭을 엽니다.

  4. 아래로 스크롤하여 코드 서명을 선택합니다.

  5. 편집을 선택합니다.

  6. 코드 서명 편집(Edit code signing)에서 이 함수에 대한 코드 서명 구성을 선택합니다.

  7. 저장을 선택합니다.

IAM 정책 구성

사용자에게 코드 서명 API 작업에 액세스할 수 있는 권한을 부여하려면 하나 이상의 정책 설명을 사용자 정책에 연결합니다. 사용자 정책에 대한 자세한 내용은 단원을 참조하세요Lambda에서 ID 기반 IAM 정책 작업

다음 예제 정책 설명은 코드 서명 구성을 생성, 업데이트 및 검색할 수 있는 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CreateCodeSigningConfig", "lambda:UpdateCodeSigningConfig", "lambda:GetCodeSigningConfig" ], "Resource": "*" } ] }

관리자는 CodeSigningConfigArn 조건 키를 사용하여 개발자가 함수를 생성하거나 업데이트하는 데 사용해야 하는 코드 서명 구성을 지정할 수 있습니다.

다음 예제 정책 설명에서는 함수를 생성할 수 있는 권한을 부여합니다. 정책 설명에는 허용되는 코드 서명 구성을 지정할 수 있는 lambda:CodeSigningConfigArn 조건이 포함되어 있습니다. Lambda는 CodeSigningConfigArn 파라미터가 누락되었거나 조건의 값과 일치하지 않는 경우 CreateFunction API 요청을 차단합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowReferencingCodeSigningConfig", "Effect": "Allow", "Action": [ "lambda:CreateFunction", ], "Resource": "*", "Condition": { "StringEquals": { "lambda:CodeSigningConfigArn": “arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0d4518bd353a0a7c6” } } } ] }

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

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

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