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 :
- Installez et initialisez Google Cloud CLI, qui fournit les commandes
gcloud
,kubectl
etnomos
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 commandegcloud components update
. Si vous utilisez Cloud Shell, Google Cloud CLI est préinstallé. 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.
Activez les API requises :
Console
Activez l'API Policy Controller.
gcloud
Exécutez la commande suivante :
gcloud services enable anthos.googleapis.com anthospolicycontroller.googleapis.com
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.
Accorder les rôles IAM requis à l'utilisateur qui enregistre le cluster
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.
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
.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:
- Dans la console Google Cloud , accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.
Cliquez sur add Configurer Policy Controller.
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 :
- Dans la section Ajouter/Modifier des groupes de règles, incluez ou excluez un groupe de règles en cliquant sur le bouton correspondant.
Dans la section Modifier la configuration du contrôleur de stratégie, procédez comme suit:
- Pour activer le webhook de mutation, cochez la case Activer le webhook de mutation. Cette fonctionnalité n'est pas compatible avec les clusters Autopilot.
- Dans la zone Audit interval (Intervalle d'audit), saisissez la durée en secondes entre deux audits consécutifs.
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.
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é.
Dans la liste Version, sélectionnez la version de Policy Controller que vous souhaitez utiliser.
Cliquez sur Enregistrer les modifications.
Cliquez sur Configurer.
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.Facultatif : Synchronisez les clusters existants avec les paramètres par défaut :
- Dans l'onglet Paramètres, cliquez sur Synchroniser avec les paramètres du parc.
- 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é) check_circle. 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:
Créez un fichier nommé
fleet-default.yaml
contenant les configurations par défaut du contrôleur de stratégie. Le champinstallSpec
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.
Appliquez la configuration par défaut à votre parc:
gcloud container fleet policycontroller enable \ --fleet-default-member-config=fleet-default.yaml
Pour vérifier que la configuration a été appliquée, exécutez la commande suivante:
gcloud container fleet policycontroller describe
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:
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 :
- Dans la console Google Cloud , accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.
- 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écheck_circle.
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 :
- Dans la console Google Cloud , accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.
- 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é check_circle.
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 nomsgatekeeper-system
, vous ne devez définir que la ressourceConfig
dans la source de vérité. Le paramètregatekeeper-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
- Dans la console Google Cloud , accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.
- Sous l'onglet Paramètres, à côté du cluster dont vous souhaitez mettre à niveau la version, sélectionnez edit Modifier la configuration.
- Développez le menu Modifier la configuration Policy Controller.
- Dans la liste déroulante Version, sélectionnez la version vers laquelle vous souhaitez effectuer la mise à niveau.
- 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 commandegcloud 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 :
- Dans la console Google Cloud , accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.
- Sous l'onglet Paramètres, dans la table du cluster, sélectionnez Modifier edit dans la colonne Modifier la configuration.
- Dans le volet du cluster, développez le menu À propos de Policy Controller.
- Sélectionnez Désinstaller Policy Controller.
- 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é do_not_disturb_on.
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
- En savoir plus sur Policy Controller
- En savoir plus sur les bundles Policy Controller
- Découvrez comment créer une contrainte.
- Résoudre les problèmes liés à Policy Controller.