Cette page explique comment sécuriser votre chaîne d'approvisionnement logicielle en configurant l'autorisation binaire de manière à ne déployer que les images de conteneurs créées par Cloud Build.
Vous configurez ce contrôle de déploiement en exigeant le certificateur built-by-cloud-build
dans votre stratégie d'autorisation binaire. Cloud Build crée automatiquement le certificateur built-by-cloud-build
dans votre projet lorsque vous exécutez une compilation qui génère des images. Une fois les images compilées, Cloud Build signe et crée automatiquement des attestations pour celles-ci. Au moment du déploiement, l'autorisation binaire vérifie les attestations avec le certificateur built-by-cloud-build
. Les images validées peuvent être déployées.
Le déploiement des images qui échouent à la vérification n'est pas autorisé et l'échec est enregistré dans Cloud Audit Logs.
Pour obtenir un guide de bout en bout décrivant comment utiliser les métadonnées enregistrées par Cloud Build et l'autorisation binaire, consultez la page Utiliser la provenance signée et l'autorisation binaire.
Avant de commencer
Pour utiliser cette fonctionnalité, vous devez d'abord effectuer les opérations suivantes :
- Configurez l'autorisation binaire pour votre plate-forme.
Configurez Cloud Build et créez une image.
Configurer la stratégie
Dans cette section, vous allez configurer la stratégie d'autorisation binaire de manière à exiger le certificateur built-by-cloud-build
.
Pour n'autoriser que le déploiement des images créées par Cloud Build, procédez comme suit :
Console
Accédez à la page Autorisation binaire dans Google Cloud Console.
Dans l'onglet Règles, cliquez sur Modifier la règle.
Dans la boîte de dialogue Modifier la stratégie, sélectionnez Autoriser uniquement les images qui ont été approuvées par tous les certificateurs suivants.
Cliquez sur Ajouter des certificateurs.
Dans la boîte de dialogue Ajouter des certificateurs, procédez comme suit :
- Sélectionnez Ajouter par projet et nom de certificateur, puis procédez comme suit :
- Dans le champ Nom du projet, saisissez le projet dans lequel vous exécutez Cloud Build.
- Cliquez sur le champ Nom du certificateur et notez que le certificateur
built-by-cloud-build
est disponible. - Cliquez sur
built-by-cloud-build
.
Vous pouvez également sélectionner Ajouter par ID de ressource de certificateur. Dans le champ ID de ressource du certificateur, saisissez
projects/PROJECT_ID/attestors/built-by-cloud-build
Remplacez
PROJECT_ID
par le projet dans lequel vous exécutez Cloud Build.
- Sélectionnez Ajouter par projet et nom de certificateur, puis procédez comme suit :
Cliquez sur Ajouter un certificateur.
Cliquez sur Save Policy (Enregistrer la stratégie).
gcloud
Exportez votre stratégie existante dans un fichier à l'aide de la commande suivante :
gcloud container binauthz policy export > /tmp/policy.yaml
Modifiez votre fichier de stratégie.
Modifiez l'une des règles suivantes :
defaultAdmissionRule
clusterAdmissionRules
istioServiceIdentityAdmissionRules
kubernetesServiceAccountAdmissionRules
Ajoutez un bloc
requireAttestationsBy
à la règle s'il n'en existe pas déjà un.Dans le bloc
requireAttestationsBy
, ajoutez :projects/PROJECT_ID/attestors/built-by-cloud-build
Remplacez
PROJECT_ID
par le projet dans lequel vous exécutez Cloud Build.Enregistrez le fichier de stratégie.
Importez le fichier de stratégie.
gcloud container binauthz policy import /tmp/policy.yaml
Voici un exemple de fichier de stratégie contenant la référence au fichier
built-by-cloud-build-attestor
:defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/PROJECT_ID/attestors/built-by-cloud-build name: projects/PROJECT_ID/policy
Remplacez
PROJECT_ID
par l'ID du projet dans lequel vous exécutez Cloud Build.
Étape suivante
- Au lieu d'interdire le déploiement des images, vous pouvez utiliser le mode de simulation pour consigner les cas de non-respect des règles.
- Affichez les événements du journal d'audit pour les images non autorisées sur Google Kubernetes Engine (GKE) ou Cloud Run.