Pour prévenir les attaques de type « man-in-the-middle » ainsi que la mise à jour ou l'exécution d'images non autorisées, Container Registry prend en charge la signature automatique au niveau du namespace. Chaque image envoyée vers Container Registry est signée conformément aux règles de signature correspondantes, garantissant l'intégrité des images de bout en bout, de la distribution jusqu'au déploiement.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Une instance Container Registry Enterprise Edition (Advanced Edition) — La signature d'images nécessite l'édition Advanced Edition. Pour obtenir des instructions de configuration, consultez Créer une instance Container Registry Enterprise Edition.
Key Management Service (KMS) activé — KMS fournit les clés asymétriques utilisées pour signer les images. Pour obtenir des instructions de configuration, consultez Activer KMS.
Créer des clés asymétriques
La signature d'images utilise des algorithmes de clé asymétrique. Créez une clé KMS de type EC ou RSA avec l'objectif défini sur SIGN ou VERIFY.
Connectez-vous à la console KMS.
Dans la barre de navigation supérieure, sélectionnez la région dans laquelle vous souhaitez créer les clés.
Dans le volet de navigation de gauche, cliquez sur Keys, puis cliquez sur Create Secret.
Dans la boîte de dialogue Create Secret, définissez le type de clé sur EC ou RSA et définissez le paramètre Purpose sur SIGN ou VERIFY, puis cliquez sur Confirm. Pour plus de détails sur les autres paramètres, consultez Créer une CMK.
Autoriser Container Registry à accéder aux clés KMS
Container Registry a besoin d'une autorisation pour lire vos clés asymétriques afin d'effectuer la signature. Configurez cet accès à l'aide d'un rôle Resource Access Management (RAM) associé à une stratégie personnalisée.
Créer le rôle RAM
Connectez-vous à la console RAM.
Dans le volet de navigation de gauche, choisissez Identities > Role.
Sur la page Role, cliquez sur Create Role.
Sur la page Create Role, définissez Principal Type sur Cloud Account, spécifiez votre compte Alibaba Cloud, puis cliquez sur Confirm.
Dans la boîte de dialogue Create Role, définissez Role Name sur
AliyunContainerRegistryKMSRole, puis cliquez sur Confirm.
Mettre à jour la stratégie de confiance
Sur la page Role, recherchez
AliyunContainerRegistryKMSRoleet cliquez sur le nom du rôle.Cliquez sur l'onglet Trust Policy, puis cliquez sur Edit Trust Policy.
-
Remplacez le contenu de la stratégie par ce qui suit, puis cliquez sur Confirm :
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "cr.aliyuncs.com" ] } } ], "Version": "1" }
Créer et attacher la stratégie d'autorisation
Dans le volet de navigation de gauche de la console RAM, choisissez Permissions > Policies.
Sur la page Policies, cliquez sur Create Policy.
-
Sur la page Create Policy, cliquez sur l'onglet JSON Editor et saisissez la stratégie suivante. Remplacez
${region}et${accountid}par votre région et votre ID de compte réels.{ "Statement": [ { "Effect": "Allow", "Action": [ "kms:*" ], "Resource": "acs:kms:${region}:${accountid}:*" } ], "Version": "1" } Cliquez sur Confirm. Dans la boîte de dialogue Create Policy, définissez Policy Name sur
AliyunContainerRegistryKMSRolePolicyet configurez la Description, puis cliquez sur Confirm.Dans le volet de navigation de gauche, choisissez Identities > Role. Recherchez
AliyunContainerRegistryKMSRoleet cliquez sur Add Permission dans la colonne Actions.Dans le panneau Add Permission, sélectionnez Custom Policy comme type de stratégie, recherchez et sélectionnez
AliyunContainerRegistryKMSRolePolicy, puis cliquez sur Confirm.
Configurer un témoin et une stratégie de vérification de signature
Un témoin lie vos clés KMS au workflow de signature de Container Registry. Vous pouvez également associer le témoin à un cluster Container Service for Kubernetes (ACK) afin d'appliquer la vérification de signature au moment du déploiement.
Connectez-vous à la console Cloud Security Center.
Dans le volet de navigation de gauche, choisissez Protection Configuration > Container Protection > Container Signature. Sur la page Container Signature, cliquez sur l'onglet Witness, puis cliquez sur create a witness.
Créez un témoin et associez-le aux clés KMS que vous avez créées. Ces clés sont utilisées pour la signature d'images.
(Facultatif) Créez une stratégie de vérification de signature pour associer le témoin à un cluster ACK. Pour plus de détails, consultez Utiliser la fonctionnalité de signature de conteneur.
Configurer une règle de signature
Une règle de signature définit quelles images sont signées et comment. Après avoir créé une règle, Container Registry signe automatiquement chaque nouvelle image envoyée vers le namespace spécifié.
Une règle de signature s'applique uniquement aux images envoyées après la création de la règle. Les images existantes dans le namespace ne sont pas signées.
Connectez-vous à la console Container Registry.
Dans la barre de navigation supérieure, sélectionnez une région.
Dans le volet de navigation de gauche, cliquez sur Instances.
Sur la page Instances, cliquez sur l'instance Enterprise Edition que vous souhaitez gérer.
Dans le volet de navigation de gauche, choisissez Security and Trust > Image Signature , puis cliquez sur Create a signature rule.
À l'étape Key Configurations, sélectionnez le témoin que vous avez créé dans Cloud Security Center et associez-le aux clés KMS, puis cliquez sur Next.
-
À l'étape Signature Configurations, configurez les paramètres suivants, puis cliquez sur Create Signing Rule.
Parameter Description Algorithms Algorithme utilisé pour signer les images. Valeurs valides : RSA_PSS_SHA_256 et RSA_PKCS1_SHA_256. Scope Actuellement, la signature automatique est prise en charge au niveau du namespace. Sélectionnez le namespace dont les images sont automatiquement signées. Signature types Default : Signe à la fois les digests d'images et les tags. Utilisez cette option pour la vérification de signature au sein de la même instance. Simple : Signe uniquement les digests d'images (pas les tags). Utilisez cette option pour les scénarios de réplication d'images entre instances où les tags peuvent changer. Trigger Type Méthode de déclenchement de la signature d'images. La valeur par défaut est Automatic Trigger, qui signe les images dès qu'elles sont envoyées vers Container Registry.
Vérifier les signatures d'images
Utilisez kritis-validation-hook pour vérifier les signatures d'images de conteneur dans les clusters ACK. kritis-validation-hook peut bloquer automatiquement le déploiement d'images si la vérification de signature échoue. Il s'agit de la méthode de vérification recommandée. Pour obtenir des instructions de configuration, consultez Présentation de kritis-validation-hook.
Vous pouvez également utiliser la fonctionnalité de vérification de signature de KMS pour vérifier directement les signatures d'images dans Container Registry.