Installer Policy Controller

Cette page vous explique comment installer Policy Controller. Policy Controller vérifie, audite et applique la conformité de vos clusters aux règles liées à la sécurité, aux réglementations ou aux règles métier.

Cette page s'adresse aux administrateurs et opérateurs informatiques qui souhaitent s'assurer que toutes les ressources exécutées sur la plate-forme cloud répondent aux exigences de conformité organisationnelle en fournissant et en maintenant l'automatisation des audits ou des applications. Pour en savoir plus sur les rôles courants et les exemples de tâches que nous citons dans le contenu Google Cloud , consultez la section Rôles utilisateur et tâches courantes de GKE Enterprise.

Policy Controller est disponible si vous utilisez l'édition Enterprise de Google Kubernetes Engine (GKE). Pour en savoir plus, consultez les tarifs de l'édition Enterprise de Google Kubernetes Engine (GKE).

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  1. Installez et initialisez Google Cloud CLI, qui fournit les commandes gcloud, kubectl et nomos utilisées dans les présentes instructions. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update. Si vous utilisez Cloud Shell, Google Cloud CLI est préinstallé.
  2. Assurez-vous qu'Open Policy Agent Gatekeeper Open Source n'est pas installé sur votre cluster. Si c'est le cas, désinstallez Gatekeeper avant d'installer Policy Controller.

  3. Activez les API requises :

    Console

    1. Activez l'API GKE Enterprise

      Activez l'API GKE Enterprise

    2. Activez l'API Policy Controller.

      Activer l'API Policy Controller

    gcloud

    Exécutez la commande suivante :

    gcloud services enable anthos.googleapis.com anthospolicycontroller.googleapis.com
    
  4. Créez un cluster exécutant une version de Kubernetes 1.14.x ou ultérieure, ou assurez-vous d'y avoir accès. Policy Controller peut sembler s'exécuter sur une version de Kubernetes antérieure à 1.14.x, mais le produit ne se comporte pas correctement.

  5. Accorder les rôles IAM requis à l'utilisateur qui enregistre le cluster

  6. Si vous prévoyez d'utiliser Google Cloud CLI pour configurer Policy Controller, enregistrez votre cluster dans un fletet maintenant. Si vous prévoyez d'utiliser la console Google Cloud , enregistrez vos clusters lorsque vous installez Policy Controller.

  7. Si vous utilisez des clusters associés à GKE, assurez-vous que votre cluster AKS ne comporte pas le module complémentaire Azure Policy et évitez d'étiqueter des espaces de noms avec la clé control-plane.

  8. Si vous utilisez Google Distributed Cloud sur VMware ou sur Bare Metal, veillez à installer Policy Controller sur un cluster d'utilisateur. Vous ne pouvez pas installer Policy Controller sur un cluster d'administrateur.

Installer Policy Controller

Console

