Configurer l'application de la stratégie d'autorisation binaire

L'autorisation binaire pour GKE sur Bare Metal est une fonctionnalité de Google Cloud qui étend l'application de l'autorisation binaire hébergée au moment du déploiement à vos clusters sur site. Le principal cas d'utilisation de l'autorisation binaire sur GKE sur Bare Metal consiste à sécuriser les charges de travail, mais l'autorisation binaire fonctionne avec tous les types de clusters. Suivez les étapes de ce guide pour appliquer à vos clusters les règles d'application d'une stratégie d'autorisation binaire configurée dans votre projet Google Cloud. Pour en savoir plus sur les stratégies et les règles de l'autorisation binaire, consultez la page Présentation de l'autorisation binaire.

Prérequis

Avant de pouvoir activer l'application de la stratégie d'autorisation binaire pour un cluster, assurez-vous de remplir les conditions préalables suivantes:

  • Enregistrer le cluster dans un parc:lorsqu'un cluster est créé avec bmctl, il est enregistré dans le projet Google Cloud que vous spécifiez dans le champ gkeConnect.projectID du fichier de configuration du cluster. Ce projet est appelé projet hôte du parc. Pour en savoir plus sur les parcs, y compris sur les cas d'utilisation, les bonnes pratiques et des exemples, consultez la documentation Gestion de parc.

  • Activez l'API Binary Authorization dans votre projet Google Cloud:activez l'autorisation binaire Authorization dans le projet hôte de votre parc.

  • Ajoutez le rôle Évaluateur des stratégies d'autorisation binaire au projet hôte de votre parc:pour accorder le rôle Évaluateur des stratégies d'autorisation binaire (roles/binaryauthorization.policyEvaluator) au compte de service Kubernetes sur le projet hôte de votre parc, exécutez la commande suivante:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role="roles/binaryauthorization.policyEvaluator"
    

    Si votre cluster s'exécute derrière un serveur proxy, assurez-vous que celui-ci autorise les connexions à l'API Binary Authorization (binaryauthorization.googleapis.com). Cette API fournit une validation et un contrôle du déploiement basé sur des règles pour les images déployées sur votre cluster. Pour en savoir plus sur l'utilisation d'une configuration de proxy, consultez la section Installer derrière un proxy.

Une fois que vous remplissez les conditions préalables, vous pouvez activer (ou désactiver) la stratégie d'autorisation binaire lorsque vous créez un cluster ou mettez à jour un cluster existant.

Activer la stratégie d'autorisation binaire lors de la création du cluster

Vous pouvez activer l'application de la stratégie d'autorisation binaire avec bmctl ou gcloud CLI.

bmctl

Pour activer l'autorisation binaire lorsque vous créez un cluster avec bmctl:

  1. Avant de créer votre cluster, ajoutez spec.binaryAuthorization.evaluationMode au fichier de configuration du cluster, comme indiqué dans l'exemple suivant:

    ...
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: user-basic
      namespace: cluster-user-basic
    spec:
      type: user
      ...
      binaryAuthorization:
        evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
    

    Les valeurs autorisées pour evaluationMode sont les suivantes :

    • PROJECT_SINGLETON_POLICY_ENFORCE: appliquez les règles spécifiées dans la stratégie d'autorisation binaire, également appelée stratégie de projet-singleton, sur votre projet Google Cloud pour régir le déploiement des images de conteneurs sur votre cluster.

    • DISABLE: désactive l'utilisation de l'autorisation binaire pour votre cluster. Il s'agit de la valeur par défaut. Si vous omettez binaryAuthorization, la fonctionnalité est désactivée.

  2. Apportez toutes les autres modifications nécessaires au fichier de configuration du cluster, puis exécutez la commande bmctl create cluster.

Pour en savoir plus sur la création de clusters, consultez la section Présentation de la création de clusters.

