Configuration de la signature de code pour AWS Lambda - AWS Lambda

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.

Configuration de la signature de code pour AWS Lambda

La signature de code pour AWS Lambda permet de garantir que seul du code fiable s'exécute dans vos fonctions Lambda. Lorsque vous activez la signature de code pour une fonction, Lambda contrôle chaque déploiement de code et vérifie que le package de code est signé par une source approuvée.

Note

Les fonctions définies en tant qu'images de conteneur ne prennent pas en charge la signature de code.

Pour vérifier l'intégrité du code, utilisezAWS  Signer pour créer des packages de code signés numériquement pour les fonctions et les couches. Lorsqu'un utilisateur tente de déployer un package de code, Lambda effectue des contrôles de validation sur le package de code avant d'accepter le déploiement. Étant donné que les contrôles de validation de signature de code s'exécutent au moment du déploiement, l'exécution de la fonction n'est aucunement affectée en matière de performances.

Vous pouvez également utiliser AWS Signer pour créer des profils de signature. Vous utilisez un profil de signature afin de créer le package de code signé. Utilisez AWS Identity and Access Management (IAM) pour contrôler qui peut signer les packages de code et créer des profils de signature. Pour de plus amples informations, consultez Authentification et contrôle d'accès dans le Guide du développeur AWS  Signer.

Afin d'activer la signature de code pour une fonction, vous créez une configuration de signature de code et l'attachez à la fonction. Une configuration de signature de code définit une liste de profils de signature autorisés et l'action de stratégie à privilégier en cas d'échec de l'un des contrôles de validation.

Les couches Lambda suivent le même format de package de code signé que les packages de code de fonction. Lorsque vous ajoutez une couche à une fonction pour laquelle la signature de code est activée, Lambda vérifie que la couche est signée par un profil de signature autorisé. Lorsque vous activez la signature de code pour une fonction, toutes les couches ajoutées à la fonction doivent également être signées par l'un des profils de signature autorisés.

Utilisez IAM pour contrôler qui peut créer des configurations de signature de code. Généralement, vous autorisez uniquement des utilisateurs administratifs spécifiques à disposer de cette capacité. En outre, vous pouvez configurer des stratégies IAM pour faire en sorte que les développeurs ne créent que des fonctions pour lesquelles la signature de code est activée.

Vous pouvez configurer la signature de code afin de journaliser les modifications dans AWS CloudTrail. Les déploiements réussis et bloqués vers les fonctions sont enregistrés CloudTrail avec des informations sur les contrôles de signature et de validation.

Vous pouvez configurer la signature de code pour vos fonctions à l'aide de la console Lambda, du AWS Command Line Interface (AWS CLI) et du AWS Serverless Application Model (AWS SAM). AWS CloudFormation

L'utilisation de AWS Signer ou la signature de code pour AWS Lambda.

Validation de signature

Lambda effectue les contrôles de validation suivants lorsque vous déployez un package de code signé vers votre fonction :

  1. Intégrité – Vérifie que le package de code n'a pas été modifié depuis sa signature. Lambda compare le hachage du package au hachage de la signature.

  2. Expiration – Vérifie que la signature du package de code n'a pas expiré.

  3. Discordance – Vérifie que le package de code est signé avec l'un des profils de signature autorisés pour la fonction Lambda. Une incompatibilité se produit aussi si une signature n'est pas présente.

  4. Révocation – Vérifie que la signature du package de code n'a pas été révoquée.