Pour installer Policy Controller dans la console Google Cloud , procédez comme suit:

  1. Dans la console Google Cloud , accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.

    Accéder à la page "Règle"

  2. Cliquez sur Configurer Policy Controller.

  3. Facultatif: Pour modifier les paramètres par défaut du parc, cliquez sur Personnaliser les paramètres du parc. Dans la boîte de dialogue qui apparaît, procédez comme suit :

    1. Dans la section Ajouter/Modifier des groupes de règles, incluez ou excluez un groupe de règles en cliquant sur le bouton correspondant.
    2. Dans la section Modifier la configuration du contrôleur de stratégie, procédez comme suit:

      1. Pour activer le webhook de mutation, cochez la case Activer le webhook de mutation. Cette fonctionnalité n'est pas compatible avec les clusters Autopilot.
      2. Dans la zone Audit interval (Intervalle d'audit), saisissez la durée en secondes entre deux audits consécutifs.
      3. Dans le champ Espaces de noms pouvant être exemptés, saisissez une liste d'espaces de noms. Policy Controller ignore les objets de ces espaces de noms.

        Bonne pratique:

        Exemptez les espaces de noms système pour éviter les erreurs dans votre environnement. Vous trouverez les instructions pour exempter des espaces de noms et une liste des espaces de noms courants créés par les services Google Cloud sur la page Exclure des espaces de noms.

      4. Pour activer les contraintes référentielles, cochez la case Activer les modèles de contrainte qui font référence à des objets autres que l'objet actuellement évalué.

      5. Dans la liste Version, sélectionnez la version de Policy Controller que vous souhaitez utiliser.

    3. Cliquez sur Enregistrer les modifications.

  4. Cliquez sur Configurer.

  5. Dans la boîte de dialogue de confirmation, cliquez sur Confirmer. Si vous n'avez pas encore activé Policy Controller, cliquez sur Confirmer pour activer l'API anthospolicycontroller.googleapis.com et installer Policy Controller sur vos clusters.

  6. Facultatif : Synchronisez les clusters existants avec les paramètres par défaut :

    1. Dans l'onglet Paramètres, cliquez sur Synchroniser avec les paramètres du parc.
    2. Dans la liste Clusters du parc, sélectionnez les clusters que vous souhaitez synchroniser, puis cliquez sur Synchroniser avec les paramètres du parc. Cette opération peut durer quelques minutes.

Vous êtes redirigé vers l'onglet Paramètres de Policy Controller. Lorsque Policy Controller est installé et configuré sur vos clusters, les colonnes d'état affichent Installed (Installé) . Cette opération peut prendre plusieurs minutes.

gcloud

Activez Policy Controller en exécutant la commande suivante:

gcloud container fleet policycontroller enable \
    --memberships=MEMBERSHIP_NAME

Vous pouvez définir des champs supplémentaires pour configurer Policy Controller. Par exemple, vous pouvez demander à Policy Controller d'exempter certains espaces de noms de l'application forcée. Pour obtenir la liste complète des champs que vous pouvez configurer, consultez la documentation de Policy Controller sur Google Cloud CLI ou exécutez gcloud container fleet policycontroller enable --help.

Pour définir des paramètres au niveau du parc pour Policy Controller, procédez comme suit:

  1. Créez un fichier nommé fleet-default.yaml contenant les configurations par défaut du contrôleur de stratégie. Le champ installSpec est obligatoire pour activer les valeurs par défaut au niveau de la flotte. Cet exemple présente les options que vous pouvez configurer:

    # cat fleet-default.yaml
    
     policyControllerHubConfig:
      installSpec: INSTALL_SPEC_ENABLED 
      # Uncomment to set default deployment-level configurations.
      # deploymentConfigs:
      #   admission:
      #     containerResources:
      #       limits:
      #        cpu: 1000m
      #         memory: 8Gi
      #       requests:
      #         cpu: 500m
      #         memory: 4Gi
      # Uncomment to set policy bundles that you want to install by default.
      # policyContent:
      #   bundles:
      #     cis-k8s-v1.5.1:
      #       exemptedNamespaces:
      #       - "namespace-name"
      # Uncomment to exempt namespaces from admission.
      # exemptableNamespaces:
      # - "namespace-name"
      # Uncomment to enable support for referential constraints
      # referentialRulesEnabled: true
      # Uncomment to disable audit, adjust value to set audit interval
      # auditIntervalSeconds: 0
      # Uncomment to log all denies and dryrun failures
      # logDeniesEnabled: true
      # Uncomment to enable mutation
      # mutationEnabled: true
      # Uncomment to adjust the value to set the constraint violation limit
      # constraintViolationLimit: 20
      # ... other fields ...
    
    Bonne pratique:

    Exemptez les espaces de noms système pour éviter les erreurs dans votre environnement. Vous trouverez les instructions pour exempter des espaces de noms et une liste des espaces de noms courants créés par les services Google Cloud sur la page Exclure des espaces de noms.

  2. Appliquez la configuration par défaut à votre parc:

    gcloud container fleet policycontroller enable \
      --fleet-default-member-config=fleet-default.yaml
    
  3. Pour vérifier que la configuration a été appliquée, exécutez la commande suivante:

    gcloud container fleet policycontroller describe
    
  4. Pour supprimer la configuration par défaut au niveau du parc, exécutez la commande suivante :

    gcloud container fleet policycontroller enable \
      --no-fleet-default-member-config
    

Terraform

Pour activer Policy Controller dans votre parc avec la bibliothèque de modèles par défaut installée, consultez l'exemple suivant:

resource "google_gke_hub_feature" "policycontroller" {
  name     = "policycontroller"
  location = "global"
  project  = data.google_project.default.project_id

  fleet_default_member_config {
    policycontroller {
      policy_controller_hub_config {
        install_spec = "INSTALL_SPEC_ENABLED"
        policy_content {
          bundles {
            bundle = "pss-baseline-v2022"
          }
          template_library {
            installation = "ALL"
          }
        }
      }
    }
  }
}

Vous pouvez transmettre plusieurs blocs bundle pour installer l'un des bundles listés dans la présentation des bundles Policy Controller.

Pour en savoir plus sur l'utilisation de Terraform, consultez la page Compatibilité de Terraform avec Policy Controller.

Vérifier l'installation de Policy Controller

Après avoir installé Policy Controller, vous pouvez vérifier qu'il s'est exécuté avec succès.

Console

Procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.

    Accéder à la page "Règle"

  2. Sous l'onglet Settings (Paramètres), dans le tableau du cluster, vérifiez la colonne Policy controller status (État du Policy Controller). Une installation réussie présente l'état Installé.

gcloud

Exécutez la commande suivante :

gcloud container fleet policycontroller describe --memberships=MEMBERSHIP_NAME

Si l'installation aboutit, membershipStates: MEMBERSHIP_NAME: policycontroller: state: ACTIVE s'affiche.

Vérifier l'installation de la bibliothèque de modèles de contraintes

Lorsque vous installez Policy Controller, la bibliothèque de modèles de contraintes est installée par défaut. Cette installation peut prendre plusieurs minutes. Vous pouvez vérifier que la bibliothèque de modèles a bien été créée.

Console

Procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.

    Accéder à la page "Règle"

  2. Sous l'onglet Paramètres, dans le tableau du cluster, sélectionnez le nombre indiqué dans la colonne Bundles installés. Dans le volet État du contenu de la règle, une installation réussie de la bibliothèque de modèles affiche l'état Installé .

gcloud

Exécutez la commande suivante :

kubectl get constrainttemplates

Un résultat semblable aux lignes suivantes doit s'afficher :

NAME                                      AGE
k8sallowedrepos                           84s
k8scontainerlimits                        84s
k8spspallowprivilegeescalationcontainer   84s
...[OUTPUT TRUNCATED]...

Lorsqu'un modèle de contrainte individuelle est installé correctement, son champ status.created est true.

Interactions de Policy Controller avec Config Sync

Si vous utilisez Policy Controller avec Config Sync, vous devez connaître les interactions suivantes avec les ressources stockées dans votre source de vérité, comme un dépôt Git, qui sont synchronisées par Config Sync:

  • Vous ne pouvez pas synchroniser un modèle de contrainte qui fait également partie de la bibliothèque de modèles, sauf si la bibliothèque de modèles de contraintes est désactivée.

  • Si vous souhaitez synchroniser la ressource Config stockée dans l'espace de noms gatekeeper-system, vous ne devez définir que la ressource Config dans la source de vérité. Le paramètre gatekeeper-system Namespace ne doit pas être défini avec elle.

Configurer des métriques

Par défaut, Policy Controller tente d'exporter les métriques vers Prometheus et Cloud Monitoring. Vous devrez peut-être effectuer des étapes de configuration supplémentaires, telles que l'octroi d'autorisations, pour autoriser Policy Controller à exporter des métriques. Pour en savoir plus, consultez Utiliser les métriques de Policy Controller.

Gérer la bibliothèque de modèles de contraintes

Pour en savoir plus sur la désinstallation ou l'installation des modèles de contraintes, les contraintes associées ou la bibliothèque de modèles de contraintes, consultez la page Créer des contraintes.

Exempter des espaces de noms de l'application forcée

Vous pouvez configurer Policy Controller pour ignorer des objets dans un espace de noms. Pour en savoir plus, consultez la page Exclure des espaces de noms de Policy Controller.

Muter des ressources

Policy Controller agit également comme un webhook de mutation. Pour en savoir plus, consultez la section Muter des ressources.

Afficher la version de Policy Controller

Pour connaître la version de Gatekeeper que Policy Controller utilise, affichez le tag d'image en exécutant la commande suivante :

kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
  -o="jsonpath={.spec.template.spec.containers[0].image}"

Le tag Git (ou le hachage) utilisé pour créer Gatekeeper et le numéro de version ConfigManagement Operator sont inclus dans le tag d'image comme suit:

.../gatekeeper:VERSION_NUMBER-GIT_TAG.gBUILD_NUMBER

Par exemple, pour l'image suivante :

gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
  • anthos1.3.2 est le numéro de version.
  • 480baac est le tag Git.
  • 0 est le numéro de build.

Mettre à niveau Policy Controller

Avant de mettre à niveau Policy Controller, consultez les notes de version pour en savoir plus sur les changements entre les versions.

Pour mettre à niveau Policy Controller, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.

    Accéder à la page "Règle"

  2. Sous l'onglet Paramètres, à côté du cluster dont vous souhaitez mettre à niveau la version, sélectionnez Modifier la configuration.
  3. Développez le menu Modifier la configuration Policy Controller.
  4. Dans la liste déroulante Version, sélectionnez la version vers laquelle vous souhaitez effectuer la mise à niveau.
  5. Cliquez sur Enregistrer les modifications.

gcloud

Exécutez la commande ci-dessous.

gcloud container fleet policycontroller update \
  --version=VERSION \
  --memberships=MEMBERSHIP_NAME

Remplacez les éléments suivants :

  • VERSION : version vers laquelle vous souhaitez effectuer la mise à jour.
  • MEMBERSHIP_NAME : nom d'appartenance que vous avez choisi lors de l'enregistrement de votre cluster. Vous pouvez trouver le nom d'appartenance en exécutant la commande gcloud container fleet memberships list.

Désinstaller Policy Controller

Suivez ces étapes pour désinstaller Policy Controller de vos clusters.

Console

Pour désactiver Policy Controller sur vos clusters, effectuez les tâches suivantes :

  1. Dans la console Google Cloud , accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.

    Accéder à la page "Règle"

  2. Sous l'onglet Paramètres, dans la table du cluster, sélectionnez Modifier dans la colonne Modifier la configuration.
  3. Dans le volet du cluster, développez le menu À propos de Policy Controller.
  4. Sélectionnez Désinstaller Policy Controller.
  5. Confirmez la désinstallation en suivant les instructions de la boîte de dialogue de confirmation et en sélectionnant Confirmer.

Lorsque Policy Controller est désinstallé, les colonnes d'état affichent Non installé .

gcloud

Pour désinstaller Policy Controller, exécutez la commande suivante :

gcloud container fleet policycontroller disable \
  --memberships=MEMBERSHIP_NAME

Remplacez MEMBERSHIP_NAME par le nom d'appartenance du cluster enregistré pour désactiver le contrôleur de règles. Vous pouvez spécifier plusieurs appartenances séparées par une virgule.

RBAC Policy Controller et autorisations

Policy Controller comprend des charges de travail à privilèges élevés. Les autorisations associées à ces charges de travail sont décrites dans la documentation des opérations Open Policy Agent Gatekeeper.

Requêtes de ressources Policy Controller

Le tableau suivant répertorie les exigences concernant les ressources Kubernetes pour chaque version compatible de Policy Controller. Les requêtes de ressources pour l'opérateur Config Management ne s'appliquent que si vous avez installé Policy Controller via l'objet ConfigManagement.

Composant Processeur Mémoire
ConfigManagement Operator 100 m 100 Mi
Policy Controller 100 m 256 Mi

Étapes suivantes