AWS SAM 애플리케이션의 코드 서명 설정 - AWS Serverless Application Model

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS SAM 애플리케이션의 코드 서명 설정

신뢰할 수 있는 코드만 배포되도록 하려면 서버리스 애플리케이션에서 코드 서명을 AWS SAM 활성화하는 데 사용할 수 있습니다. 코드에 서명하면 서명 이후 코드가 변경되지 않고 신뢰할 수 있는 게시자의 서명된 코드 패키지만 Lambda 함수에서 실행되도록 할 수 있습니다. 이를 통해 조직은 배포 파이프라인에서 게이트키퍼 구성 요소를 구축해야 하는 부담에서 벗어날 수 있습니다.

코드 서명에 대한 자세한 내용은 개발자 안내서의 Lambda 함수에 대한 코드 서명 구성을 참조하십시오.AWS Lambda

서버리스 애플리케이션을 위한 코드 서명을 구성하려면 먼저 Signer를 사용하여 서명 프로필을 생성해야 합니다. AWS 이 서명 프로필을 사용하여 다음 작업을 수행할 수 있습니다.

  1. 코드 서명 구성 생성 - AWS::Lambda::CodeSigningConfig리소스를 선언하여 신뢰할 수 있는 게시자의 서명 프로필을 지정하고 유효성 검사를 위한 정책 조치를 설정합니다. 이 객체를 서버리스 함수와 동일한 AWS SAM 템플릿, 다른 템플릿 또는 AWS SAM 템플릿에서 선언할 수 있습니다. AWS CloudFormation 그런 다음 AWS::Lambda::CodeSigningConfig리소스의 Amazon 리소스 이름(ARN) 으로 함수 CodeSigningConfigArn속성을 지정하여 서버리스 함수의 코드 서명을 활성화합니다.

  2. 귀하의 코드 서명sam package또는 sam deploy명령을 --signing-profiles옵션과 함께 사용합니다.

참고

sam package 또는 sam deploy 명령으로 코드에 성공적으로 서명하려면 이러한 명령과 함께 사용하는 Amazon S3 버킷의 버전 관리를 활성화해야 합니다. 자동으로 AWS SAM 생성하는 Amazon S3 버킷을 사용하는 경우 버전 관리가 자동으로 활성화됩니다. Amazon S3 버킷 버전 관리에 대한 자세한 내용과 귀하가 제공하는 Amazon S3 버킷의 버전 관리를 활성화하기 위한 지침은 Amazon Simple Storage Service 사용자 가이드Amazon S3 버킷의 버전 관리 사용을 잠조하세요.

서버리스 애플리케이션을 배포하면 Lambda는 귀하가 코드 서명을 활성화한 모든 함수에 대해 검증 검사를 수행합니다. 또한 Lambda는 해당 함수가 의존하는 모든 레이어에 대해 검증 검사를 수행합니다. Lambda의 검증 검사에 대한 자세한 내용은 AWS Lambda 개발자 안내서서명 검증을 잠조하세요.

서명 프로필 생성

서명 프로필을 생성하려면 다음 명령을 실행합니다.

aws signer put-signing-profile --platform-id "AWSLambda-SHA384-ECDSA" --profile-name MySigningProfile

이전 명령이 성공적인 경우, 서명 프로필의 ARN이 반환된 것을 볼 수 있습니다. 예:

{ "arn": "arn:aws:signer:us-east-1:111122223333:/signing-profiles/MySigningProfile", "profileVersion": "SAMPLEverx", "profileVersionArn": "arn:aws:signer:us-east-1:111122223333:/signing-profiles/MySigningProfile/SAMPLEverx" }

profileVersionArn 필드에는 코드 서명 구성을 생성할 때 사용할 ARN이 포함됩니다.

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

다음 예제 AWS SAM 템플릿은 AWS::Lambda::CodeSigningConfig리소스를 선언하고 Lambda 함수에 대한 코드 서명을 활성화합니다. 이 예제에는 신뢰할 수 있는 프로필이 하나 있으며 서명 검사에 실패하면 배포가 거부됩니다.

Resources: HelloWorld: Type: AWS::Serverless::Function Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.7 CodeSigningConfigArn: !Ref MySignedFunctionCodeSigningConfig MySignedFunctionCodeSigningConfig: Type: AWS::Lambda::CodeSigningConfig Properties: Description: "Code Signing for MySignedLambdaFunction" AllowedPublishers: SigningProfileVersionArns: - MySigningProfile-profileVersionArn CodeSigningPolicies: UntrustedArtifactOnDeployment: "Enforce"

코드 서명

애플리케이션을 패키징하거나 배포할 때 코드에 서명할 수 있습니다. 다음 예제 명령과 같이 sam package 또는 sam deploy 명령을 사용하여 --signing-profiles 옵션을 지정합니다.

귀하의 애플리케이션을 패키징할 때 함수 코드에 서명:

sam package --signing-profiles HelloWorld=MySigningProfile --s3-bucket test-bucket --output-template-file packaged.yaml

귀하의 애플리케이션을 패키징할 때 함수 코드와 함수가 의존하는 레이어에 모두 서명:

sam package --signing-profiles HelloWorld=MySigningProfile MyLayer=MySigningProfile --s3-bucket test-bucket --output-template-file packaged.yaml

함수 코드와 계층에 서명한 후 배포 수행:

sam deploy --signing-profiles HelloWorld=MySigningProfile MyLayer=MySigningProfile --s3-bucket test-bucket --template-file packaged.yaml --stack-name --region us-east-1 --capabilities CAPABILITY_IAM
참고

sam package 또는 sam deploy 명령으로 코드에 성공적으로 서명하려면 이러한 명령과 함께 사용하는 Amazon S3 버킷의 버전 관리를 활성화해야 합니다. 자동으로 AWS SAM 생성하는 Amazon S3 버킷을 사용하는 경우 버전 관리가 자동으로 활성화됩니다. Amazon S3 버킷 버전 관리에 대한 자세한 내용과 귀하가 제공하는 Amazon S3 버킷의 버전 관리를 활성화하기 위한 지침은 Amazon Simple Storage Service 사용자 가이드Amazon S3 버킷의 버전 관리 사용을 잠조하세요.

sam deploy --guided로 서명 프로필 제공:

코드 서명으로 구성된 서버리스 애플리케이션에서 sam deploy --guided 명령을 실행하면 코드 서명에 사용할 서명 프로필을 AWS SAM 제공하라는 메시지가 표시됩니다. sam deploy --guided 프롬프트에 대한 자세한 정보는 AWS SAMCLI 명령 참조의을 잠조하세요sam deploy