Policy Controller enthält eine Standardbibliothek mit Einschränkungsvorlagen, die mit dem NIST SP 800-190-Bundle verwendet werden können. Dieses Bundle implementiert Kontrollen, aufgeführt in Folgendem: Sonderveröffentlichung des National Institute of Standards and Technology (NIST) 800-190, Application Container Security Guide. Das Bundle soll Organisationen bei der Sicherheit von Anwendungscontainern unterstützen, einschließlich Image-Sicherheit, Containerlaufzeitsicherheit, Netzwerksicherheit und Hostsystemsicherheit.
Diese Seite richtet sich an IT-Administratoren und ‑Betreiber, die dafür sorgen möchten, dass alle auf der Cloud-Plattform ausgeführten Ressourcen die Compliance-Anforderungen des Unternehmens erfüllen, indem sie Automatisierungsfunktionen zur Prüfung oder Durchsetzung bereitstellen und aufrechterhalten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Google Cloud Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und ‑Aufgaben.
Auf dieser Seite finden Sie eine Anleitung zum manuellen Anwenden eines Richtlinienpakets. Alternativ können Sie Richtlinienpakete direkt anwenden.
Einschränkungen für NIST SP 800-190-Richtlinien-Bundle
| Name der Einschränkung | Beschreibung der Einschränkung | Einstellungs-ID: . | 
|---|---|---|
| nist-sp-800-190-restrict-rbac-subjects | Schränkt die Verwendung von Namen in RBAC auf zulässige Werte ein. | AC-2 Kontoverwaltung | 
| nist-sp-800-190-restrict-rbac-subjects | Schränkt die Verwendung von Namen in RBAC auf zulässige Werte ein. | AC-3 Zugriffserzwingung | 
| nist-sp-800-190-block-secrets-of-type-basic-auth | Schränkt die Verwendung von Secrets vom Typ "basic-auth" ein. | AC-4 Erzwingung des Informationsflusses | 
| nist-sp-800-190-require-binauthz | Erfordert validierendes Zulassungs-Webhook der Binärautorisierung. | |
| nist-sp-800-190-require-namespace-network-policies | Erfordert, dass jeder im Cluster definierte Namespace eine NetworkPolicy hat. | |
| nist-sp-800-190-restrict-hostpath-volumes | Schränkt die Verwendung von HostPath-Volumes ein. | |
| nist-sp-800-190-require-binauthz | Erfordert validierendes Zulassungs-Webhook der Binärautorisierung. | AC-6 – Geringste Berechtigung | 
| nist-sp-800-190-restrict-clusteradmin-rolebindings | Schränkt die Verwendung der Rolle „cluster-admin“ ein. | |
| nist-sp-800-190-restrict-repos | Beschränkt Container-Images auf eine zulässige „Repos“-Liste. | |
| nist-sp-800-190-restrict-role-wildcards | Schränkt die Verwendung von Platzhaltern in "Roles" und "ClusterRoles" ein. | |
| nist-sp-800-190-nodes-have-consistent-time | Sorgt für eine konsistente und korrekte Zeit auf Knoten, indem nur Container-Optimized OS(COS) oder Ubuntu als Betriebssystem-Image zugelassen werden. | AU-8 Zeitstempel | 
| nist-sp-800-190-require-namespace-network-policies | Erfordert, dass jeder im Cluster definierte Namespace eine NetworkPolicy hat. | CA-9 Interne Systemverbindungen | 
| nist-sp-800-190-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Vermeidung von Abweichungen mit mindestens einem "RootSync"-Objekt im Cluster aktiviert ist. | CM-2 Baseline-Konfiguration | 
| nist-sp-800-190-require-managed-by-label | Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben. | |
| nist-sp-800-190-apparmor | Schränkt die für Pods zulässigen AppArmor-Profile ein. | CM-3 Konfigurationsänderungssteuerung | 
| nist-sp-800-190-block-secrets-of-type-basic-auth | Schränkt die Verwendung von Secrets vom Typ "basic-auth" ein. | |
| nist-sp-800-190-capabilities | Schränkt zusätzliche Funktionen ein, die für Pods zulässig sind. | |
| nist-sp-800-190-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Vermeidung von Abweichungen mit mindestens einem "RootSync"-Objekt im Cluster aktiviert ist. | |
| nist-sp-800-190-host-namespaces | Schränkt Container ein, bei denen „HostPID“ oder „hostIPC“ auf „true“ festgelegt ist. | |
| nist-sp-800-190-host-network | Schränkt die Ausführung von Containern ein, bei denen das „hostNetwork“-Flag auf „true“ festgelegt ist. | |
| nist-sp-800-190-privileged-containers | Schränkt Containerbei denen „securityContext.privileged“ auf „true“ festgelegt ist, ein. | |
| nist-sp-800-190-proc-mount-type | Erfordert die standardmäßigen "/proc"-Masken für Pods | |
| nist-sp-800-190-require-managed-by-label | Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben. | |
| nist-sp-800-190-restrict-hostpath-volumes | Schränkt die Verwendung von HostPath-Volumes ein. | |
| nist-sp-800-190-restrict-volume-types | Beschränkt die bereitstellbaren Volume-Typen auf die zulässige Liste. | |
| nist-sp-800-190-seccomp | Das Seccomp-Profil darf nicht explizit auf „Unconfined“ festgelegt sein. | |
| nist-sp-800-190-selinux | Schränkt die SELinux-Konfiguration für Pods ein. | |
| nist-sp-800-190-sysctls | Schränkt die zulässigen Sysctls für Pods ein. | |
| nist-sp-800-190-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Vermeidung von Abweichungen mit mindestens einem "RootSync"-Objekt im Cluster aktiviert ist. | CM-4 Sicherheits-Wirkungsanalyse | 
| nist-sp-800-190-require-managed-by-label | Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben. | |
| nist-sp-800-190-restrict-clusteradmin-rolebindings | Schränkt die Verwendung der Rolle „cluster-admin“ ein. | |
| nist-sp-800-190-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Vermeidung von Abweichungen mit mindestens einem "RootSync"-Objekt im Cluster aktiviert ist. | CM-5-Zugriffsbeschränkungen für Änderungen | 
| nist-sp-800-190-require-managed-by-label | Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben. | |
| nist-sp-800-190-restrict-clusteradmin-rolebindings | Schränkt die Verwendung der Rolle „cluster-admin“ ein. | |
| nist-sp-800-190-block-secrets-of-type-basic-auth | Schränkt die Verwendung von Secrets vom Typ "basic-auth" ein. | CM-6 Konfigurationseinstellungen | 
| nist-sp-800-190-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Vermeidung von Abweichungen mit mindestens einem "RootSync"-Objekt im Cluster aktiviert ist. | |
| nist-sp-800-190-require-binauthz | Erfordert validierendes Zulassungs-Webhook der Binärautorisierung. | |
| nist-sp-800-190-require-managed-by-label | Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben. | |
| nist-sp-800-190-restrict-hostpath-volumes | Schränkt die Verwendung von HostPath-Volumes ein. | |
| nist-sp-800-190-restrict-volume-types | Beschränkt die bereitstellbaren Volume-Typen auf die zulässige Liste. | |
| nist-sp-800-190-apparmor | Schränkt die für Pods zulässigen AppArmor-Profile ein. | CM-7 Geringste funktionalität | 
| nist-sp-800-190-capabilities | Schränkt zusätzliche Funktionen ein, die für Pods zulässig sind. | |
| nist-sp-800-190-host-namespaces | Schränkt Container ein, bei denen „HostPID“ oder „hostIPC“ auf „true“ festgelegt ist. | |
| nist-sp-800-190-host-network | Schränkt die Ausführung von Containern ein, bei denen das „hostNetwork“-Flag auf „true“ festgelegt ist. | |
| nist-sp-800-190-privileged-containers | Schränkt Containerbei denen „securityContext.privileged“ auf „true“ festgelegt ist, ein. | |
| nist-sp-800-190-proc-mount-type | Erfordert die standardmäßigen "/proc"-Masken für Pods | |
| nist-sp-800-190-restrict-clusteradmin-rolebindings | Schränkt die Verwendung der Rolle „cluster-admin“ ein. | |
| nist-sp-800-190-restrict-hostpath-volumes | Schränkt die Verwendung von HostPath-Volumes ein. | |
| nist-sp-800-190-restrict-volume-types | Beschränkt die bereitstellbaren Volume-Typen auf die zulässige Liste. | |
| nist-sp-800-190-seccomp | Das Seccomp-Profil darf nicht explizit auf „Unconfined“ festgelegt sein. | |
| nist-sp-800-190-selinux | Schränkt die SELinux-Konfiguration für Pods ein. | |
| nist-sp-800-190-sysctls | Schränkt die zulässigen Sysctls für Pods ein. | |
| nist-sp-800-190-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Vermeidung von Abweichungen mit mindestens einem "RootSync"-Objekt im Cluster aktiviert ist. | CP-9 Systemsicherung | 
| nist-sp-800-190-require-managed-by-label | Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben. | |
| nist-sp-800-190-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Vermeidung von Abweichungen mit mindestens einem "RootSync"-Objekt im Cluster aktiviert ist. | CP-10 Informationssystemwiederherstellung und -wiederaufbau | 
| nist-sp-800-190-require-managed-by-label | Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben. | |
| nist-sp-800-190-restrict-rbac-subjects | Schränkt die Verwendung von Namen in RBAC auf zulässige Werte ein. | IA-2 Identifizierung und Authentifizierung (Organisationsnutzer) | 
| nist-sp-800-190-block-creation-with-default-serviceaccount | Beschränkt Ressourcenerstellung mit einem Standarddienstkonto. | IA-4 Kennungsverwaltung | 
| nist-sp-800-190-restrict-rbac-subjects | Schränkt die Verwendung von Namen in RBAC auf zulässige Werte ein. | |
| nist-sp-800-190-require-binauthz | Erfordert validierendes Zulassungs-Webhook der Binärautorisierung. | IA-5 Authenticator-Verwaltung | 
| nist-sp-800-190-restrict-rbac-subjects | Schränkt die Verwendung von Namen in RBAC auf zulässige Werte ein. | |
| nist-sp-800-190-restrict-rbac-subjects | Schränkt die Verwendung von Namen in RBAC auf zulässige Werte ein. | MA-4 – Wartung ohne physische Präsenz | 
| nist-sp-800-190-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Vermeidung von Abweichungen mit mindestens einem "RootSync"-Objekt im Cluster aktiviert ist. | SA-10 Entwickler-Konfigurationsverwaltung | 
| nist-sp-800-190-require-managed-by-label | Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben. | |
| nist-sp-800-190-require-namespace-network-policies | Erfordert, dass jeder im Cluster definierte Namespace eine NetworkPolicy hat. | SC-4 Informationen in freigegebenen Ressourcen | 
| nist-sp-800-190-cpu-and-memory-limits-required | Erfordert, dass für Pods CPU- und Arbeitsspeicherlimits angegeben werden. | SC-6 Ressourcenverfügbarkeit | 
| nist-sp-800-190-asm-peer-authn-strict-mtls | Sorgt dafür, dass PeerAuthentications keine strikte mTLS-Authentifizierung überschreiben können. | SC-8 Vertraulichkeit und Integrität von Übertragungen | 
| nist-sp-800-190-block-secrets-of-type-basic-auth | Schränkt die Verwendung von Secrets vom Typ "basic-auth" ein. | SI-7 Software-, Firmware- und Informationsintegrität | 
| nist-sp-800-190-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Vermeidung von Abweichungen mit mindestens einem "RootSync"-Objekt im Cluster aktiviert ist. | |
| nist-sp-800-190-require-binauthz | Erfordert validierendes Zulassungs-Webhook der Binärautorisierung. | |
| nist-sp-800-190-require-managed-by-label | Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben. | |
| nist-sp-800-190-restrict-hostpath-volumes | Schränkt die Verwendung von HostPath-Volumes ein. | 
Hinweise
- Installieren und initialisieren Sie die Google Cloud CLI, die die in dieser Anleitung verwendeten Befehle gcloudundkubectlenthält. Wenn Sie Cloud Shell verwenden, ist die Google Cloud CLI vorinstalliert.
- Installieren Sie den Policy Controller in Ihrem Cluster mit der Standardbibliothek an Einschränkungsvorlagen. Sie müssen auch die Unterstützung für referenzielle Einschränkungen aktivieren, da dieses Bundle referenzielle Einschränkungen enthält.
Policy Controller für referenzielle Einschränkungen konfigurieren
- Speichern Sie das folgende YAML-Manifest in einer Datei als - policycontroller-config.yaml. Das Manifest konfiguriert Policy Controller so, dass bestimmte Arten von Objekten beobachtet werden.- apiVersion: config.gatekeeper.sh/v1alpha1 kind: Config metadata: name: config namespace: "gatekeeper-system" spec: sync: syncOnly: - group: "networking.k8s.io" version: "v1" kind: "NetworkPolicy" - group: "configsync.gke.io" version: "v1beta1" kind: "RootSync" - group: "admissionregistration.k8s.io" version: "v1" kind: "ValidatingWebhookConfiguration"
- Wenden Sie das - policycontroller-config.yaml-Manifest an:- kubectl apply -f policycontroller-config.yaml 
Cluster und Arbeitslast konfigurieren
- Die Aktivierung und Konfiguration von Config Sync
, einschließlich des Zulassungs-Webhooks zur Drift-Prävention, ist in nist-sp-800-190-enforce-config-managementerforderlich.
- Container-Images sind auf eine zulässige Liste von Repositories beschränkt, die bei Bedarf in nist-sp-800-190-restrict-reposangepasst werden kann.
- Knoten müssen für ihr Image in nist-sp-800-190-nodes-have-consistent-timeContainer-Optimized OS oder Ubuntu verwenden.
- Die Aktivierung und Konfiguration der Binärautorisierung ist in - nist-sp-800-190-require-binauthzerforderlich.
NIST SP 800-190-Richtlinien-Bundle prüfen
Mit Policy Controller können Sie Richtlinien für Ihren Kubernetes-Cluster erzwingen. Damit Sie Ihre Arbeitslasten und deren Compliance in Bezug auf die in der vorherigen Tabelle beschriebenen NIST-Richtlinien testen können, können Sie diese Einschränkungen im „Audit”-Modus bereitstellen, um Verstöße aufzudecken und vor allem selbst eine Gelegenheit zu geben, um sie zu beheben, bevor Sie sie auf Ihrem Kubernetes-Cluster erzwingen.
Sie können diese Richtlinien mit kpt oder Config Sync festlegen, wobei spec.enforcementAction auf dryrun gesetzt ist.
kubectl
- (Optional) Sehen Sie sich eine Vorschau der Richtlinieneinschränkungen mit kubectl an: - kubectl kustomize https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-190 
- Wenden Sie die Richtlinieneinschränkungen mit kubectl an: - kubectl apply -k https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-190 - Die Ausgabe sieht so aus: - asmpeerauthnstrictmtls.constraints.gatekeeper.sh/nist-sp-800-190-asm-peer-authn-strict-mtls created k8sallowedrepos.constraints.gatekeeper.sh/nist-sp-800-190-restrict-repos created k8sblockcreationwithdefaultserviceaccount.constraints.gatekeeper.sh/nist-sp-800-190-block-creation-with-default-serviceaccount created k8sblockobjectsoftype.constraints.gatekeeper.sh/nist-sp-800-190-block-secrets-of-type-basic-auth created k8senforceconfigmanagement.constraints.gatekeeper.sh/nist-sp-800-190-enforce-config-management created k8spspapparmor.constraints.gatekeeper.sh/nist-sp-800-190-apparmor created k8spspcapabilities.constraints.gatekeeper.sh/nist-sp-800-190-capabilities created k8spspforbiddensysctls.constraints.gatekeeper.sh/nist-sp-800-190-sysctls created k8spsphostfilesystem.constraints.gatekeeper.sh/nist-sp-800-190-restrict-hostpath-volumes created k8spsphostnamespace.constraints.gatekeeper.sh/nist-sp-800-190-host-namespaces created k8spsphostnetworkingports.constraints.gatekeeper.sh/nist-sp-800-190-host-network created k8spspprivilegedcontainer.constraints.gatekeeper.sh/nist-sp-800-190-privileged-containers created k8spspprocmount.constraints.gatekeeper.sh/nist-sp-800-190-proc-mount-type created k8spspselinuxv2.constraints.gatekeeper.sh/nist-sp-800-190-selinux created k8spspseccomp.constraints.gatekeeper.sh/nist-sp-800-190-seccomp created k8spspvolumetypes.constraints.gatekeeper.sh/nist-sp-800-190-restrict-volume-types created k8sprohibitrolewildcardaccess.constraints.gatekeeper.sh/nist-sp-800-190-restrict-role-wildcards created k8srequirebinauthz.constraints.gatekeeper.sh/nist-sp-800-190-require-binauthz created k8srequirecosnodeimage.constraints.gatekeeper.sh/nist-sp-800-190-nodes-have-consistent-time created k8srequirenamespacenetworkpolicies.constraints.gatekeeper.sh/nist-sp-800-190-require-namespace-network-policies created k8srequiredlabels.constraints.gatekeeper.sh/nist-sp-800-190-require-managed-by-label created k8srequiredresources.constraints.gatekeeper.sh/nist-sp-800-190-cpu-and-memory-limits-required created k8srestrictrbacsubjects.constraints.gatekeeper.sh/nist-sp-800-190-restrict-rbac-subjects created k8srestrictrolebindings.constraints.gatekeeper.sh/nist-sp-800-190-restrict-clusteradmin-rolebindings created 
- Prüfen Sie, ob Richtlinieneinschränkungen installiert wurden, und prüfen Sie, ob im Cluster Verstöße vorliegen: - kubectl get constraints -l policycontroller.gke.io/bundleName=nist-sp-800-190 - Die Ausgabe sieht in etwa so aus: - NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspapparmor.constraints.gatekeeper.sh/nist-sp-800-190-apparmor dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequirebinauthz.constraints.gatekeeper.sh/nist-sp-800-190-require-binauthz dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srestrictrbacsubjects.constraints.gatekeeper.sh/nist-sp-800-190-restrict-rbac-subjects dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspforbiddensysctls.constraints.gatekeeper.sh/nist-sp-800-190-sysctls dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspvolumetypes.constraints.gatekeeper.sh/nist-sp-800-190-restrict-volume-types dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spsphostnetworkingports.constraints.gatekeeper.sh/nist-sp-800-190-host-network dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spsphostnamespace.constraints.gatekeeper.sh/nist-sp-800-190-host-namespaces dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8sprohibitrolewildcardaccess.constraints.gatekeeper.sh/nist-sp-800-190-restrict-role-wildcards dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8sblockcreationwithdefaultserviceaccount.constraints.gatekeeper.sh/nist-sp-800-190-block-creation-with-default-serviceaccount dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spsphostfilesystem.constraints.gatekeeper.sh/nist-sp-800-190-restrict-hostpath-volumes dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspseccomp.constraints.gatekeeper.sh/nist-sp-800-190-seccomp dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS asmpeerauthnstrictmtls.constraints.gatekeeper.sh/nist-sp-800-190-asm-peer-authn-strict-mtls dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequiredresources.constraints.gatekeeper.sh/nist-sp-800-190-cpu-and-memory-limits-required dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspprocmount.constraints.gatekeeper.sh/nist-sp-800-190-proc-mount-type dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8sblockobjectsoftype.constraints.gatekeeper.sh/nist-sp-800-190-block-secrets-of-type-basic-auth dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequirenamespacenetworkpolicies.constraints.gatekeeper.sh/nist-sp-800-190-require-namespace-network-policies dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspcapabilities.constraints.gatekeeper.sh/nist-sp-800-190-capabilities dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequiredlabels.constraints.gatekeeper.sh/nist-sp-800-190-require-managed-by-label dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspprivilegedcontainer.constraints.gatekeeper.sh/nist-sp-800-190-privileged-containers dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8sallowedrepos.constraints.gatekeeper.sh/nist-sp-800-190-restrict-repos dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspselinuxv2.constraints.gatekeeper.sh/nist-sp-800-190-selinux dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8senforceconfigmanagement.constraints.gatekeeper.sh/nist-sp-800-190-enforce-config-management dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srestrictrolebindings.constraints.gatekeeper.sh/nist-sp-800-190-restrict-clusteradmin-rolebindings dryrun 0 
KPT
- Installieren und richten Sie kpt ein. - kpt wird in dieser Anleitung verwendet, um Kubernetes-Ressourcen anzupassen und bereitzustellen. 
- Laden Sie das NIST SP 800-190-Richtlinien-Bundle von GitHub mit kpt herunter: - kpt pkg get https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-190 
- Führen Sie die kpt-Funktion - set-enforcement-actionaus, um die Erzwingungsaktion der Richtlinien auf- dryrunfestzulegen:- kpt fn eval nist-sp-800-190 -i gcr.io/kpt-fn/set-enforcement-action:v0.1 \ -- enforcementAction=dryrun 
- Initialisieren Sie das Arbeitsverzeichnis mit kpt, wodurch eine Ressource erstellt wird, um Änderungen verfolgen zu können: - cd nist-sp-800-190 kpt live init 
- Wenden Sie die Richtlinieneinschränkungen mit kpt an: - kpt live apply 
- Prüfen Sie, ob Richtlinieneinschränkungen installiert wurden, und prüfen Sie, ob im Cluster Verstöße vorliegen: - kpt live status --output table --poll-until current - Der Status - CURRENTbestätigt die erfolgreiche Installation der Einschränkungen.
Config Sync
- Installieren und richten Sie kpt ein. - kpt wird in dieser Anleitung verwendet, um Kubernetes-Ressourcen anzupassen und bereitzustellen. - Operatoren, die Config Sync zum Bereitstellen von Richtlinien für ihre Cluster verwenden, können die folgende Anleitung verwenden: 
- Wechseln Sie in das Synchronisierungsverzeichnis für Config Sync: - cd SYNC_ROOT_DIR - So erstellen Sie - resourcegroup.yamloder hängen es an- .gitignorean:- echo resourcegroup.yaml >> .gitignore 
- Erstellen Sie ein dediziertes - policies-Verzeichnis:- mkdir -p policies 
- Laden Sie das NIST SP 800-190-Richtlinien-Bundle von GitHub mit kpt herunter: - kpt pkg get https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-190 policies/nist-sp-800-190 
- Führen Sie die kpt-Funktion - set-enforcement-actionaus, um die Erzwingungsaktion der Richtlinien auf- dryrunfestzulegen:- kpt fn eval policies/nist-sp-800-190 -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=dryrun 
- (Optional) Sehen Sie sich eine Vorschau der Richtlinieneinschränkungen an, die erstellt werden sollen: - kpt live init policies/nist-sp-800-190 kpt live apply --dry-run policies/nist-sp-800-190 
- Wenn Ihr Synchronisierungsverzeichnis für Config Sync Kustomize verwendet, fügen Sie - policies/nist-sp-800-190Ihrer Stamm-- kustomization.yamlhinzu. Andernfalls entfernen Sie die Datei- policies/nist-sp-800-190/kustomization.yaml:- rm SYNC_ROOT_DIR/policies/nist-sp-800-190/kustomization.yaml 
- Übertragen Sie Änderungen per Push in das Config Sync-Repository: - git add SYNC_ROOT_DIR/policies/nist-sp-800-190 git commit -m 'Adding NIST SP 800-190 policy audit enforcement' git push 
- Prüfen Sie den Status der Installation: - watch gcloud beta container fleet config-management status --project PROJECT_ID - Der Status - SYNCEDbestätigt die Installation der Richtlinien.
Richtlinienverstöße ansehen
Sobald die Richtlinieneinschränkungen im Prüfmodus installiert sind, können Verstöße im Cluster in der UI über das Policy Controller-Dashboard angezeigt werden.
- Mit - kubectlkönnen Sie auch Verstöße im Cluster mit dem folgenden Befehl aufrufen:- kubectl get constraint -l policycontroller.gke.io/bundleName=nist-sp-800-190 -o json | jq -cC '.items[]| [.metadata.name,.status.totalViolations]' 
- Wenn Verstöße vorhanden sind, kann eine Liste der Verstoßmeldungen pro Einschränkung angezeigt werden, dazu nutzen Sie: - kubectl get constraint -l policycontroller.gke.io/bundleName=nist-sp-800-190 -o json | jq -C '.items[]| select(.status.totalViolations>0)| [.metadata.name,.status.violations[]?]' 
Maßnahme für das Richtlinien-Bundle NIST SP 800-190 ändern
Nachdem Sie die Richtlinienverstöße in Ihrem Cluster überprüft haben, können Sie den Erzwingungsmodus ändern, sodass der Zulassungs-Controller entweder den Modus warn aktiviert oder sogar deny verhindert, dass nicht konforme Ressourcen angewendet werden auf das Clusters.
kubectl
- Verwenden Sie kubectl, um die Maßnahme der Richtlinien auf - denyfestzulegen:- kubectl get constraints -l policycontroller.gke.io/bundleName=nist-sp-800-190 -o name | xargs -I {} kubectl patch {} --type='json' -p='[{"op":"replace","path":"/spec/enforcementAction","value":"warn"}]'
- Prüfen Sie, ob die Maßnahme für Richtlinieneinschränkungen aktualisiert wurde: - kubectl get constraints -l policycontroller.gke.io/bundleName=nist-sp-800-190 
KPT
- Führen Sie die kpt-Funktion - set-enforcement-actionaus, um die Erzwingungsaktion der Richtlinien auf- denyfestzulegen:- kpt fn eval -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=deny 
- Wenden Sie die Richtlinieneinschränkungen an: - kpt live apply 
Config Sync
Operatoren, die Config Sync zum Bereitstellen von Richtlinien für ihre Cluster verwenden, können die folgende Anleitung verwenden:
- Wechseln Sie in das Synchronisierungsverzeichnis für Config Sync: - cd SYNC_ROOT_DIR 
- Führen Sie die kpt-Funktion - set-enforcement-actionaus, um die Erzwingungsaktion der Richtlinien auf- denyfestzulegen:- kpt fn eval policies/nist-sp-800-190 -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=deny 
- Übertragen Sie Änderungen per Push in das Config Sync-Repository: - git add SYNC_ROOT_DIR/policies/nist-sp-800-190 git commit -m 'Adding NIST SP 800-190 policy warn enforcement' git push 
- Prüfen Sie den Status der Installation: - nomos status - Der Cluster sollte den Status - SYNCEDmit den installierten Richtlinien anzeigen.
Richtlinienerzwingung testen
Erstellen Sie mit dem folgenden Befehl eine nicht konforme Ressource im Cluster:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
  name: wp-non-compliant
