Présentation

Cette page propose une présentation de l'autorisation binaire.

Introduction

L'autorisation binaire est un service Google Cloud Platform (GCP) qui fournit une sécurité sur la chaîne d'approvisionnement logicielle lors du déploiement d'applications basées sur des conteneurs. L'autorisation binaire étend Google Kubernetes Engine (GKE) et applique des stratégies de sécurité au moment du déploiement. L'autorisation binaire fonctionne avec les images de conteneurs de Container Registry ou d'un autre registre d'images de conteneurs.

Avec l'autorisation binaire, vous pouvez vérifier automatiquement et numériquement chaque composant de votre chaîne d'approvisionnement logicielle, afin de garantir sa qualité et son intégrité avant le déploiement d'une application dans votre environnement de production.

L'autorisation binaire fait partie d'une architecture de déploiement comprenant les éléments suivants :

  • Container Registry ou un autre registre qui stocke les images de conteneurs que vous souhaitez déployer.
  • GKE, qui exécute les images dans un cluster.
  • Container Analysis, qui stocke les métadonnées de confiance utilisées dans le processus d'autorisation.
  • L'autorisation binaire elle-même, qui autorise ou bloque le déploiement d'images sur GKE en fonction d'une stratégie que vous configurez.

L'autorisation binaire est basée sur la solution Kritis, qui fait partie du projet Open Source Grafeas.

Contexte

GKE permet aux équipes de développer des systèmes hautement dissociés, tels que ceux basés sur des architectures de microservices, et encourage l'utilisation de processus présentant un cycle de vie réduit autour de l'intégration continue (CI, Continuous Integration) et du déploiement continu (CD, Continuous Deployment). Dans ces environnements, les logiciels se déplacent souvent d'un cluster de déploiement à un autre pendant les phases de préproduction et de test. Il est donc difficile de s'assurer que tous les logiciels sont créés, testés, publiés et déployés conformément aux bonnes pratiques internes et aux standards.

L'autorisation binaire vise à réduire le risque de déployer des logiciels incorrects, défectueux ou non autorisés dans ce type d'environnement. À l'aide de ce service, vous pouvez explicitement indiquer les processus internes qui doivent être exécutés avant qu'une image de conteneur n'accède à chacune des étapes de déploiement, puis vérifier que les parties autorisées ont bien validé ces exécutions.

L'autorisation binaire n'impose pas de processus internes ni de bonnes pratiques concernant l'intégrité et la qualité de vos logiciels. Elle vous aide plutôt à appliquer vos propres pratiques en empêchant le déploiement des images de conteneurs qui n'ont pas passé les vérifications requises.

Cas d'utilisation types

Les cas d'utilisation les plus courants de l'autorisation binaire impliquent des attestations. Dans ces cas, lors de la création de l'image de conteneur, son condensé unique est signé numériquement par un signataire afin de créer une attestation.

Au moment du déploiement, l'outil d'application de l'autorisation binaire utilise un certificateur pour valider l'attestation. Ainsi, seules les images de conteneurs ayant des attestations validées peuvent être déployées.

Voici quelques cas d'utilisation impliquant des attestations :

  • La validation de compilation, dans laquelle l'autorisation binaire vérifie que l'image de conteneur a été créée par un système de compilation ou un pipeline d'intégration continue (CI).
  • L'analyse des failles, dans laquelle l'image de conteneur créée par la CI a également été analysée par Container Analysis et les failles identifiées ont été résolues avant que le pipeline CI lui-même ou une personne physique ne crée l'attestation.
  • La vérification manuelle, où un représentant, du contrôle qualité par exemple, crée manuellement l'attestation.

Pour découvrir un tutoriel de bout en bout sur les attestations, consultez la page Premiers pas avec la console.

Cycle de vie

Un cycle de vie de déploiement pour les images de conteneurs peut comporter les étapes suivantes, où la fin d'une étape est une condition préalable à la progression vers la suivante :

  • Compilation et tests unitaires.
  • Déploiement dans un environnement de développement où les utilisateurs ne sont pas affectés.
  • Déploiement dans un environnement de contrôle qualité où seuls les utilisateurs internes sont affectés.
  • Déploiement dans un environnement Canary, où seule une petite partie des utilisateurs externes est affectée.
  • Déploiement en production.

