

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.

# Configura la firma de código para tu AWS SAM aplicación
<a name="authoring-codesigning"></a>

Para garantizar que solo se implemente código confiable, puede utilizar esta opción AWS SAM para habilitar la firma de código en sus aplicaciones sin servidor. Firmar el código ayuda a garantizar que el código no se haya modificado desde la firma y que solo los paquetes de código firmados de editores de confianza se ejecuten en las funciones de Lambda. Esto ayuda a las organizaciones a liberarse de la carga de crear componentes de control en sus procesos de implementación.

Para obtener más información sobre la característica de firma de código, consulta [Configuración de firma de código para funciones de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-codesigning.html) en la *Guía para desarrolladores de AWS Lambda *.

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

1. **Creación de una configuración de firma de código**: declare un recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html) para especificar los perfiles de firma de los editores de confianza y establecer la acción política para las comprobaciones de validación. Puede declarar este objeto en la misma AWS SAM plantilla que la función sin servidor, en una AWS SAM plantilla diferente o en una plantilla. CloudFormation A continuación, habilita la firma de código para una función sin servidor especificando la propiedad de la función [https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-codesigningconfigarn](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-codesigningconfigarn) con el nombre de recurso de Amazon (ARN) de un recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html).

1. **Firmar el código**: utiliza el comando [https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-package.html](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-package.html) o [https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-deploy.html](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-deploy.html) con la opción `--signing-profiles`.

**nota**  
Para poder firmar correctamente el código con los comandos `sam package` o `sam deploy`, el control de versiones debes estar habilitado para el bucket de Amazon S3 que utiliza con estos comandos. Si utiliza el bucket de Amazon S3 que se AWS SAM crea para usted, el control de versiones se habilita automáticamente. Para obtener más información sobre el control de versiones de los buckets de Amazon S3 e instrucciones para habilitar el control de versiones en un bucket de Amazon S3 que proporciones, consulta [Uso del control de versiones en los buckets de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) en la *Guía del usuario de Amazon Simple Storage Service*.

Al implementar una aplicación sin servidor, Lambda realiza comprobaciones de validación en todas las funciones para las que ha habilitado la firma de código. Lambda también realiza comprobaciones de validación en cualquier capa de la que dependan esas funciones. Para obtener más información sobre las comprobaciones de validación de Lambda, consulta la [validación de firmas](https://docs.aws.amazon.com/lambda/latest/dg/configuration-codesigning.html#config-codesigning-valid) en la *Guía para desarrolladores de AWS Lambda *.

## Ejemplo
<a name="authoring-codesigning-example"></a>

### Creación de un perfil de firma
<a name="authoring-codesigning-example-signing-profile"></a>

Para crearlo, ejecuta este comando:

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

Si el comando anterior se ejecuta correctamente, verás que se devuelve 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"
}
```

El campo `profileVersionArn` contiene 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 para una función
<a name="authoring-codesigning-example-configure-trusted-deployments"></a>

La siguiente AWS SAM plantilla de ejemplo declara un [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html)recurso y 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 las comprobaciones de firma fallan.

```
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 tu código
<a name="authoring-codesigning-example-signing-code"></a>

Puedes firmar el código al empaquetar o implementar la aplicación. Especifique la opción `--signing-profiles` con el comando `sam package` o `sam deploy`, como se muestra en los siguientes comandos de ejemplo.

Firmar el código de función al empaquetar la aplicación:

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

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

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

Firmar el código de la función y una capa y, a continuación, realizar una implementación:

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

**nota**  
Para poder firmar correctamente el código con los comandos `sam package` o `sam deploy`, el control de versiones debes estar habilitado para el bucket de Amazon S3 que utiliza con estos comandos. Si utiliza el bucket de Amazon S3 que se AWS SAM crea para usted, el control de versiones se habilita automáticamente. Para obtener más información sobre el control de versiones de los buckets de Amazon S3 e instrucciones para habilitar el control de versiones en un bucket de Amazon S3 que proporciones, consulta [Uso del control de versiones en los buckets de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) en la *Guía del usuario de Amazon Simple Storage Service*.

## Proporcionar perfiles de firma con `sam deploy --guided`
<a name="authoring-codesigning-sam-deploy-guided"></a>

Cuando ejecuta el `sam deploy --guided` comando con una aplicación sin servidor configurada con firma de código, AWS SAM le pide que proporcione el perfil de firma que se utilizará para la firma de código. Para obtener más información sobre `sam deploy --guided`, consulta [sam deploy](sam-cli-command-reference-sam-deploy.md) en la referencia de los comandos de AWS SAM CLI.