Configurer la signature de code pour votre AWS SAM application - AWS Serverless Application Model

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configurer la signature de code pour votre AWS SAM application

Pour garantir que seul le code fiable est déployé, vous pouvez AWS SAM activer la signature de code avec vos applications sans serveur. La signature de votre code permet de garantir que le code n'a pas été modifié depuis la signature et que seuls les packages de code signés provenant d'éditeurs approuvés s'exécutent dans vos fonctions Lambda. Cela permet aux entreprises de se libérer de la charge de créer des composants de contrôle d'accès dans leurs pipelines de déploiement.

Pour plus d'informations sur la signature de code, consultez la section Configuration de la signature de code pour les fonctions Lambda dans le Guide du AWS Lambda développeur.

Avant de configurer la signature de code pour votre application sans serveur, vous devez créer un profil de signature à l'aide de AWS Signer. Vous utiliserez ce profil de signature pour les tâches suivantes :

  1. Création d'une configuration de signature de code – Déclarez une ressource AWS::Lambda::CodeSigningConfig pour spécifier les profils de signature des éditeurs approuvés et définir l'action de stratégie pour les vérifications de validation. Vous pouvez déclarer cet objet dans le même AWS SAM modèle que votre fonction sans serveur, dans un autre AWS SAM modèle ou dans un AWS CloudFormation modèle. Vous activez ensuite la signature de code pour une fonction sans serveur en spécifiant la propriété CodeSigningConfigArn avec la fonction Amazon Resource Name (ARN) d'une ressource AWS::Lambda::CodeSigningConfig.

  2. Signature de votre code – Utilisez la commande sam package ou sam deploy avec l'option --signing-profiles.

Note

Afin de signer avec succès votre code avec les commandes sam package ou sam deploy, la gestion des versions doit être activée pour le compartiment Amazon S3 que vous utilisez avec ces commandes. Si vous utilisez le compartiment Amazon S3 AWS SAM créé pour vous, le versionnement est activé automatiquement. Pour de plus amples informations sur la gestion des versions du compartiment Amazon S3 et des instructions sur l'activation de la gestion des versions sur un compartiment Amazon S3 que vous fournissez, consultez Utilisation de la gestion des versions dans les compartiments Amazon S3 dans le Guide du emploi Amazon Simple Storage Service.

Lorsque vous déployez une application sans serveur, Lambda effectue des vérifications de validation sur toutes les fonctions pour lesquelles vous avez activé la signature de code. Lambda effectue également des vérifications de validation sur toutes les couches dont ces fonctions dépendent. Pour de plus amples informations sur les vérifications de validation de Lambda, consultez Validation de signature dans le Guide du développeur AWS Lambda .

Exemple

Création d'un profil de signature

Pour créer un profil de signature, exécutez la commande suivante :

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

Si la commande précédente réussit, vous voyez l'ARN du profil de signature renvoyé. Par exemple :

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

Le champ profileVersionArn contient l'ARN à utiliser lors de la création de la configuration de signature de code.

Création d'une configuration de signature de code et activation de la signature de code pour une fonction

L'exemple de AWS SAM modèle suivant déclare une AWS::Lambda::CodeSigningConfigressource et active la signature de code pour une fonction Lambda. Dans cet exemple, il existe un profil approuvé et les déploiements sont rejetés si les vérifications de signature échouent.

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"

Signature de votre code

Vous pouvez signer votre code lors de l'empaquetage ou du déploiement de votre application. Spécifiez l'option --signing-profiles avec la commande sam package ou sam deploy, comme illustré dans l'exemple de commandes suivant.

Signer votre code de fonction lors de l'empaquetage de votre application :

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

Signer à la fois votre code de fonction et une couche dont votre fonction dépend, lors de l'empaquetage de votre application :

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

Signer votre code de fonction et une couche, puis effectuer un déploiement :

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
Note

Afin de signer avec succès votre code avec les commandes sam package ou sam deploy, la gestion des versions doit être activée pour le compartiment Amazon S3 que vous utilisez avec ces commandes. Si vous utilisez le compartiment Amazon S3 AWS SAM créé pour vous, le versionnement est activé automatiquement. Pour de plus amples informations sur la gestion des versions du compartiment Amazon S3 et des instructions sur l'activation de la gestion des versions sur un compartiment Amazon S3 que vous fournissez, consultez Utilisation de la gestion des versions dans les compartiments Amazon S3 dans le Guide du emploi Amazon Simple Storage Service.

Fournir des profils de signature avec sam deploy --guided

Lorsque vous exécutez la sam deploy --guided commande avec une application sans serveur configurée avec la signature de code, elle vous AWS SAM invite à fournir le profil de signature à utiliser pour la signature de code. Pour plus d'informations sur les invites sam deploy --guided, consultez sam deploy dans la référence des commandes de la CLI  AWS SAM.