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 :
-
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 ressourceAWS::Lambda::CodeSigningConfig
. -
Signature de votre code – Utilisez la commande
sam package
ousam 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::CodeSigningConfig
ressource 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-buckettest-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-buckettest-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-buckettest-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.