Policy Controller est fourni avec une bibliothèque par défaut de modèles de contrainte qui peuvent être utilisés avec le lot NIST SP 800-53 Rev. 5 qui met en œuvre les contrôles répertoriés dans la Publication spéciale 800-53 Rev. 5 du NIST (National Institute of Standards and Technology). Ce bundle peut aider les entreprises à protéger leurs systèmes et leurs données contre diverses menaces en mettant en œuvre des règles de sécurité et de confidentialité prêtes à l'emploi.
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 GKE Enterprise et tâches courantes.
Contraintes du groupe de règles NIST SP 800-53 Rev. 5
Nom de la contrainte | Description de la contrainte | ID de commande |
---|---|---|
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Limite l'utilisation des secrets de type "basic-auth". | Attributs de sécurité et de confidentialité AC-16 |
nist-sp-800-53-r5-restrict-hostpath-volumes | Limite l'utilisation des volumes HostPath. | |
nist-sp-800-53-r5-restrict-rbac-subjects | Limite l'utilisation des noms dans les sujets RBAC aux valeurs autorisées. | Gestion de compte AC-2 |
nist-sp-800-53-r5-restrict-rbac-subjects | Limite l'utilisation des noms dans les sujets RBAC aux valeurs autorisées. | Application de l'accès AC-3 |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Limite l'utilisation des secrets de type "basic-auth". | Application du flux d'informations AC-4 |
nist-sp-800-53-r5-require-binauthz | Nécessite le webhook d'admission de validation d'autorisation binaire. | |
nist-sp-800-53-r5-require-namespace-network-policies | Nécessite que chaque espace de noms défini dans le cluster ait un objet NetworkPolicy. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Limite l'utilisation des volumes HostPath. | |
nist-sp-800-53-r5-require-binauthz | Nécessite le webhook d'admission de validation d'autorisation binaire. | Moindre privilège AC-6 |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Limite l'utilisation du rôle "cluster-admin". | |
nist-sp-800-53-r5-restrict-repos | Limite les images de conteneurs à une liste "dépôt" autorisée. | |
nist-sp-800-53-r5-restrict-role-wildcards | Limite l'utilisation des caractères génériques dans "Roles" et "ClusterRoles". | |
nist-sp-800-53-r5-require-binauthz | Nécessite le webhook d'admission de validation d'autorisation binaire. | Non-répudiation AU-10 |
nist-sp-800-53-r5-nodes-have-consistent-time | Garantit la cohérence et l'exactitude des heures sur les nœuds en n'autorisant que Container-Optimized OS (COS) ou Ubuntu comme image de l'OS. | Horodatages AU-8 |
nist-sp-800-53-r5-require-namespace-network-policies | Nécessite que chaque espace de noms défini dans le cluster ait un objet NetworkPolicy. | Connexions du système interne CA-9 |
nist-sp-800-53-r5-require-binauthz | Nécessite le webhook d'admission de validation d'autorisation binaire. | Composants signés CM-14 |
nist-sp-800-53-r5-enforce-config-management | Nécessite que Config Sync soit en cours d'exécution et que la prévention des dérives soit activée avec au moins un objet "RootSync" sur le cluster. | Configuration de référence CM-2 |
nist-sp-800-53-r5-require-managed-by-label | Nécessite que toutes les applications aient un libellé "app.kubernetes.io/managed-by" valide. | |
nist-sp-800-53-r5-apparmor | Limite les profils AppArmor autorisés pour les pods. | Contrôle des modifications de configuration CM-3 |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Limite l'utilisation des secrets de type "basic-auth". | |
nist-sp-800-53-r5-capabilities | Limite les fonctionnalités supplémentaires autorisées pour les pods. | |
nist-sp-800-53-r5-enforce-config-management | Nécessite que Config Sync soit en cours d'exécution et que la prévention des dérives soit activée avec au moins un objet "RootSync" sur le cluster. | |
nist-sp-800-53-r5-host-namespaces | Limite les conteneurs pour lesquels "hostPID" ou "hostIPC" est défini sur "true". | |
nist-sp-800-53-r5-host-network | Empêche l'exécution des conteneurs avec l'option "hostNetwork" définie sur "true". | |
nist-sp-800-53-r5-privileged-containers | Limite les conteneurs dont "securityContext.privileged" est défini sur "true". | |
nist-sp-800-53-r5-proc-mount-type | Nécessite les masques "/proc" par défaut pour les pods | |
nist-sp-800-53-r5-require-managed-by-label | Nécessite que toutes les applications aient un libellé "app.kubernetes.io/managed-by" valide. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Limite l'utilisation des volumes HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Limite les types de volumes installables à la liste autorisée. | |
nist-sp-800-53-r5-seccomp | Le profil Seccomp ne doit pas être explicitement défini sur "Non confiné". | |
nist-sp-800-53-r5-selinux | Limite la configuration SELinux pour les pods. | |
nist-sp-800-53-r5-sysctls | Limite les Sysctls autorisés pour les pods. | |
nist-sp-800-53-r5-enforce-config-management | Nécessite que Config Sync soit en cours d'exécution et que la prévention des dérives soit activée avec au moins un objet "RootSync" sur le cluster. | Analyse de l'impact sur la sécurité du CM-4 |
nist-sp-800-53-r5-require-managed-by-label | Nécessite que toutes les applications aient un libellé "app.kubernetes.io/managed-by" valide. | |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Limite l'utilisation du rôle "cluster-admin". | |
nist-sp-800-53-r5-enforce-config-management | Nécessite que Config Sync soit en cours d'exécution et que la prévention des dérives soit activée avec au moins un objet "RootSync" sur le cluster. | Restrictions d'accès concernant la modification CM-5 |
nist-sp-800-53-r5-require-managed-by-label | Nécessite que toutes les applications aient un libellé "app.kubernetes.io/managed-by" valide. | |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Limite l'utilisation du rôle "cluster-admin". | |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Limite l'utilisation des secrets de type "basic-auth". | Paramètres de configuration CM-6 |
nist-sp-800-53-r5-enforce-config-management | Nécessite que Config Sync soit en cours d'exécution et que la prévention des dérives soit activée avec au moins un objet "RootSync" sur le cluster. | |
nist-sp-800-53-r5-require-binauthz | Nécessite le webhook d'admission de validation d'autorisation binaire. | |
nist-sp-800-53-r5-require-managed-by-label | Nécessite que toutes les applications aient un libellé "app.kubernetes.io/managed-by" valide. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Limite l'utilisation des volumes HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Limite les types de volumes installables à la liste autorisée. | |
nist-sp-800-53-r5-apparmor | Limite les profils AppArmor autorisés pour les pods. | Plus faible fonctionnement de CM-7 |
nist-sp-800-53-r5-capabilities | Limite les fonctionnalités supplémentaires autorisées pour les pods. | |
nist-sp-800-53-r5-host-namespaces | Limite les conteneurs pour lesquels "hostPID" ou "hostIPC" est défini sur "true". | |
nist-sp-800-53-r5-host-network | Empêche l'exécution des conteneurs avec l'option "hostNetwork" définie sur "true". | |
nist-sp-800-53-r5-privileged-containers | Limite les conteneurs dont "securityContext.privileged" est défini sur "true". | |
nist-sp-800-53-r5-proc-mount-type | Nécessite les masques "/proc" par défaut pour les pods | |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Limite l'utilisation du rôle "cluster-admin". | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Limite l'utilisation des volumes HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Limite les types de volumes installables à la liste autorisée. | |
nist-sp-800-53-r5-seccomp | Le profil Seccomp ne doit pas être explicitement défini sur "Non confiné". | |
nist-sp-800-53-r5-selinux | Limite la configuration SELinux pour les pods. | |
nist-sp-800-53-r5-sysctls | Limite les Sysctls autorisés pour les pods. | |
nist-sp-800-53-r5-enforce-config-management | Nécessite que Config Sync soit en cours d'exécution et que la prévention des dérives soit activée avec au moins un objet "RootSync" sur le cluster. | Récupération et reconstitution du système d'information CP-10 |
nist-sp-800-53-r5-require-managed-by-label | Nécessite que toutes les applications aient un libellé "app.kubernetes.io/managed-by" valide. | |
nist-sp-800-53-r5-enforce-config-management | Nécessite que Config Sync soit en cours d'exécution et que la prévention des dérives soit activée avec au moins un objet "RootSync" sur le cluster. | Sauvegarde du système CP-9 |
nist-sp-800-53-r5-require-managed-by-label | Nécessite que toutes les applications aient un libellé "app.kubernetes.io/managed-by" valide. | |
nist-sp-800-53-r5-restrict-rbac-subjects | Limite l'utilisation des noms dans les sujets RBAC aux valeurs autorisées. | Identification et authentification IA-2 (utilisateurs organisationnels) |
nist-sp-800-53-r5-block-creation-with-default-serviceaccount | Limitez la création de ressources à l'aide d'un compte de service par défaut. | Gestion des identifiants IA-4 |
nist-sp-800-53-r5-restrict-rbac-subjects | Limite l'utilisation des noms dans les sujets RBAC aux valeurs autorisées. | |
nist-sp-800-53-r5-require-binauthz | Nécessite le webhook d'admission de validation d'autorisation binaire. | Gestion de l'authentificateur IA-5 |
nist-sp-800-53-r5-restrict-rbac-subjects | Limite l'utilisation des noms dans les sujets RBAC aux valeurs autorisées. | |
nist-sp-800-53-r5-restrict-rbac-subjects | Limite l'utilisation des noms dans les sujets RBAC aux valeurs autorisées. | Maintenance non locale MA-4 |
nist-sp-800-53-r5-enforce-config-management | Nécessite que Config Sync soit en cours d'exécution et que la prévention des dérives soit activée avec au moins un objet "RootSync" sur le cluster. | Règles et procédures PL-1 |
nist-sp-800-53-r5-require-managed-by-label | Nécessite que toutes les applications aient un libellé "app.kubernetes.io/managed-by" valide. | |
nist-sp-800-53-r5-require-binauthz | Nécessite le webhook d'admission de validation d'autorisation binaire. | Analyse des failles RA-5 |
nist-sp-800-53-r5-enforce-config-management | Nécessite que Config Sync soit en cours d'exécution et que la prévention des dérives soit activée avec au moins un objet "RootSync" sur le cluster. | Gestion de la configuration du développeur SA-10 |
nist-sp-800-53-r5-require-managed-by-label | Nécessite que toutes les applications aient un libellé "app.kubernetes.io/managed-by" valide. | |
nist-sp-800-53-r5-require-binauthz | Nécessite le webhook d'admission de validation d'autorisation binaire. | Chemin approuvé SA-11 |
nist-sp-800-53-r5-require-binauthz | Nécessite le webhook d'admission de validation d'autorisation binaire. | Cycle de vie de développement du système SA-3 |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Limite l'utilisation des secrets de type "basic-auth". | Principes d'ingénierie en matière de sécurité et de confidentialité SA-8 |
nist-sp-800-53-r5-restrict-hostpath-volumes | Limite l'utilisation des volumes HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Limite les types de volumes installables à la liste autorisée. | |
nist-sp-800-53-r5-require-binauthz | Nécessite le webhook d'admission de validation d'autorisation binaire. | Établissement et gestion des clés cryptographiques SC-12 |
nist-sp-800-53-r5-restrict-storageclass | Limite la classe "StorageClass" à une liste de "StorageClass" qui chiffrent par défaut. | Protection des informations au repos SC-28 |
nist-sp-800-53-r5-require-namespace-network-policies | Nécessite que chaque espace de noms défini dans le cluster ait un objet NetworkPolicy. | Informations SC-4 dans les ressources partagées |
nist-sp-800-53-r5-cpu-and-memory-limits-required | Les pods doivent spécifier des limites de processeur et de mémoire. | Disponibilité des ressources SC-6 |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Limite l'utilisation des secrets de type "basic-auth". | Protection des limites SC-7 |
nist-sp-800-53-r5-enforce-config-management | Nécessite que Config Sync soit en cours d'exécution et que la prévention des dérives soit activée avec au moins un objet "RootSync" sur le cluster. | |
nist-sp-800-53-r5-require-managed-by-label | Nécessite que toutes les applications aient un libellé "app.kubernetes.io/managed-by" valide. | |
nist-sp-800-53-r5-require-namespace-network-policies | Nécessite que chaque espace de noms défini dans le cluster ait un objet NetworkPolicy. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Limite l'utilisation des volumes HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Limite les types de volumes installables à la liste autorisée. | |
nist-sp-800-53-r5-asm-peer-authn-strict-mtls | S'assure que PeerAuthentications ne peut pas écraser le mode mTLS strict | Confidentialité et intégrité de la transmission SC-8 |
nist-sp-800-53-r5-require-binauthz | Nécessite le webhook d'admission de validation d'autorisation binaire. | Gestion et conservation des informations SI-12 |
nist-sp-800-53-r5-restrict-storageclass | Limite la classe "StorageClass" à une liste de "StorageClass" qui chiffrent par défaut. | |
nist-sp-800-53-r5-require-av-daemonset | Nécessite la présence d'un daemonset antivirus. | Protection contre le code malveillant SI-3 |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Limite l'utilisation des secrets de type "basic-auth". | Logiciel SI-7, micrologiciel et intégrité des informations |
nist-sp-800-53-r5-enforce-config-management | Nécessite que Config Sync soit en cours d'exécution et que la prévention des dérives soit activée avec au moins un objet "RootSync" sur le cluster. | |
nist-sp-800-53-r5-require-binauthz | Nécessite le webhook d'admission de validation d'autorisation binaire. | |
nist-sp-800-53-r5-require-managed-by-label | Nécessite que toutes les applications aient un libellé "app.kubernetes.io/managed-by" valide. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Limite l'utilisation des volumes HostPath. | |
nist-sp-800-53-r5-require-binauthz | Nécessite le webhook d'admission de validation d'autorisation binaire. | Provenance du SR-4 |
Avant de commencer
- Installez et initialisez Google Cloud CLI, qui fournit les commandes
gcloud
etkubectl
utilisées dans les présentes instructions. Si vous utilisez Cloud Shell, Google Cloud CLI est préinstallé. - Installez Policy Controller sur votre cluster avec la bibliothèque par défaut de modèles de contraintes. Vous devez également activer la compatibilité avec les contraintes référentielles, car ce bundle contient des contraintes référentielles.
Configurer Policy Controller pour les contraintes référentielles
Enregistrez le fichier manifeste YAML suivant dans un fichier sous le nom
policycontroller-config.yaml
. Le fichier manifeste configure Policy Controller pour surveiller des types d'objets spécifiques.apiVersion: config.gatekeeper.sh/v1alpha1 kind: Config metadata: name: config namespace: "gatekeeper-system" spec: sync: syncOnly: - group: "apps" version: "v1" kind: "DaemonSet" - group: "networking.k8s.io" version: "v1" kind: "NetworkPolicy" - group: "configsync.gke.io" version: "v1beta1" kind: "RootSync" - group: "storage.k8s.io" version: "v1" kind: "StorageClass" - group: "admissionregistration.k8s.io" version: "v1" kind: "ValidatingWebhookConfiguration"
Appliquez le fichier manifeste
policycontroller-config.yaml
:kubectl apply -f policycontroller-config.yaml
Configurer votre cluster et votre charge de travail
- L'activation et la configuration de Config Sync
, y compris du webhook d'admission de prévention de dérive, sont requises dans
nist-sp-800-53-r5-enforce-config-management
. - Vous devez ajouter une solution antivirus. Par défaut, un
daemonset
nomméclamav
est présent dans leclamav
namespace
; cependant, le nom et l'espace de noms dedaemonset
peut être personnalisé en fonction de votre implémentation dans la contraintenist-sp-800-53-r5-require-av-daemonset
. - Les images de conteneur sont limitées à une liste de dépôts autorisés, qui peut être personnalisée si nécessaire dans
nist-sp-800-53-r5-restrict-repos
. - Les nœuds doivent utiliser Container-Optimized OS ou Ubuntu pour leur image dans
nist-sp-800-53-r5-nodes-have-consistent-time
. - L'utilisation des classes de stockage est limitée à une liste autorisée, qui peut être personnalisée pour ajouter des classes supplémentaires avec chiffrement par défaut dans
nist-sp-800-53-r5-restrict-storageclass
. L'activation et la configuration de l'autorisation binaire sont requises dans
nist-sp-800-53-r5-require-binauthz
.
Effectuer l'audit du groupe de règles NIST SP 800-53 Rev. 5
Policy Controller vous permet d'appliquer des règles à votre cluster Kubernetes. Pour tester vos charges de travail et leur conformité avec les règles NIST SP 800-53 décrites dans le tableau précédent, vous pouvez déployer ces contraintes en mode "audit" pour révéler les cas de non-respect et, plus important, vous donner la possibilité de les corriger avant de les appliquer à votre cluster Kubernetes.
Vous pouvez appliquer ces règles en définissant le paramètre spec.enforcementAction
sur dryrun
à l'aide de kubectl, kpt ou Config Sync.
kubectl
(Facultatif) Prévisualisez les contraintes de règle avec kubectl :
kubectl kustomize https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-53-r5
Appliquez les contraintes de règle avec kubectl :
kubectl apply -k https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-53-r5
Le résultat est le suivant :
asmpeerauthnstrictmtls.constraints.gatekeeper.sh/nist-sp-800-53-r5-asm-peer-authn-strict-mtls created k8sallowedrepos.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-repos created k8sblockcreationwithdefaultserviceaccount.constraints.gatekeeper.sh/nist-sp-800-53-r5-block-creation-with-default-serviceaccount created k8sblockobjectsoftype.constraints.gatekeeper.sh/nist-sp-800-53-r5-block-secrets-of-type-basic-auth created k8senforceconfigmanagement.constraints.gatekeeper.sh/nist-sp-800-53-r5-enforce-config-management created k8spspapparmor.constraints.gatekeeper.sh/nist-sp-800-53-r5-apparmor created k8spspcapabilities.constraints.gatekeeper.sh/nist-sp-800-53-r5-capabilities created k8spspforbiddensysctls.constraints.gatekeeper.sh/nist-sp-800-53-r5-sysctls created k8spsphostfilesystem.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-hostpath-volumes created k8spsphostnamespace.constraints.gatekeeper.sh/nist-sp-800-53-r5-host-namespaces created k8spsphostnetworkingports.constraints.gatekeeper.sh/nist-sp-800-53-r5-host-network created k8spspprivilegedcontainer.constraints.gatekeeper.sh/nist-sp-800-53-r5-privileged-containers created k8spspprocmount.constraints.gatekeeper.sh/nist-sp-800-53-r5-proc-mount-type created k8spspselinuxv2.constraints.gatekeeper.sh/nist-sp-800-53-r5-selinux created k8spspseccomp.constraints.gatekeeper.sh/nist-sp-800-53-r5-seccomp created k8spspvolumetypes.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-volume-types created k8sprohibitrolewildcardaccess.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-role-wildcards created k8srequirebinauthz.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-binauthz created k8srequirecosnodeimage.constraints.gatekeeper.sh/nist-sp-800-53-r5-nodes-have-consistent-time created k8srequiredaemonsets.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-av-daemonset created k8srequirenamespacenetworkpolicies.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-namespace-network-policies created k8srequiredlabels.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-managed-by-label created k8srequiredresources.constraints.gatekeeper.sh/nist-sp-800-53-r5-cpu-and-memory-limits-required created k8srestrictrbacsubjects.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-rbac-subjects created k8srestrictrolebindings.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-clusteradmin-rolebindings created k8sstorageclass.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-storageclass created
Vérifiez que les contraintes de règles ont été installées et si des cas de non-respect existent dans le cluster :
kubectl get constraints -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5
Le résultat ressemble à ce qui suit :
NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspapparmor.constraints.gatekeeper.sh/nist-sp-800-53-r5-apparmor dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequirebinauthz.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-binauthz dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srestrictrbacsubjects.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-rbac-subjects dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspforbiddensysctls.constraints.gatekeeper.sh/nist-sp-800-53-r5-sysctls dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspvolumetypes.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-volume-types dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spsphostnetworkingports.constraints.gatekeeper.sh/nist-sp-800-53-r5-host-network dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spsphostnamespace.constraints.gatekeeper.sh/nist-sp-800-53-r5-host-namespaces dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequiredaemonsets.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-av-daemonset dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8sprohibitrolewildcardaccess.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-role-wildcards dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8sblockcreationwithdefaultserviceaccount.constraints.gatekeeper.sh/nist-sp-800-53-r5-block-creation-with-default-serviceaccount dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spsphostfilesystem.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-hostpath-volumes dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspseccomp.constraints.gatekeeper.sh/nist-sp-800-53-r5-seccomp dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS asmpeerauthnstrictmtls.constraints.gatekeeper.sh/nist-sp-800-53-r5-asm-peer-authn-strict-mtls dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequiredresources.constraints.gatekeeper.sh/nist-sp-800-53-r5-cpu-and-memory-limits-required dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspprocmount.constraints.gatekeeper.sh/nist-sp-800-53-r5-proc-mount-type dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8sblockobjectsoftype.constraints.gatekeeper.sh/nist-sp-800-53-r5-block-secrets-of-type-basic-auth dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequirenamespacenetworkpolicies.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-namespace-network-policies dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspcapabilities.constraints.gatekeeper.sh/nist-sp-800-53-r5-capabilities dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8sstorageclass.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-storageclass dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequiredlabels.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-managed-by-label dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspprivilegedcontainer.constraints.gatekeeper.sh/nist-sp-800-53-r5-privileged-containers dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8sallowedrepos.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-repos dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspselinuxv2.constraints.gatekeeper.sh/nist-sp-800-53-r5-selinux dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8senforceconfigmanagement.constraints.gatekeeper.sh/nist-sp-800-53-r5-enforce-config-management dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srestrictrolebindings.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-clusteradmin-rolebindings dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequirecosnodeimage.constraints.gatekeeper.sh/nist-sp-800-53-r5-nodes-have-consistent-time dryrun 0
kpt
Installez et configurez kpt.
kpt est utilisé dans ces instructions pour personnaliser et déployer les ressources Kubernetes.
Téléchargez le groupe de règles NIST SP 800-53 Rev. 5 depuis GitHub à l'aide de Kpt :
kpt pkg get https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-53-r5
Exécutez la fonction kpt
set-enforcement-action
pour définir l'action d'application des règles surdryrun
:kpt fn eval nist-sp-800-53-r5 -i gcr.io/kpt-fn/set-enforcement-action:v0.1 \ -- enforcementAction=dryrun
Initialisez le répertoire de travail avec kpt, qui crée une ressource pour suivre les modifications :
cd nist-sp-800-53-r5 kpt live init
Appliquez les contraintes de règles avec kpt :
kpt live apply
Vérifiez que les contraintes de règles ont été installées et si des cas de non-respect existent dans le cluster :
kpt live status --output table --poll-until current
L'état
CURRENT
confirme l'installation correcte des contraintes.
Config Sync
Installez et configurez kpt.
kpt est utilisé dans ces instructions pour personnaliser et déployer les ressources Kubernetes.
Les opérateurs qui utilisent Config Sync pour déployer des règles sur leurs clusters peuvent suivre ces instructions :
Accédez au répertoire de synchronisation pour Config Sync :
cd SYNC_ROOT_DIR
Pour créer ou ajouter
.gitignore
avecresourcegroup.yaml
, procédez comme suit :echo resourcegroup.yaml >> .gitignore
Créez un répertoire
policies
dédié :mkdir -p policies
Téléchargez le groupe de règles NIST SP 800-53 Rev. 5 depuis GitHub à l'aide de Kpt :
kpt pkg get https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-53-r5 policies/nist-sp-800-53-r5
Exécutez la fonction kpt
set-enforcement-action
pour définir l'action d'application des règles surdryrun
:kpt fn eval policies/nist-sp-800-53-r5 -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=dryrun
(Facultatif) Prévisualisez les contraintes de règles à créer :
kpt live init policies/nist-sp-800-53-r5 kpt live apply --dry-run policies/nist-sp-800-53-r5
Si votre répertoire de synchronisation pour Config Sync utilise Kustomize, ajoutez
policies/nist-sp-800-53-r5
à votre fichierkustomization.yaml
racine. Sinon, supprimez le fichierpolicies/nist-sp-800-53-r5/kustomization.yaml
:rm SYNC_ROOT_DIR/policies/nist-sp-800-53-r5/kustomization.yaml
Transférez les modifications au dépôt Config Sync :
git add SYNC_ROOT_DIR/policies/nist-sp-800-53-r5 git commit -m 'Adding NIST SP 800-53 Rev. 5 policy audit enforcement' git push
Vérifiez l'état de l'installation :
watch gcloud beta container fleet config-management status --project PROJECT_ID
L'état
SYNCED
confirme l'installation des règles .
Consulter les notifications de non-respect des règles
Une fois les contraintes de règle installées en mode audit, les cas de non-respect du cluster peuvent être visualisés dans l'interface utilisateur à l'aide du tableau de bord Policy Controller.
Vous pouvez également utiliser
kubectl
pour afficher les cas de non-respect sur le cluster à l'aide de la commande suivante :kubectl get constraint -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5 -o json | jq -cC '.items[]| [.metadata.name,.status.totalViolations]'
En cas de non-respect des règles, vous pouvez consulter la liste des messages de non-respect par contrainte avec :
kubectl get constraint -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5 -o json | jq -C '.items[]| select(.status.totalViolations>0)| [.metadata.name,.status.violations[]?]'
Modification de l'action d'application du lot de règles NIST SP 800-53 révision 5
Une fois que vous avez examiné les cas de non-respect des règles sur votre cluster, vous pouvez envisager de modifier le mode d'application afin que le contrôleur d'admission warn
active ou deny
bloque l'application des ressources non conformes sur le cluster.
kubectl
Utilisez kubectl pour définir la mesure coercitive des règles sur
warn
:kubectl get constraints -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5 -o name | xargs -I {} kubectl patch {} --type='json' -p='[{"op":"replace","path":"/spec/enforcementAction","value":"warn"}]'
Vérifiez que la mesure coercitive des contraintes de règle a été mise à jour :
kubectl get constraints -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5
kpt
Exécutez la fonction kpt
set-enforcement-action
pour définir la mesure coercitive des règles surwarn
:kpt fn eval -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=warn
Appliquez les contraintes de règles :
kpt live apply
Config Sync
Les opérateurs qui utilisent Config Sync pour déployer des règles sur leurs clusters peuvent suivre ces instructions :
Accédez au répertoire de synchronisation pour Config Sync :
cd SYNC_ROOT_DIR
Exécutez la fonction kpt
set-enforcement-action
pour définir la mesure coercitive des règles surwarn
:kpt fn eval policies/nist-sp-800-53-r5 -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=warn
Transférez les modifications au dépôt Config Sync :
git add SYNC_ROOT_DIR/policies/nist-sp-800-53-r5 git commit -m 'Adding NIST SP 800-53 Rev. 5 policy warn enforcement' git push
Vérifiez l'état de l'installation :
gcloud alpha anthos config sync repo list --project PROJECT_ID
Le dépôt qui s'affiche dans la colonne
SYNCED
confirme l'installation des règles.
Tester l'application des règles
Créez une ressource non conforme sur le cluster à l'aide de la commande suivante :
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: wp-non-compliant spec: containers: ‐ image: wordpress name: wordpress EOF
Le contrôleur d'admission doit générer un avertissement répertoriant les cas de violation des règles que cette ressource ne respecte pas, comme indiqué dans l'exemple suivant :
Warning: [nist-sp-800-53-r5-cpu-and-memory-limits-required] container <wordpress> does not have <{"cpu", "memory"}> limits defined Warning: [nist-sp-800-53-r5-restrict-repos] container <wordpress> has an invalid image repo <wordpress>, allowed repos are ["gcr.io/gke-release/", "gcr.io/anthos-baremetal-release/", "gcr.io/config-management-release/", "gcr.io/kubebuilder/", "gcr.io/gkeconnect/", "gke.gcr.io/"] pod/wp-non-compliant created
Supprimer le lot de règles NIST SP 800-53 Rev. 5
Si nécessaire, le lot de règles NIST SP 800-53 Rev. 5 peut être supprimé du cluster.
kubectl
Utilisez kubectl pour supprimer les règles :
kubectl delete constraint -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5
kpt
Supprimez les règles :
kpt live destroy
Config Sync
Les opérateurs qui utilisent Config Sync pour déployer des règles sur leurs clusters peuvent suivre ces instructions :
Transférez les modifications au dépôt Config Sync :
git rm -r SYNC_ROOT_DIR/policies/nist-sp-800-53-r5 git commit -m 'Removing NIST SP 800-53 Rev. 5 policies' git push
Vérifiez l'état :
gcloud alpha anthos config sync repo list --project PROJECT_ID
Le dépôt qui s'affiche dans la colonne
SYNCED
confirme la suppression des règles.