Mettre à jour une stratégie d'autorisation binaire
Ce document explique comment exclure les images dans les stratégies d'autorisation binaire.
Dans ce document, vous mettez à jour la stratégie pour exempter les images de conteneurs de Container Registry et Artifact Registry. Au moment du déploiement, l'outil d'application de l'autorisation binaire permet de déployer des images exclues sur un cluster Google Kubernetes Engine (GKE). L'outil d'application permet les images exclues avant d'appliquer d'autres règles de la stratégie.
Pour apprendre à configurer une stratégie exigeant des attestations pour une image, consultez les tutoriels de bout en bout suivants :
Avant de commencer
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
-
Activer les API Artifact Registry, Binary Authorization.
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
-
Activer les API Artifact Registry, Binary Authorization.
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
- Si vous n'utilisez pas Cloud Shell, installez
kubectl
.
Créer un cluster avec l'autorisation binaire activée
Créer un cluster GKE avec l'autorisation binaire activée Il s'agit du cluster dans lequel vous souhaitez exécuter les images de conteneur que vous déployez.
console Google Cloud
Accédez à la page des Clusters GKE dans la console Google Cloud.
La console affiche une liste des clusters GKE dans votre projet Google Cloud.
Cliquez sur Créer un cluster.
Entrez
test-cluster
dans le champ Name (Nom).Sélectionnez Zonal dans les options Location type (Type d'emplacement).
Sélectionnez
us-central1-a
dans la liste déroulante Zone.Cliquez sur le lien Sécurité pour afficher le panneau Sécurité.
Dans la section Sécurité, cochez la case Activer l'autorisation binaire.
Cliquez sur Créer.
gcloud
Exécutez gcloud container clusters create
avec l'option --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
activée.
gcloud container clusters create \ --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \ --zone us-central1-a \ test-cluster
Afficher la stratégie par défaut
Par défaut, votre stratégie d'autorisation binaire est configurée pour autoriser le déploiement de toutes les images de conteneur.
Console Google Cloud
Pour afficher la stratégie par défaut, procédez comme suit :
Accédez à la page Autorisation binaire dans Google Cloud Console.
Accéder à la page "Autorisation binaire"
La console affiche des détails sur la stratégie.
Cliquez sur Modifier la règle.
Dans Project Default Rule (Règle par défaut du projet), l'option Allow All Images (Autoriser toutes les images) est sélectionnée.
gcloud
Pour afficher la stratégie par défaut, exportez le fichier YAML de stratégie en procédant comme suit :
gcloud container binauthz policy export
Par défaut, ce fichier comporte les éléments suivants :
admissionWhitelistPatterns: - namePattern: gcr.io/google_containers/* - namePattern: gcr.io/google-containers/* - namePattern: k8s.gcr.io/** - namePattern: gke.gcr.io/** - namePattern: gcr.io/stackdriver-agents/* globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: ALWAYS_ALLOW enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG name: projects/PROJECT_ID/policy
API REST
Pour afficher la stratégie par défaut, récupérez-la au format JSON comme suit :
curl \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy"
L'API REST renvoie les éléments suivants :
{ "name": "projects/PROJECT_ID/policy", "admissionWhitelistPatterns": [ { "namePattern": "gcr.io/google_containers/*" }, { "namePattern": "gcr.io/google-containers/*" }, { "namePattern": "k8s.gcr.io/*" }, { "namePattern": "gke.gcr.io/*" }, { "namePattern": "gcr.io/stackdriver-agents/*" } ], "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_ALLOW", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } }
Autoriser uniquement les images exclues
Modifiez la stratégie pour interdire le déploiement de toutes les images, à l'exception de celles répertoriées dans la liste des images exclues.
Console Google Cloud
Pour modifier la stratégie, procédez comme suit :
Revenez à la page Autorisation binaire dans la console Google Cloud.
Cliquez sur Modifier la règle.
Sélectionnez Disallow All Images (Interdire toutes les images).
Sous Images exclues des règles de déploiement, développez Chemins d'accès des images.
Cliquez sur Ajouter des chemins d'accès de l'image.
Container Registry
Dans Nouveau chemin d'accès de l'image, collez le chemin d'accès suivant à partir d'un dépôt Container Registry :
gcr.io/google-samples/hello-app:1.0
Artifact Registry
Dans Nouveau chemin d'accès de l'image, collez le chemin d'accès suivant à partir d'un dépôt Artifact Registry :
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Cliquez sur OK pour enregistrer le chemin d'accès de l'image.
Cliquez sur Save Policy (Enregistrer la stratégie).
gcloud
Pour modifier la stratégie de façon à autoriser les exemples d'images de Container Registry et Artifact Registry, procédez comme suit :
Exportez le fichier YAML de stratégie :
gcloud container binauthz policy export > /tmp/policy.yaml
Dans un éditeur de texte, modifiez
evaluationMode
, défini jusqu'alors surALWAYS_ALLOW
, en le remplaçant parALWAYS_DENY
, et ajoutez les images exclues àadmissionWhitelistPatterns
.Pour exclure les exemples d'images suivants de Container Registry et Artifact Registry, modifiez le fichier YAML de stratégie comme suit :
admissionWhitelistPatterns: - namePattern: gcr.io/google-samples/hello-app:1.0 - namePattern: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: ALWAYS_DENY enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG name: projects/<var>PROJECT_ID</var>/policy
Importez le fichier YAML de stratégie dans l’autorisation binaire :
gcloud container binauthz policy import /tmp/policy.yaml
API REST
Pour modifier la stratégie, procédez comme suit :
Créez un fichier texte avec la stratégie mise à jour au format JSON :
cat > /tmp/policy.json << EOM { "name": "projects/${PROJECT_ID}/policy", "admissionWhitelistPatterns": [ { "namePattern": "gcr.io/google-samples/hello-app:1.0" }, { "namePattern": "us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0" } ], "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_DENY", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } } EOM
Envoyez la stratégie mise à jour à l'API REST :
curl -X PUT \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ --data-binary @/tmp/policy.json \ "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy"
Tester la stratégie
Pour tester la stratégie en déployant l'image que vous avez ajoutée à la liste d'autorisation Exempt image
, procédez comme suit :
Déployez une image exclue sur le cluster.
console Google Cloud
Déployez une image exclue :
Accédez à la page des Clusters GKE dans la console Google Cloud.
Cliquez sur Déployer.
La console vous invite à saisir des détails sur le déploiement.
Sélectionnez Existing Container Image (Image existante du conteneur).
Saisissez le chemin d'accès de l'image de conteneur.
Container Registry
Pour déployer une image à partir de Container Registry, saisissez les éléments suivants :
gcr.io/google-samples/hello-app:1.0
Artifact Registry
Pour déployer une image à partir d'Artifact Registry, saisissez les éléments suivants :
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Cliquez sur Continuer.
Saisissez
hello-server
dans le champ Application name (Nom de l'application).Cliquez sur Déployer.
kubectl
Container Registry
Déployez l'image à partir de Container Registry :
kubectl run hello-server --image gcr.io/google-samples/hello-app:1.0 --port 8080
Artifact Registry
Déployez l'image depuis Artifact Registry :
kubectl run hello-server --image us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 --port 8080
Vérifiez que l'image a été autorisée à se déployer :
console Google Cloud
Pour vérifier que l'image a été déployée, procédez comme suit :
- Accédez à la page GKE
- Accédez à la page "Charges de travail".
La charge de travail
hello-server
s'affiche avec une icône verte, indiquant qu'elle est en cours d'exécution.kubectl
Pour vérifier que l'image a été autorisée à se déployer, saisissez la commande suivante :
kubectl get pods
L'image s'exécute.
Supprimez le pod.
console Google Cloud
Sur la page Charges de travail GKE :
Sélectionnez la charge de travail hello-server.
Cliquez sur Supprimer.
Lorsque vous êtes invité à supprimer des ressources, cliquez sur Supprimer.
kubectl
kubectl delete pod hello-server
Effectuer un nettoyage
Afin d'éviter que des frais ne soient facturés sur votre compte Google Cloud pour les ressources utilisées sur cette page, procédez comme suit :
Supprimez le cluster que vous avez créé dans GKE :
Console
Pour supprimer le cluster, procédez comme suit :
Accédez à la page des Clusters GKE dans la console Google Cloud.
Sélectionnez le cluster
test-cluster
, puis cliquez sur Supprimer.
gcloud
Pour supprimer le cluster, saisissez la commande suivante :
gcloud container clusters delete \ --zone=us-central1-a \ test-cluster
Étapes suivantes
- Découvrez comment configurer et appliquer une stratégie exigeant des attestations. Consultez les ressources suivantes :
- Consultez nos ressources sur le DevOps et découvrez notre programme de recherche.