La stratégie de validation de signature définie dans la configuration de signature de code détermine laquelle des actions suivantes Lambda doit accomplir en cas d'échec de l'un des contrôles de validation :

  • Avertissement – Lambda autorise le déploiement du package de code, mais émet un avertissement. Lambda émet une nouvelle CloudWatch métrique Amazon et enregistre également l'avertissement dans le CloudTrail journal.

  • Mise en application – Lambda émet un avertissement (identique à celui de l'action Avertissement) et bloque le déploiement du package de code.

Vous pouvez configurer la stratégie pour les contrôles de validation d'expiration, d'incompatibilité et de révocation. Notez que vous ne pouvez pas configurer une stratégie pour le contrôle d'intégrité. Si le contrôle d'intégrité échoue, Lambda bloque le déploiement.

Conditions préalables à la configuration

Avant de configurer la signature de code pour une fonction Lambda, utilisez AWS Signer pour effectuer les opérations suivantes :

  • Créer un ou plusieurs profils de signature.

  • Utiliser un profil de signature afin de créer un package de code signé pour votre fonction.

Pour plus d'informations, reportez-vous à Création des profils de signature (Console) dans le Guide du développeur AWS  Signer.

Création de configurations de signature de code

Une configuration de signature de code définit une liste des profils de signature autorisés et la stratégie de validation de signature.

Pour créer une configuration de signature de code (console)
  1. Ouvrez la page des configurations de signature de code de la console Lambda.

  2. Choisissez Create configuration (Créer une configuration).

  3. Pour Description, saisissez un nom descriptif pour la configuration.

  4. Sous Signing profiles (Profils de signature), ajoutez jusqu'à 20 profils de signature à la configuration.

    1. Pour Signing profile version ARN (ARN de la version du profil de signature), sélectionnez l'Amazon Resource Name (ARN) de la version du profil, ou saisissez l'ARN.

    2. Pour ajouter un profil de signature supplémentaire, sélectionnez Add signing profiles (Ajouter des profils de signature).

  5. Sous Signature validation policy (Stratégie de validation de signature), sélectionnez Warn (Avertissement) ou Enforce (Application).

  6. Choisissez Create configuration (Créer une configuration).

Mise à jour d'une configuration de signature de code

Lorsque vous mettez à jour une configuration de signature de code, les modifications ont des répercussions sur les futurs déploiements de fonctions auxquelles la configuration de signature de code est attachée.

Pour mettre à jour une configuration de signature de code (console)
  1. Ouvrez la page des configurations de signature de code de la console Lambda.

  2. Sélectionnez une configuration de signature de code à mettre à jour, puis sélectionnez Edit (Modifier).

  3. Pour Description, saisissez un nom descriptif pour la configuration.

  4. Sous Signing profiles (Profils de signature), ajoutez jusqu'à 20 profils de signature à la configuration.

    1. Pour Signing profile version ARN (ARN de la version du profil de signature), sélectionnez l'Amazon Resource Name (ARN) de la version du profil, ou saisissez l'ARN.

    2. Pour ajouter un profil de signature supplémentaire, sélectionnez Add signing profiles (Ajouter des profils de signature).

  5. Sous Signature validation policy (Stratégie de validation de signature), sélectionnez Warn (Avertissement) ou Enforce (Application).

  6. Sélectionnez Enregistrer les modifications.

Suppression d'une configuration de signature de code

Vous pouvez supprimer une configuration de signature de code uniquement si aucune fonction ne l'utilise.

Pour supprimer une configuration de signature de code (console)
  1. Ouvrez la page des configurations de signature de code de la console Lambda.

  2. Sélectionnez une configuration de signature de code à supprimer, puis sélectionnez Delete (Supprimer).

  3. Pour confirmer, sélectionnez à nouveau Delete (Supprimer).

Activation de la signature de code pour une fonction

Afin d'activer la signature de code pour une fonction, vous associez une configuration de signature de code à la fonction.

Pour associer une configuration de signature de code à une fonction (console)
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Sélectionnez la fonction pour laquelle vous souhaitez activer la signature de code.

  3. Ouvrez l'onglet Configuration.

  4. Faites défiler l'écran vers le bas et choisissez Signature par code.

  5. Choisissez Modifier.

  6. Sous Edit code signing (Modifier la signature de code), sélectionnez une configuration de signature de code pour cette fonction.

  7. Choisissez Enregistrer.

Configuration des stratégies IAM

Pour accorder à un utilisateur l'autorisation d'accéder aux opérations d'API de signature de code, attachez une ou plusieurs instructions de stratégie à la stratégie utilisateur. Pour plus d'informations sur les stratégies utilisateur, consultez Utilisation de politiques IAM basées sur l'identité dans Lambda.

L'exemple d'instruction de stratégie suivant autorise la création, la mise à jour et la récupération de configurations de signature de code.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CreateCodeSigningConfig", "lambda:UpdateCodeSigningConfig", "lambda:GetCodeSigningConfig" ], "Resource": "*" } ] }

Les administrateurs peuvent utiliser la clé de condition CodeSigningConfigArn pour spécifier les configurations de signature de code que les développeurs doivent utiliser pour créer ou mettre à jour vos fonctions.

L'exemple de déclaration de stratégie suivant accorde l'autorisation de créer une fonction. La déclaration de stratégie comprend une condition lambda:CodeSigningConfigArn pour spécifier la configuration de signature de code autorisée. Lambda bloque toute demande d'API CreateFunction si son paramètre CodeSigningConfigArn est manquant ou ne correspond pas à la valeur de la condition.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowReferencingCodeSigningConfig", "Effect": "Allow", "Action": [ "lambda:CreateFunction", ], "Resource": "*", "Condition": { "StringEquals": { "lambda:CodeSigningConfigArn": “arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0d4518bd353a0a7c6” } } } ] }

Configuration de la signature de code avec l'API Lambda

Pour gérer les configurations de signature de code avec le AWS SDK AWS CLI or, utilisez les opérations d'API suivantes :

Pour gérer la configuration de signature de code pour une fonction, utilisez les opérations d'API suivantes :