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.
Policy Controller est disponible si vous utilisez Anthos. Pour en savoir plus, consultez la section Tarifs. Vous pouvez également créer un rapport pour tester Policy Controller sans frais avant de l'installer.
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
Installez et initialisez Google Cloud CLI, qui fournit les commandes
gcloud
,gsutil
,kubectl
etnomos
utilisées dans les présentes instructions. Si vous utilisez Cloud Shell, Google Cloud CLI est préinstallé.Si vous utilisez Anthos Config Management pour la première fois, activez Anthos Config Management.
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 Google Cloud Console, enregistrez vos clusters lorsque vous installez Policy Controller.
Si vous utilisez des clusters associés à Anthos, assurez-vous que votre cluster AKS ne dispose pas du module complémentaire de stratégie Azure et évitez d'étiqueter les espaces de noms avec la clé
control-plane
.
Installer Policy Controller
Procédez comme suit pour configurer Anthos Config Management afin d'installer le contrôleur d'admission dynamique Policy Controller dans le cluster. Lorsque vous installez Config Sync à l'aide de Google Cloud Console ou de Google Cloud CLI, vous ne pouvez pas utiliser ultérieurement les commandes kubectl
pour modifier votre configuration.
Console
Enregistrer vos clusters
Pour utiliser Anthos Config Management, commencez par enregistrer les clusters. L'enregistrement de vos clusters leur permet de partager un ensemble commun de configurations et de règles.
Pour enregistrer vos clusters, procédez comme suit :
-
Dans la console Google Cloud :
Si vous utilisez Google Kubernetes Engine, accédez à la page Stratégie de GKE dans la section Configuration et règles.
Si vous utilisez Anthos, accédez à la page Règles d'Anthos dans la section Configuration et règles.
Sélectionnez Installer Policy Controller.
Sur la page Sélectionner des clusters enregistrés pour Config Management, localisez le tableau Clusters non enregistrés de ce projet, puis recherchez le cluster que vous souhaitez enregistrer.
Cliquez sur Enregistrer en regard du cluster que vous souhaitez enregistrer.
Une fois le cluster enregistré, il apparaît dans la table Sélectionner des clusters enregistrés pour Config Management.
Configurer Policy Controller
Pour installer Policy Controller sur la console Google Cloud, procédez comme suit :
- Sur la page Sélectionner des clusters enregistrés pour Config Management, sélectionnez le cluster enregistré sur lequel vous souhaitez activer Policy Controller, puis cliquez sur Suivant.
- Laissez la case Activer Policy Controller cochée.
- Facultatif : pour configurer des paramètres supplémentaires, cliquez sur Afficher les paramètres avancés.
Facultatif : pour muter des ressources, laissez la case Activer le webhook de mutation cochée.
Facultatif : Pour installer une bibliothèque de modèles de contrainte pour les types de règles courants, laissez la case Installer la bibliothèque de modèles par défaut cochée.
Facultatif : dans le champ Intervalle d'audit, ajoutez la durée en secondes entre les synchronisations consécutives. La valeur par défaut est de 60 secondes. Si vous définissez l'intervalle d'audit sur 0, l'audit est désactivé.
Facultatif : dans le champ Espaces de noms exemptés, indiquez une liste d'espaces de noms. Les objets de ces espaces de noms sont ignorés par toutes les règles. Les espaces de noms n'ont pas besoin d'exister actuellement.
Facultatif : pour activer les contraintes référentielles, laissez la case Activer la possibilité d'utiliser des modèles de contraintes faisant référence à des objets autres que celui en cours d'évaluation cochée.
Facultatif : si vous ne souhaitez pas installer Config Sync, cliquez sur Suivant et décochez la case Activer Config Sync.
Pour terminer l'installation, sélectionnez Terminer. Vous revenez alors à la page Config Management.
Après quelques minutes, vous devriez voir Installé dans la colonne d'état Policy Controller à côté des clusters que vous avez configurés.
gcloud
- Préparez la configuration en créant un nouveau fichier manifeste
apply-spec.yaml
ou en utilisant un fichier manifeste existant. L'utilisation d'un fichier manifeste existant vous permet de configurer votre cluster avec les mêmes paramètres que ceux utilisés par un autre cluster.
Créer un nouveau fichier manifeste
Pour configurer Policy Controller avec de nouveaux paramètres pour votre cluster, créez un fichier nommé apply-spec.yaml
et copiez-y le fichier YAML suivant :
# apply-spec.yaml
applySpecVersion: 1
spec:
policyController:
# Set to true to install and enable Policy Controller
enabled: true
# Uncomment to prevent the template library from being installed
# templateLibraryInstalled: false
# 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 exempt namespaces
# exemptableNamespaces: ["namespace-name"]
# Uncomment to change the monitoring backends
# monitoring:
# backends:
# - cloudmonitoring
# - prometheus
# ...other fields...
Vous devez ajouter un champ spec.policyController
et définir la valeur de enabled
sur true
. Vous pouvez choisir d'activer d'autres fonctionnalités de Policy Controller. Toutefois, la prise en charge des contraintes référentielles est désactivée par défaut. Avant de l'activer, veillez à vous familiariser avec les mises en garde concernant la cohérence à terme.
Utiliser un fichier manifeste existant
Pour configurer votre cluster avec les mêmes paramètres que ceux utilisés par un autre cluster, récupérez les paramètres d'un cluster enregistré :
gcloud alpha container fleet config-management fetch-for-apply \
--membership=MEMBERSHIP_NAME \
--project=PROJECT_ID \
> CONFIG_YAML_PATH
Remplacez les éléments suivants :
MEMBERSHIP_NAME
: nom de l'appartenance du cluster enregistré contenant les paramètres Policy Controller que vous souhaitez utiliser.PROJECT_ID
: ID de votre projet.CONFIG_YAML_PATH
: chemin d'accès au fichierapply-spec.yaml
.
2. Appliquez le fichier apply-spec.yaml
:
gcloud beta container fleet config-management apply \
--membership=MEMBERSHIP_NAME \
--config=CONFIG_YAML \
--project=PROJECT_ID
Remplacez les éléments suivants :
MEMBERSHIP_NAME
: nom de l'appartenance du cluster enregistré contenant les paramètres Policy Controller que vous souhaitez utiliser.CONFIG_YAML
: ajoutez le chemin d'accès à votre fichierapply-spec.yaml
.PROJECT_ID
: ajoutez l'ID de votre projet.
Le pod est créé, et Policy Controller commence à vérifier et à appliquer les contraintes.
Installer Policy Controller sur un cluster privé
Si vous utilisez une version antérieure à la version 1.8.0 et que vous installez Policy Controller sur un cluster privé dans Google Kubernetes Engine (GKE), vous devez prendre des mesures supplémentaires pour terminer votre installation. Dans les clusters privés, le pare-feu empêche le plan de contrôle d'atteindre les nœuds du port 8443, où le plan de contrôle tente de se connecter à Policy Controller. Vous pouvez créer une règle de pare-feu pour que le plan de contrôle puisse atteindre le port 8443 (ou tout autre port personnalisé). Vous pouvez également exécuter votre pod sur le port privilégié 443. Pour plus d'informations, consultez la section Exécution sur des nœuds de cluster GKE privés dans la documentation GateKeeper.
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 :
Si vous utilisez Google Kubernetes Engine, accédez à la page Stratégie de GKE dans la section Configuration et règles.
Si vous utilisez Anthos, accédez à la page Règles d'Anthos dans la section Configuration et règles.
- Dans l'onglet Paramètres, consultez la colonne État de Policy Controller dans la table du cluster. Une installation réussie affiche l'état Installée.
gcloud
Exécutez la commande suivante :
gcloud beta container fleet config-management status \
--project=PROJECT_ID
Remplacez PROJECT_ID
par l'ID de votre projet.
Un résultat semblable aux lignes suivantes doit s'afficher :
Name Status Last_Synced_Token Sync_Branch Last_Synced_Time Policy_Controller
CLUSTER_NAME SYNCED a687c2c 1.0.0 2021-02-17T00:15:55Z INSTALLED
Une installation réussie affiche l'état INSTALLED
dans la colonne Policy Controller.
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.
Pour vérifier que la bibliothèque de modèles est installée, répertoriez tous les objets ConstraintTemplate
:
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 Anthos Config Management
Anthos Config Management gère les ressources essentielles à l'exécution de Policy Controller. Pour éviter les conflits entre Anthos Config Management et Policy Controller, soyez conscient de ce qui est placé dans le dépôt Config Sync.
Lorsque vous utilisez Policy Controller, posez-vous les questions suivantes :
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 de configuration stockée dans l'espace de noms
gatekeeper-system
, celui-ci doit être indéfini dans le dépôt ou correspondre à la configuration qu'Anthos Config Management doit installer.Si l'espace de noms
gatekeeper-system
est supprimé du dépôt source de référence, Anthos Config Management risque de ne pas pouvoir le récupérer. Pour récupérer les données, supprimez la validation de configuration du webhook pour Policy Controller.
Gérer la bibliothèque de modèles de contraintes
Pour en savoir plus sur la désinstallation ou la ré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}"
À partir d'Anthos Config Management version 1.3.2 ou ultérieure, le tag Git (ou le hachage) utilisé pour créer Gatekeeper ainsi que le numéro de version Anthos Config Management 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.
Vous pouvez également afficher la liste de toutes les versions Anthos Config Management avec les fichiers manifestes, les installations et les versions binaires nomos
correspondantes dans la matrice des versions.
Mettre à niveau Policy Controller
Policy Controller est mis à niveau chaque fois que vous mettez à niveau Anthos Config Management. Pour en savoir plus, consultez la page Mettre à niveau Anthos Config Management.
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 :
Si vous utilisez Google Kubernetes Engine, accédez à la page Stratégie de GKE dans la section Configuration et règles.
Si vous utilisez Anthos, accédez à la page Règles d'Anthos dans la section Configuration et règles.
- Dans l'onglet Paramètres, à côté du cluster sur lequel vous souhaitez désactiver Policy Controller, cliquez sur le menu contextuel more_vert > edit Modifier la configuration.
- Décochez la case Activer Policy Controller.
- Cliquez sur Terminé.
gcloud
Pour désinstaller Policy Controller, procédez comme suit :
Modifiez la configuration d'Anthos Config Management dans votre fichier
apply-spec.yaml
et définissezpolicyController.enabled
surfalse
.Appliquez les modifications dans le fichier
apply-spec.yaml
:gcloud beta container fleet config-management apply \ --membership=CLUSTER_NAME \ --config=CONFIG_YAML \ --project=PROJECT_ID
Remplacez les éléments suivants :
- CLUSTER_NAME : ajoutez le cluster enregistré auquel vous souhaitez appliquer cette configuration.
- CONFIG_YAML : ajoutez le chemin d'accès à votre fichier
apply-spec.yaml
. - PROJECT_ID : ajoutez l'ID de votre projet.
Une fois qu'Anthos Config Management supprime l'outil de finalisation policycontroller.configmanagement.gke.io
, la désinstallation est terminée.
Si vous souhaitez désinstaller complètement Anthos Config Management, consultez la section Désinstaller Anthos Config Management.
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.
Étapes suivantes
- En savoir plus sur Policy Controller
- Résoudre les problèmes liés à Policy Controller.
- Découvrez comment créer une contrainte.
- Utiliser la bibliothèque de modèles de contraintes fournie par Google
- Utiliser des contraintes au lieu de règles PodSecurityPolicies
- Découvrez comment utiliser les contraintes liées aux règles du benchmark CIS de Kubernetes.