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á.
Configurar a assinatura de código para a aplicação do AWS SAM
Para garantir que somente código confiável seja implantado, você pode usar o AWS SAM para habilitar a assinatura de código com as aplicações 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 o aplicativo sem servidor, crie um perfil de assinatura usando o Signer AWS. 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::CodeSigningConfigrecurso 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 modelo AWS SAM da sua função sem servidor, em um modelo AWS SAM diferente ou em um modelo CloudFormation. Em seguida, você habilita a assinatura de código para uma função sem servidor especificando a propriedadeCodeSigningConfigArnda função com o nome de recurso da Amazon (ARN) de um recursoAWS::Lambda::CodeSigningConfig. -
Assinando seu código — Use o comando
sam packageousam deploycom 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 versionamento 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-nameMySigningProfile
Se o comando anterior é bem-sucedido, o ARN do perfil de assinatura é 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 modelo AWS SAM de exemplo a seguir declara umrecurso AWS::Lambda::CodeSigningConfig e permite a assinatura de código para uma função do 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-profileVersionArnCodeSigningPolicies: 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-profilesHelloWorld=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-profilesHelloWorld=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-profilesHelloWorld=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 versionamento 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 comando sam deploy --guided 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 prompts sam deploy --guided, consulte sam deploy na Referência de comandos de AWS SAM CLI.