Après la compilation et les tests, chaque étape dispose de son propre environnement de déploiement, ici un cluster GKE, et de ses propres critères qui doivent être remplis pour qu'une image puisse passer à l'étape suivante. L'autorisation binaire vous permet de définir les critères nécessaires pour qu'une image puisse passer d'une étape à l'autre et fournit les moyens de les appliquer.

Fonctionnalités

L'autorisation binaire fournit les fonctionnalités suivantes :

  • Un modèle de stratégie qui vous permet de décrire les contraintes sous lesquelles des images de conteneurs peuvent être déployées.
  • Un modèle d'attestation qui vous permet de définir des autorités de confiance pouvant attester ou valider que les processus requis dans votre environnement sont terminés avant le déploiement.
  • Une fonctionnalité d'application qui empêche les images incorrectes, défectueuses ou non autorisées de passer dans vos environnements de déploiement.

Modèle de stratégie

L'autorisation binaire met en œuvre un modèle de stratégie, dans lequel une stratégie est un ensemble de règles régissant le déploiement d'images de conteneurs dans un cluster GKE. Les règles d'une stratégie spécifient les critères qu'une image doit respecter pour pouvoir être déployée. Une stratégie type nécessite toutefois qu'une image de conteneur contienne une signature numérique validée avant son déploiement.

Dans ce type de stratégie, une règle spécifie les autorités de confiance, appelées signataires, qui doivent certifier que les processus requis sont terminés et que l'image est prête à passer à l'étape suivante du déploiement. Un signataire peut être un utilisateur humain ou, plus souvent, un processus machine tel qu'un système de compilation et de test ou une partie de votre pipeline de déploiement continu.

Au cours du cycle de vie du développement, les signataires signent numériquement des descripteurs d'images de conteneurs globalement uniques, créant ainsi des déclarations certifiées appelées attestations. Ensuite, au cours de la phase de déploiement, l'autorisation binaire utilise des certificateurs pour valider le certificat, indiquant que les processus requis dans votre pipeline sont terminés.

Pour en savoir plus sur le modèle de stratégie de l'autorisation binaire et d'autres concepts, consultez la page Concepts clés.

Configuration

Pour configurer l'autorisation binaire, vous devez d'abord activer le service pour les projets qui participent à votre pipeline de déploiement et d'autorisation. Vous créez ensuite des clusters GKE, si nécessaire, avec le service activé.

Vous définissez ensuite la stratégie spécifiant les contraintes selon lesquelles les images de conteneurs peuvent être déployées. Si votre stratégie nécessite des attestations avant le déploiement, vous devez également configurer des certificateurs qui peuvent valider les attestations avant d'autoriser le déploiement des images de conteneurs associées.

Pour en savoir plus sur les étapes de configuration, consultez la page Présentation de la procédure de configuration.

Autorisation

Avant de pouvoir déployer une image de conteneur, tous les signataires requis doivent créer une attestation qui vérifie que l'image est prête à passer à l'étape de déploiement suivante. L'attestation est un enregistrement contenant le chemin d'accès au registre et le condensé de l'image de conteneur, qui a été signée numériquement à l'aide de la clé cryptographique privée du signataire.

Pour en savoir plus sur les autorisations, consultez la page Créer des attestations.

Application

Lorsque vous déployez une image de conteneur sur GKE, l'autorisation binaire vérifie la stratégie et applique toute règle trouvée qui régit son déploiement. Si la règle nécessite des certificateurs, l'autorisation binaire vérifie que tous les certificateurs ont validé l'image de manière sécurisée.

Si l'image respecte les contraintes définies dans la stratégie, l'autorisation binaire autorise son déploiement sur le cluster. Dans le cas contraire, le service bloque le déploiement et écrit dans le journal d'audit un message expliquant pourquoi l'image n'est pas conforme.

Pour en savoir plus sur le déploiement, consultez la page Déployer des conteneurs.

Sécuriser l'autorisation binaire avec VPC Service Controls

VPC Service Controls améliore votre capacité à limiter les risques de copie ou de transfert non autorisés de données à partir de vos ressources et services gérés par Google.

Pour en savoir plus sur la sécurisation des ressources liées à l'autorisation binaire, consultez la page Sécuriser avec VPC Service Controls.