spec:
  containers:
    ‐ image: wordpress
      name: wordpress
EOF
Die Zugangssteuerung sollte eine Fehlermeldung ausgeben, in der die Richtlinienverstöße aufgeführt sind, gegen die diese Ressource verstößt, wie im folgenden Beispiel gezeigt:
Warning: [nist-sp-800-190-cpu-and-memory-limits-required] container <wordpress> does not have <{"cpu", "memory"}> limits defined
Warning: [nist-sp-800-190-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
NIST SP 800-190-Richtlinien-Bundle entfernen
Bei Bedarf kann das Richtlinien-Bundle NIST SP 800-190 aus dem Cluster entfernt werden.
kubectl
- Verwenden Sie kubectl, um die Richtlinien zu entfernen: - kubectl delete constraint -l policycontroller.gke.io/bundleName=nist-sp-800-190 
KPT
- Entfernen Sie die Richtlinien: - kpt live destroy 
Config Sync
Operatoren, die Config Sync zum Bereitstellen von Richtlinien für ihre Cluster verwenden, können die folgende Anleitung verwenden:
- Übertragen Sie Änderungen per Push in das Config Sync-Repository: - git rm -r SYNC_ROOT_DIR/policies/nist-sp-800-190 git commit -m 'Removing NIST SP 800-190 policies' git push 
- Prüfen Sie den Status: - nomos status - Der Cluster sollte den Status - SYNCEDhaben und die Ressourcen sollten entfernt sein.