As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configure a assinatura de código para seu AWS SAM aplicativo
Para garantir que somente código confiável seja implantado, você pode usar AWS SAM para habilitar a assinatura de código com seus aplicativos sem servidor. Assinar o código ajuda a garantir que o código não tenha sido alterado desde a assinatura e que somente pacotes de código assinados de publicadores confiáveis sejam executados nas funções do Lambda. Isso ajuda a liberar as organizações da carga de criar componentes do gatekeeper em seus pipelines de implantação.
Para obter mais informações sobre assinatura de código, consulte Configurar assinatura de código das funções do Lambda no Guia do desenvolvedor do AWS Lambda .
Antes de configurar a assinatura de código para seu aplicativo sem servidor, você deve criar um perfil de assinatura usando o AWS Signer. Você usa esse perfil de assinatura para as seguintes tarefas:
-
Criação de uma configuração de assinatura de código — Declare um
AWS::Lambda::CodeSigningConfig
recurso para especificar os perfis de assinatura de editores confiáveis e definir a ação política para verificações de validação. Você pode declarar esse objeto no mesmo AWS SAM modelo da sua função sem servidor, em um AWS SAM modelo diferente ou em um modelo. AWS CloudFormation Em seguida, você habilita a assinatura de código para uma função sem servidor especificando aCodeSigningConfigArn
propriedade da função com o Amazon Resource Name (ARN) de umAWS::Lambda::CodeSigningConfig
recurso. -
Assinando seu código — Use o comando
sam package
ousam deploy
com a opção--signing-profiles
.
nota
Para assinar com sucesso seu código com os comandos sam package
ou sam
deploy
, o versionamento deve estar habilitado para o bucket do Amazon S3 que você usa com esses comandos. Se você estiver usando o Amazon S3 Bucket AWS SAM criado para você, o controle de versão será ativado automaticamente. Para obter mais informações sobre o versionamento de buckets do Amazon S3 e instruções para habilitar o versionamento em um bucket do Amazon S3 fornecido por você, consulte Uso do versionamento em buckets do Amazon S3 no Guia do usuário do Amazon Simple Storage Service.
Quando você implanta um aplicativo sem servidor, o Lambda executa verificações de validação em todas as funções para as quais você habilitou a assinatura de código. O Lambda também realiza verificações de validação em todas as camadas das quais essas funções dependem. Para obter mais informações sobre as verificações de validação do Lambda, consulte Validação de assinatura no Guia do AWS Lambda desenvolvedor.
Exemplo
Criar um perfil de assinatura
Para criar um perfil de assinatura, execute o seguinte comando:
aws signer put-signing-profile --platform-id "AWSLambda-SHA384-ECDSA" --profile-name
MySigningProfile
Se o comando anterior for bem-sucedido, você verá o perfil de assinatura ARN retornado. Por exemplo:
{ "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" }
O profileVersionArn
campo contém o ARN a ser usado ao criar a configuração de assinatura de código.
Criar uma configuração de assinatura de código e habilitar a assinatura de código para uma função
O AWS SAM modelo de exemplo a seguir declara um AWS::Lambda::CodeSigningConfig
recurso e permite a assinatura de código para uma função Lambda. Neste exemplo, há um perfil confiável e as implantações são rejeitadas se as verificações de assinatura falharem.
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"
Assinando seu código
Você pode assinar seu código ao empacotar ou implantar seu aplicativo. Especifique a opção --signing-profiles
com o comando sam package
ou sam deploy
, conforme mostrado nos seguintes exemplos de comandos.
Assinando seu código de função ao empacotar seu aplicativo:
sam package --signing-profiles
HelloWorld=MySigningProfile
--s3-bucketamzn-s3-demo-bucket
--output-template-file packaged.yaml
Assinar seu código de função e uma camada da qual sua função depende ao empacotar seu aplicativo:
sam package --signing-profiles
HelloWorld=MySigningProfile MyLayer=MySigningProfile
--s3-bucketamzn-s3-demo-bucket
--output-template-file packaged.yaml
Assinando seu código de função e uma camada e, em seguida, executando uma implantação:
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
nota
Para assinar com sucesso seu código com os comandos sam package
ou sam
deploy
, o versionamento deve estar habilitado para o bucket do Amazon S3 que você usa com esses comandos. Se você estiver usando o Amazon S3 Bucket AWS SAM criado para você, o controle de versão será ativado automaticamente. Para obter mais informações sobre o versionamento de buckets do Amazon S3 e instruções para habilitar o versionamento em um bucket do Amazon S3 fornecido por você, consulte Uso do versionamento em buckets do Amazon S3 no Guia do usuário do Amazon Simple Storage Service.
Fornecendo perfis de assinatura com sam deploy --guided
Quando você executa o sam deploy --guided
comando com um aplicativo sem servidor configurado com assinatura de código, AWS SAM solicita que você forneça o perfil de assinatura a ser usado na assinatura de código. Para obter mais informações sobre sam deploy --guided
solicitações, consulte sam deploy no AWS SAM CLI referência de comando.