Configurar la firma de código paraAWS SAMAplicaciones de - AWS Serverless Application Model

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configurar la firma de código paraAWS SAMAplicaciones de

Puede usarAWS SAMpara habilitar la firma de código con las aplicaciones sin servidor para garantizar que solo se implementa código de confianza. Para obtener más información acerca de la característica de firma de código, consulteConfiguración de la firma de código para funciones de Lambdaen laAWS LambdaGuía para desarrolladores.

Antes de configurar la firma de código para la aplicación sin servidor, debe crear un perfil de firma medianteAWSSigner. Este perfil de firma se utiliza para las siguientes tareas:

  1. Creación de una configuración de firma de código— Declarar unAWS::Lambda::CodeSigningConfigpara especificar los perfiles de firma de los editores de confianza y establecer la acción de política para las comprobaciones de validación. Puede declarar este objeto en el mismoAWS SAMplantilla como función sin servidor, en otraAWS SAMplantilla o en unAWS CloudFormationplantilla. A continuación, habilita la firma de código para una función sin servidor especificando laCodeSigningConfigArnla función con el nombre de recurso de Amazon (ARN) de unAWS::Lambda::CodeSigningConfigrecurso.

  2. Firmar el código— UsarUse elsam packageosam deploycomando con el--signing-profilesopción.

nota

Para firmar correctamente el código con elsam packageosam deploy, el control de versiones debe estar habilitado para el bucket de Amazon S3 que utilice con estos comandos. Si está utilizando el bucket de Amazon S3 queAWS SAMcrea para usted, el control de versiones se habilita automáticamente. Para obtener más información acerca del control de versiones de buckets de Amazon S3 e instrucciones para habilitar el control de versiones en un bucket de Amazon S3 que proporcione, consulteUsar el control de versiones en buckets de Amazon S3en laAmazon Simple Storage Service Guide.

Al implementar una aplicación sin servidor, Lambda realiza comprobaciones de validación de todas las funciones para las que ha habilitado la firma de código. Lambda también realiza comprobaciones de validación de las capas de las que dependen esas funciones. Para obtener más información acerca de las comprobaciones de validación de Lambda, consulteValidación de firmasen laAWS LambdaGuía para desarrolladores.

Ejemplo

Creación de un perfil de firma

Para crear un perfil de firma, ejecute el siguiente comando:

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

Si el comando anterior se ejecuta correctamente, verá que se ha devuelto el ARN del perfil de firma. Por ejemplo:

{ "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" }

LaprofileVersionArncontiene el ARN que se utilizará al crear la configuración de firma de código.

Creación de una configuración de firma de código y habilitación de la firma de código para una función

El siguiente ejemploAWS SAMplantilla declara unAWS::Lambda::CodeSigningConfigy habilita la firma de código para una función Lambda. En este ejemplo, hay un perfil de confianza y las implementaciones se rechazan si fallan las comprobaciones de firma.

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"

Firmar el código

Puede firmar el código al empaquetar o desplegar la aplicación. Especifique la--signing-profilescon la opciónsam packageosam deploy, tal y como se muestra en los comandos de ejemplo siguientes.

Firma del código de función al empaquetar la aplicación:

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

Firmar el código de función y una capa de la que depende su función al empaquetar la aplicación:

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

Firma el código de función y una capa y, a continuación, realiza una implementación:

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
nota

Para firmar correctamente el código con elsam packageosam deploy, el control de versiones debe estar habilitado para el bucket de Amazon S3 que utilice con estos comandos. Si está utilizando el bucket de Amazon S3 queAWS SAMcrea para usted, el control de versiones se habilita automáticamente. Para obtener más información acerca del control de versiones de buckets de Amazon S3 e instrucciones para habilitar el control de versiones en un bucket de Amazon S3 que proporcione, consulteUsar el control de versiones en buckets de Amazon S3en laAmazon Simple Storage Service Guide.

Proporcionar perfiles de firma consam deploy --guided

Cuando ejecutas elsam deploy --guidedcon una aplicación sin servidor configurada con firma de código,AWS SAMle pide que proporcione el perfil de firma que se utilizará para la firma de código. Para obtener más información acerca desam deploy --guidedavisos, consultesam deployen laAWS SAMReferencia de los comandos de la CLI.