기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS SAM 애플리케이션에 대한 코드 서명 설정
신뢰할 수 있는 코드만 배포되도록 하려면 AWS SAM 를 사용하여 서버리스 애플리케이션으로 코드 서명을 활성화할 수 있습니다. 코드에 서명하면 서명 이후 코드가 변경되지 않았는지 확인할 수 있으며 신뢰할 수 있는 게시자의 서명된 코드 패키지만 Lambda 함수에서 실행되도록 할 수 있습니다. 이렇게 하면 조직이 배포 파이프라인에서 게이트키퍼 구성 요소를 구축해야 하는 부담을 덜 수 있습니다.
코드 서명에 대한 자세한 내용은AWS Lambda 개발자 안내서의 Lambda 함수에 대한 코드 서명 구성을 참조하세요.
서버리스 애플리케이션에 대한 코드 서명을 구성하려면 먼저 AWS Signer를 사용하여 서명 프로파일을 생성해야 합니다. 이 서명 프로필을 사용하여 다음 작업을 수행할 수 있습니다.
-
코드 서명 구성 생성 -
AWS::Lambda::CodeSigningConfig
리소스를 선언하여 신뢰할 수 있는 게시자의 서명 프로필을 지정하고 유효성 검사를 위한 정책 조치를 설정합니다. 서버리스 함수와 동일한 AWS SAM 템플릿, 다른 AWS SAM 템플릿 또는 AWS CloudFormation 템플릿에서 이 객체를 선언할 수 있습니다. 그런 다음AWS::Lambda::CodeSigningConfig
리소스의 Amazon 리소스 이름(ARN)을 사용하여 함수의CodeSigningConfigArn
속성을 지정하여 서버리스 함수에 대한 코드 서명을 활성화합니다. -
귀하의 코드 서명 –
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-bucketamzn-s3-demo-bucket
--output-template-file packaged.yaml
귀하의 애플리케이션을 패키징할 때 함수 코드와 함수가 의존하는 레이어에 모두 서명:
sam package --signing-profiles
HelloWorld=MySigningProfile MyLayer=MySigningProfile
--s3-bucketamzn-s3-demo-bucket
--output-template-file packaged.yaml
함수 코드와 계층에 서명한 후 배포 수행:
sam deploy --signing-profiles
HelloWorld=MySigningProfile MyLayer=MySigningProfile
--s3-bucketamzn-s3-demo-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
프롬프트에 대한 자세한 내용은 sam deploy 의 섹션을 참조하세요. AWS SAM CLI 명령 참조.