Bibliothèque de modèles de contrainte

Les modèles de contrainte vous permettent de définir le fonctionnement d'une contrainte mais délèguent la définition des spécificités de la contrainte à un individu ou à un groupe ayant une expertise en la matière. En plus de séparer les divers problèmes, cette approche sépare également la logique de la contrainte de sa définition.

Les modèles de contrainte suivants sont inclus dans Anthos Policy Controller. Vous pouvez également parcourir la bibliothèque de modèles de contrainte dans le dépôt Gatekeeper.

anthos-service-mesh

AllowedServicePortName

Nécessite que le nom des ports de service comporte un préfixe issu d'une liste spécifiée.

Nom Type
préfixes tableau

DestinationRuleTLSEnabled

Interdit la désactivation du protocole TLS pour tous les hôtes et sous-ensembles d'hôtes dans les DestinationRules d'Istio.

DisallowedAuthzPrefix

Nécessite que les comptes principaux et les espaces de noms des règles AuthorizationPolicy d'Istio ne comportent pas de préfixe provenant d'une liste spécifiée.

Nom Type
disallowedprefixes tableau

PolicyStrictOnly

Exige que la règle d'authentification d'Istio spécifie des pairs avec le protocole TLS mutuel STRICT.

SourceNotAllAuthz

Nécessite que les comptes principaux sources des règles AuthorizationPolicy d'Istio soient définis sur autre chose que "*".

etc

GCPStorageLocationConstraintV1

Limite le locations autorisé pour les ressources StorageBucket Config Connector. Les noms de buckets de la liste exemptions sont exemptés.

Nom Type
exceptions tableau
locations tableau

K8sBlockProcessNamespaceSharing

Interdit les spécifications de pod quand shareProcessNamespace est défini sur true. Cela permet d'éviter des scénarios dans lesquels tous les conteneurs d'un pod partagent un espace de noms PID et peuvent accéder au système de fichiers et à la mémoire de chacun d'entre eux.

K8sDisallowedRoleBindingSubjects

Interdit les objets RoleBinding ou ClusterRoleBinding avec les sujets correspondant à un disallowedSubjects transmis en tant que paramètre.

Nom Type
disallowedSubjects tableau

K8sEmptyDirHasSizeLimit

Nécessite que les volumes emptyDir spécifient un sizeLimit. Vous pouvez également spécifier un paramètre maxSizeLimit dans la contrainte pour indiquer une limite de taille maximale autorisée.

Nom Type
maxSizeLimit chaîne

K8sLocalStorageRequireSafeToEvict

Nécessite que les pods qui utilisent un stockage local (emptyDir ou hostPath) comportent l'annotation "cluster-autoscaler.kubernetes.io/safe-to-evict": "true". Cluster Autoscaler ne supprime pas les pods qui ne comportent pas cette annotation.

K8sMemoryRequestEqualsLimit

Favorise la stabilité du pod en exigeant que la mémoire demandée de tous les conteneurs soit exactement égale à la limite de mémoire. Ainsi, les pods ne sont jamais dans un état où l'utilisation de mémoire dépasse la quantité demandée. Kubernetes peut arrêter les pods qui sont dans cet état lorsque la mémoire est nécessaire.

K8sNoExternalServices

Interdit la création de ressources Gateway, Ingress et Service qui exposent les charges de travail à des adresses IP externes

  • Gateway : toutes les ressources du groupe networking.istio.io sont interdites.
  • Ingress : toutes les ressources du groupe extensions ou networking.k8s.io sont interdites.
  • Service : toutes les ressources de type LoadBalancer doivent avoir une annotation Internal. Tout externalIPs doit appartenir aux CIDR spécifiés par le paramètre internalCIDRs.

Nom Type
internalCIDRs tableau

K8sRestrictLabels

Interdit les libellés pour les ressources. Les exceptions peuvent être spécifiées par groupe, genre, espace de noms et nom.

Nom Type
exceptions tableau
restrictedLabels tableau

gatekeeper-general

K8sAllowedRepos

Nécessite que les images de conteneur commencent par une chaîne repo issue d'une liste spécifiée.

Nom Type
repos tableau

K8sBlockNodePort

Interdit tous les services de type NodePort.

K8sContainerLimits

Exige des limites de mémoire et de processeur pour les conteneurs, avec une quantité maximale spécifiée.

Nom Type
processeur chaîne
mémoire chaîne

K8sContainerRatios

Définit un ratio maximal pour les limites de ressources de conteneurs des requêtes.

Nom Type
ratio chaîne