gcloud CLI

  • Pour créer un cluster d'utilisateur et activer l'autorisation binaire, ajoutez l'option --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE lorsque vous exécutez la commande gcloud container bare-metal clusters create.

    Cela crée un cluster d'utilisateur qui applique les règles spécifiées dans la stratégie d'autorisation binaire, également appelée stratégie de projet-singleton. Cette stratégie est associée à votre projet Google Cloud et spécifie des règles régissant le déploiement d'images de conteneurs. Pour en savoir plus sur l'utilisation de gcloud CLI pour créer un cluster d'utilisateur, consultez la page Créer un cluster d'utilisateur à l'aide de clients API GKE On-Prem. Pour en savoir plus sur les stratégies et les règles de l'autorisation binaire, consultez la page Présentation de l'autorisation binaire.

Activer ou désactiver la stratégie d'autorisation binaire pour un cluster existant

Si vous disposez d'un cluster version 1.16 ou ultérieure, vous pouvez activer ou désactiver l'autorisation binaire à tout moment à l'aide de bmctl ou de gcloud CLI.

bmctl

  • Pour l'activer:

    1. Modifiez le fichier de configuration du cluster pour ajouter les champs binaryAuthorization:

      ...
      ---
      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: user-basic
        namespace: cluster-user-basic
      spec:
        type: user
        ...
        binaryAuthorization:
          evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
      
    2. Mettez à jour le cluster :

      bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=CLUSTER_KUBECONFIG
      

      Remplacez les éléments suivants :

      • CLUSTER_NAME : nom du cluster à mettre à jour.
      • CLUSTER_KUBECONFIG: chemin d'accès au fichier kubeconfig du cluster.
    3. Attendez que le déploiement nommé binauthz-module-deployment dans l'espace de noms binauthz-system soit prêt.

      Lorsque le déploiement est prêt, l'autorisation binaire applique les règles spécifiées dans la stratégie d'autorisation binaire, également appelée stratégie de projet-singleton. Cette stratégie est associée à votre projet Google Cloud et spécifie les règles régissant le déploiement d'images de conteneurs. Pour en savoir plus sur l'utilisation de bmctl pour mettre à jour un cluster, consultez Mettre à jour des clusters. Pour en savoir plus sur les stratégies et les règles de l'autorisation binaire, consultez la page Présentation de l'autorisation binaire.

  • Pour la désactiver:

    Vous pouvez désactiver cette fonctionnalité en définissant evaluationMode sur DISABLED ou en supprimant la section binaryAuthorization des spécifications du cluster. Une fois cette modification effectuée, attendez quelques minutes que le déploiement nommé binauthz-module-deployment dans l'espace de noms binauthz-system soit supprimé.

gcloud CLI

  • Pour activer l'autorisation binaire pour un cluster existant, ajoutez l'option --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE lorsque vous exécutez la commande gcloud container bare-metal clusters update.

    Cela met à jour un cluster d'utilisateur afin que l'autorisation binaire applique les règles spécifiées dans la stratégie d'autorisation binaire, également appelée stratégie de projet-singleton. Cette stratégie est associée à votre projet Google Cloud et spécifie les règles régissant le déploiement d'images de conteneurs. Pour en savoir plus sur l'utilisation de gcloud CLI pour mettre à jour un cluster d'utilisateur, consultez la section gcloud container bare-metal clusters update dans la documentation de référence de la gcloud CLI. Pour en savoir plus sur les stratégies et les règles de l'autorisation binaire, consultez la page Présentation de l'autorisation binaire.

  • Pour désactiver l'autorisation binaire pour un cluster existant, exécutez la commande gcloud container bare-metal clusters update avec l'option --binauthz-evaluation-mode=DISABLED.

Dépannage

Si vous ne remplissez pas toutes les conditions préalables, vous ne verrez peut-être pas le signe précoce d'un problème. Si l'autorisation binaire commence à ne pas répondre aux requêtes de création de pod, vérifiez status.conditions pour le ReplicaSet. Un message de ce type indique un problème avec la configuration de l'autorisation binaire:

failed to validate Binary Authorization policy

(1) Ensure the Binary Authorization API is enabled for your Google Cloud project:
    gcloud services enable binaryauthorization.googleapis.com --project=PROJECT_ID
(2) Ensure an IAM policy binding is in place granting binaryauthorization.policyEvaluator role to the binauthz-system/binauthz-agent Kubernetes service account:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role=roles/binaryauthorization.policyEvaluator