Utiliser le mode "bris de glace" (GKE, clusters GKE)

Cette page fournit des instructions sur l'utilisation du mode "bris de glace" avec l'autorisation binaire.

Avant de commencer

Dans ce guide, nous partons du principe que vous avez configuré l'autorisation binaire.

Aperçu

Vous utilisez le bris de glace pour déployer une image de conteneur bloquée par l'autorisation binaire.

Le mode "bris de glace" fournit une issue de secours qui vous permet d'ignorer l'application de la stratégie d'autorisation binaire pour autoriser le déploiement d'images, même celles qui seraient interdites par la stratégie.

Cette fonctionnalité est mise en œuvre conformément aux recommandations figurant dans la spécification des contrôleurs d'admission Kubernetes.

Lorsque vous utilisez le mode "bris de glace" pour déployer une image, un événement de type "bris de glace" est automatiquement consigné dans Cloud Audit Logs, que le déploiement soit conforme ou non à la stratégie. Dans Cloud Audit Logs, vous pouvez effectuer manuellement un audit ou déclencher automatiquement une alerte ou un autre événement en aval.

Pour activer le mode "bris de glace", vous ajoutez un champ label à la spécification de pod avec une option de règle break-glass.

Instaurer un événement de type "bris de glace"

Cette section explique comment utiliser le mode "bris de glace" pour déployer des images, y compris celles qui ne respectent pas la stratégie d'autorisation binaire.

Mettre à jour la stratégie d'autorisation binaire afin de rejeter toutes les requêtes de déploiement

Pour mettre à jour la stratégie afin d'empêcher le déploiement de toutes les images, procédez comme suit :

console Google Cloud

  1. Accédez à la page "Autorisation binaire" dans Google Cloud Console.

    Accéder à la page "Autorisation binaire"

  2. Cliquez sur Modifier la stratégie.

  3. Sur la page Modifier la stratégie, dans la règle par défaut du projet, notez le mode d'évaluation d'origine, puis cliquez sur Interdire toutes les images.

  4. Cliquez sur Enregistrer la règle.

gcloud

  1. Pour enregistrer la règle existante dans le projet actuel, exécutez la commande suivante :

    gcloud container binauthz policy export > SAVE_POLICY_YAML
    

    Remplacez SAVE_POLICY_YAML par le chemin du fichier d'exportation, par exemple, /tmp/save_policy.yaml.

  2. Créer un fichier de règles :

    cat > TEST_POLICY_YAML << EOM
    admissionWhitelistPatterns:
    defaultAdmissionRule:
      enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
      evaluationMode: ALWAYS_DENY
    globalPolicyEvaluationMode: DISABLE
    EOM
    

    Remplacez TEST_POLICY_YAML par un chemin d'accès au fichier, par exemple, /tmp/policy.yaml.

  3. Importez la stratégie :

    gcloud container binauthz policy import TEST_POLICY_YAML
    

    Remplacez TEST_POLICY_YAML par un chemin d'accès au fichier, par exemple, /tmp/policy.yaml.

Par défaut, le déploiement de toutes les images est bloqué.

Essayer de déployer une image

Dans cette section, vous allez déployer une image. La règle par défaut de la stratégie est configurée pour interdire le déploiement de toutes les images. Par conséquent, la requête de déploiement échoue.

  1. Créez un fichier de configuration au format YAML. Ce fichier contient les informations de base requises pour créer le pod :

    cat > /tmp/create_pod.yaml << EOM
    apiVersion: v1
    kind: Pod
    metadata:
      name: breakglass-pod
    spec:
      containers:
      - name: container-name
        image: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
    EOM
    
  2. Créez le pod à l'aide de kubectl :

    kubectl create -f /tmp/create_pod.yaml
    

    Une erreur indique que l'image a été bloquée par votre stratégie. L'erreur se présente comme suit :

    Error from server (Forbidden): error when creating "/tmp/create_pod.yaml": pods "breakglass-pod" is forbidden: image policy webhook backend denied one or more images: Image gcr.io/google-samples/hello-app denied by Binary Authorization default
    admission rule. Denied by always_deny admission rule`.

Activer le mode "bris de glace" et relancer le déploiement

Dans cette section, vous allez activer le mode "bris de glace". Bien que le mode "bris de glace" soit spécifique à l'autorisation binaire, vous devez mettre à jour le champ label dans la spécification du pod pour l'activer.

Pour activer le mode "bris de glace", exécutez les commandes suivantes :

  1. Créez un fichier de configuration au format YAML.

    La commande suivante crée le fichier contenant le libellé break-glass et d'autres informations requises pour créer le pod :

    cat > /tmp/create_pod.yaml << EOM
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-name
      labels:
        image-policy.k8s.io/break-glass: "true"
    spec:
      containers:
      - name: container-name
        image: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
    EOM
    

    Pour toutes les versions maîtres Kubernetes précédentes, vous pouvez activer le mode "bris de glace" en ajoutant alpha.image-policy.k8s.io/break-glass au nœud annotations, comme suit :

    cat > /tmp/create_pod.yaml << EOM
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-name
      annotations:
         alpha.image-policy.k8s.io/break-glass: "true"
    spec:
      containers:
      - name: container-name
        image: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
    EOM
    
  2. Créez le pod à l'aide de kubectl :

    kubectl create -f /tmp/create_pod.yaml
    

    Notez le résultat : pod/pod-name created

Rechercher l'entrée de journal de type "bris de glace" dans Cloud Audit Logs

Affichez les événements de type "bris de glace" dans les Cloud Audit Logs.

Effectuer un nettoyage

Pour supprimer le pod et désactiver le mode "bris de glace", procédez comme suit :

  1. Supprimez le pod :

      kubectl delete -f /tmp/create_pod.yaml
      

    Vérifiez que vous avez reçu un résultat tel que pod <var>pod-name</var> deleted.

  2. Supprimez le bloc label ou annotations de la spécification de pod.

  3. Réinitialisez votre stratégie :

    console Google Cloud

    1. Accédez à la page "Autorisation binaire" dans Google Cloud Console.

      Accéder à la page "Autorisation binaire"

    2. Cliquez sur Modifier la stratégie.

    3. Sur la page Modifier la stratégie, dans Règle par défaut du projet, rétablissez le paramètre d'évaluation précédent.

    4. Cliquez sur Enregistrer la règle.

    gcloud

    1. Réimportez votre stratégie d'origine.

        gcloud container binauthz policy import SAVE_POLICY_YAML
      

      Remplacez SAVE_POLICY_YAML par le chemin d'accès au fichier que vous avez créé précédemment dans ce guide.

    Votre stratégie est réinitialisée.

Étape suivante