K8sHttpsOnly

Exige que les ressources Ingress soient de type HTTPS uniquement. La configuration TLS doit être définie et l'annotation kubernetes.io/ingress.allow-http doit être égale à la valeur "false".

K8sImageDigests

Exige que les images de conteneur contiennent un condensé.

K8sRequiredLabels

Exige que toutes les ressources contiennent un libellé spécifié avec une valeur correspondant à une expression régulière fournie.

Nom Type
labels tableau
Message chaîne

K8sRequiredProbes

Exige que les pods fassent l'objet de vérifications d'aptitude et/ou d'activité.

Nom Type
probeTypes tableau
vérifications tableau

K8sUniqueIngressHost

Exige que tous les hôtes Ingress soient uniques.

K8sUniqueServiceSelector

Exige que les Services aient des sélecteurs uniques au sein d'un espace de noms.

cis-k8s

K8sNoEnvVarSecrets

Interdit les secrets en tant que variables d'environnement dans les définitions de conteneur. Vous pouvez utiliser à la place des fichiers secrets installés dans des volumes de données.

K8sPodsRequireSecurityContext

Nécessite que tous les pods et les conteneurs aient un contexte SecurityContext défini au niveau du pod ou du conteneur.

K8sProhibitRoleWildcardAccess

Requiert que Roles et ClusterRole ne définissent pas l'accès aux ressources sur un caractère générique ("*").

K8sRequireNamespaceNetworkPolicies

Nécessite que chaque espace de noms défini dans le cluster ait un objet NetworkPolicy

K8sRestrictNamespaces

Empêche les ressources d'utiliser des espaces de noms répertoriés dans le paramètre restrictedNamespaces. Les ressources peuvent contourner cette restriction en utilisant un labelSelector.

Nom Type
restrictedNamespaces tableau

K8sRestrictRoleBindings

Empêche ClusterRoleBinding et RoleBinding de référencer un objet Role ou ClusterRole spécifié dans les contraintes. Les exceptions peuvent être répertoriées en tant que allowedSubjects dans la contrainte.

Nom Type
allowedSubjects tableau
restrictedRole objet

pod-security-policy

K8sPSPAllowPrivilegeEscalationContainer

Contrôle la limite de passage aux droits racine.

K8sPSPAllowedUsers

Contrôle les ID d'utilisateur et de groupe du conteneur.

Nom Type
fsGroup objet
runAsGroup objet
runAsUser objet
supplementalGroups objet

K8sPSPAppArmor

Contrôle le profil AppArmor utilisé par les conteneurs.

Nom Type
allowedProfiles tableau

K8sPSPCapabilities

Contrôle les capacités Linux.

Nom Type
allowedCapabilities tableau
requiredDropCapabilities tableau

K8sPSPFSGroup

Contrôle l'allocation d'un FSGroup qui est propriétaire des volumes du pod.

Nom Type
Plages tableau
rule chaîne

K8sPSPFlexVolumes

Contrôle la liste d'autorisation des pilotes Flexvolume.

Nom Type
allowedFlexVolumes tableau

K8sPSPForbiddenSysctls

Contrôle le profil sysctl utilisé par les conteneurs.

Nom Type
forbiddenSysctls tableau

K8sPSPHostFilesystem

Contrôle l'utilisation du système de fichiers hôte.

Nom Type
allowedHostPaths tableau

K8sPSPHostNamespace

Contrôle l'utilisation des espaces de noms d'hôte.

K8sPSPHostNetworkingPorts

Contrôle l'utilisation du réseau et des ports de l'hôte.

Nom Type
hostNetwork boolean
max Entier
min Entier

K8sPSPPrivilegedContainer

Contrôle l'exécution de conteneurs privilégiés.

K8sPSPProcMount

Contrôle les types Allowed Proc Mount pour le conteneur.

Nom Type
procMount chaîne

K8sPSPReadOnlyRootFilesystem

Requiert l'utilisation d'un système de fichiers racine en lecture seule.

K8sPSPSELinuxV2

Contrôle le contexte SELinux du conteneur.

Nom Type
allowedSELinuxOptions tableau

K8sPSPSeccomp

Contrôle le profil seccomp utilisé par les conteneurs.

Nom Type
allowedProfiles tableau

K8sPSPVolumeTypes

Contrôle l'utilisation des types de volumes.

Nom Type
volumes tableau

pod-security-policy-deprecated

K8sPSPSELinux

Contrôle le contexte SELinux du conteneur.

Nom Type
allowedSELinuxOptions objet

Étape suivante