NIST SP 800-53 Rev. 5-Richtlinieneinschränkungen verwenden
Policy Controller enthält eine Standardbibliothek mit Einschränkungsvorlagen, die mit dem NIST SP 800-53 Rev. 5-Bundle verwendet werden können. Dieses Paket enthält Kontrollen, die in der Sonderveröffentlichung des National Institute of Standards and Technology (NIST) 800-53 Rev. 5 aufgeführt sind. Das Bundle kann Organisationen dabei helfen, ihre Systeme und Daten durch die Implementierung sofort einsatzbereiter Sicherheits- und Datenschutzrichtlinien vor einer Vielzahl von Bedrohungen zu schützen.
Einschränkungen für NIST SP 800-53 Rev. 5-Richtlinien-Bundles
Name der Einschränkung | Beschreibung der Einschränkung | Einstellungs-ID |
---|---|---|
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Beschränkt die Verwendung von Secrets vom Typ „basic-auth“. | AC-16-Attribute für Sicherheit und Datenschutz |
nist-sp-800-53-r5-restrict-hostpath-volumes | Schränkt die Verwendung von HostPath-Volumes ein. | |
nist-sp-800-53-r5-restrict-rbac-subjects | Beschränkt die Verwendung von Namen in RBAC-Subjekten auf zulässige Werte. | AC-2-Kontoverwaltung |
nist-sp-800-53-r5-restrict-rbac-subjects | Beschränkt die Verwendung von Namen in RBAC-Subjekten auf zulässige Werte. | AC-3-Zugriffserzwingung |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Beschränkt die Verwendung von Secrets vom Typ „basic-auth“. | AC-4: Durchsetzung des Informationsflusses |
nist-sp-800-53-r5-require-binauthz | Erfordert den Validierungs-Webhook der Binärautorisierung. | |
nist-sp-800-53-r5-require-namespace-network-policies | Erfordert, dass jeder im Cluster definierte Namespace eine NetworkPolicy hat. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Schränkt die Verwendung von HostPath-Volumes ein. | |
nist-sp-800-53-r5-require-binauthz | Erfordert den Validierungs-Webhook der Binärautorisierung. | AC-6 Minimale Berechtigung |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Beschränkt die Verwendung der Rolle „cluster-admin“. | |
nist-sp-800-53-r5-restrict-repos | Beschränkt Container-Images auf eine zulässige Liste von Repositories. | |
nist-sp-800-53-r5-restrict-role-wildcards | Beschränkt die Verwendung von Platzhaltern in „Roles“ und „ClusterRoles“. | |
nist-sp-800-53-r5-require-binauthz | Erfordert den Validierungs-Webhook der Binärautorisierung. | AU-10 – Nachweisbarkeit |
nist-sp-800-53-r5-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 wird. | AU-8-Zeitstempel |
nist-sp-800-53-r5-require-namespace-network-policies | Erfordert, dass jeder im Cluster definierte Namespace eine NetworkPolicy hat. | Interne CA-9-Systemverbindungen |
nist-sp-800-53-r5-require-binauthz | Erfordert den Validierungs-Webhook der Binärautorisierung. | Signierte CM-14-Komponenten |
nist-sp-800-53-r5-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Drift Prevention mit mindestens einem „RootSync“-Objekt im Cluster aktiviert ist. | CM-2-Baseline-Konfiguration |
nist-sp-800-53-r5-require-managed-by-label | Erfordert, dass alle Apps ein gültiges Label „app.kubernetes.io/managed-by“ haben. | |
nist-sp-800-53-r5-apparmor | Schränkt die für Pods zulässigen AppArmor-Profile ein. | CM3-Konfigurationsänderungssteuerung |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Beschränkt die Verwendung von Secrets vom Typ „basic-auth“. | |
nist-sp-800-53-r5-capabilities | Schränkt zusätzliche für Pods zulässige Funktionen ein. | |
nist-sp-800-53-r5-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Drift Prevention mit mindestens einem „RootSync“-Objekt im Cluster aktiviert ist. | |
nist-sp-800-53-r5-host-namespaces | Schränkt Container ein, bei denen „hostPID“ oder „hostIPC“ auf „true“ festgelegt ist. | |
nist-sp-800-53-r5-host-network | Schränkt die Ausführung von Containern mit dem Flag „hostNetwork“ auf „true“ ein. | |
nist-sp-800-53-r5-privileged-containers | Schränkt Container ein, wobei „securityContext.privileged“ auf „true“ festgelegt ist. | |
nist-sp-800-53-r5-proc-mount-type | Erfordert die standardmäßigen „/proc“-Masken für Pods | |
nist-sp-800-53-r5-require-managed-by-label | Erfordert, dass alle Apps ein gültiges Label „app.kubernetes.io/managed-by“ haben. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Schränkt die Verwendung von HostPath-Volumes ein. | |
nist-sp-800-53-r5-restrict-volume-types | Schränkt die Typen der mountbaren Volumes auf die Liste der zulässigen Volumes ein. | |
nist-sp-800-53-r5-seccomp | Das Seccomp-Profil darf nicht explizit auf „Unconfined“ festgelegt werden. | |
nist-sp-800-53-r5-selinux | Schränkt die SELinux-Konfiguration für Pods ein. | |
nist-sp-800-53-r5-sysctls | Schränkt die zulässigen Systeme für Pods ein. | |
nist-sp-800-53-r5-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Drift Prevention mit mindestens einem „RootSync“-Objekt im Cluster aktiviert ist. | Analyse von Auswirkungen auf die Sicherheit in CM-4 |
nist-sp-800-53-r5-require-managed-by-label | Erfordert, dass alle Apps ein gültiges Label „app.kubernetes.io/managed-by“ haben. | |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Beschränkt die Verwendung der Rolle „cluster-admin“. | |
nist-sp-800-53-r5-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Drift Prevention mit mindestens einem „RootSync“-Objekt im Cluster aktiviert ist. | CM-5: Zugriffsbeschränkungen für Änderungen |
nist-sp-800-53-r5-require-managed-by-label | Erfordert, dass alle Apps ein gültiges Label „app.kubernetes.io/managed-by“ haben. | |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Beschränkt die Verwendung der Rolle „cluster-admin“. | |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Beschränkt die Verwendung von Secrets vom Typ „basic-auth“. | CM-6-Konfigurationseinstellungen |
nist-sp-800-53-r5-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Drift Prevention mit mindestens einem „RootSync“-Objekt im Cluster aktiviert ist. | |
nist-sp-800-53-r5-require-binauthz | Erfordert den Validierungs-Webhook der Binärautorisierung. | |
nist-sp-800-53-r5-require-managed-by-label | Erfordert, dass alle Apps ein gültiges Label „app.kubernetes.io/managed-by“ haben. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Schränkt die Verwendung von HostPath-Volumes ein. | |
nist-sp-800-53-r5-restrict-volume-types | Schränkt die Typen der mountbaren Volumes auf die Liste der zulässigen Volumes ein. | |
nist-sp-800-53-r5-apparmor | Schränkt die für Pods zulässigen AppArmor-Profile ein. | CM-7 – kleinste Funktionalität |
nist-sp-800-53-r5-capabilities | Schränkt zusätzliche für Pods zulässige Funktionen ein. | |
nist-sp-800-53-r5-host-namespaces | Schränkt Container ein, bei denen „hostPID“ oder „hostIPC“ auf „true“ festgelegt ist. | |
nist-sp-800-53-r5-host-network | Schränkt die Ausführung von Containern mit dem Flag „hostNetwork“ auf „true“ ein. | |
nist-sp-800-53-r5-privileged-containers | Schränkt Container ein, wobei „securityContext.privileged“ auf „true“ festgelegt ist. | |
nist-sp-800-53-r5-proc-mount-type | Erfordert die standardmäßigen „/proc“-Masken für Pods | |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Beschränkt die Verwendung der Rolle „cluster-admin“. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Schränkt die Verwendung von HostPath-Volumes ein. | |
nist-sp-800-53-r5-restrict-volume-types | Schränkt die Typen der mountbaren Volumes auf die Liste der zulässigen Volumes ein. | |
nist-sp-800-53-r5-seccomp | Das Seccomp-Profil darf nicht explizit auf „Unconfined“ festgelegt werden. | |
nist-sp-800-53-r5-selinux | Schränkt die SELinux-Konfiguration für Pods ein. | |
nist-sp-800-53-r5-sysctls | Schränkt die zulässigen Systeme für Pods ein. | |
nist-sp-800-53-r5-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Drift Prevention mit mindestens einem „RootSync“-Objekt im Cluster aktiviert ist. | Wiederherstellung und Wiederherstellung des CP-10-Informationssystems |
nist-sp-800-53-r5-require-managed-by-label | Erfordert, dass alle Apps ein gültiges Label „app.kubernetes.io/managed-by“ haben. | |
nist-sp-800-53-r5-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Drift Prevention mit mindestens einem „RootSync“-Objekt im Cluster aktiviert ist. | CP-9-Systemsicherung |
nist-sp-800-53-r5-require-managed-by-label | Erfordert, dass alle Apps ein gültiges Label „app.kubernetes.io/managed-by“ haben. | |
nist-sp-800-53-r5-restrict-rbac-subjects | Beschränkt die Verwendung von Namen in RBAC-Subjekten auf zulässige Werte. | IA-2-Identifizierung und -Authentifizierung (Nutzer in der Organisation) |
nist-sp-800-53-r5-block-creation-with-default-serviceaccount | Beschränken Sie die Ressourcenerstellung mit einem Standarddienstkonto. | IA-4-ID-Verwaltung |
nist-sp-800-53-r5-restrict-rbac-subjects | Beschränkt die Verwendung von Namen in RBAC-Subjekten auf zulässige Werte. | |
nist-sp-800-53-r5-require-binauthz | Erfordert den Validierungs-Webhook der Binärautorisierung. | IA-5-Authenticator-Verwaltung |
nist-sp-800-53-r5-restrict-rbac-subjects | Beschränkt die Verwendung von Namen in RBAC-Subjekten auf zulässige Werte. | |
nist-sp-800-53-r5-restrict-rbac-subjects | Beschränkt die Verwendung von Namen in RBAC-Subjekten auf zulässige Werte. | MA-4: Nicht lokale Wartung |
nist-sp-800-53-r5-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Drift Prevention mit mindestens einem „RootSync“-Objekt im Cluster aktiviert ist. | PL-1 – Richtlinie und Verfahren |
nist-sp-800-53-r5-require-managed-by-label | Erfordert, dass alle Apps ein gültiges Label „app.kubernetes.io/managed-by“ haben. | |
nist-sp-800-53-r5-require-binauthz | Erfordert den Validierungs-Webhook der Binärautorisierung. | RA-5-Scannen auf Sicherheitslücken |
nist-sp-800-53-r5-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Drift Prevention mit mindestens einem „RootSync“-Objekt im Cluster aktiviert ist. | SA-10-Entwicklerkonfigurationsverwaltung |
nist-sp-800-53-r5-require-managed-by-label | Erfordert, dass alle Apps ein gültiges Label „app.kubernetes.io/managed-by“ haben. | |
nist-sp-800-53-r5-require-binauthz | Erfordert den Validierungs-Webhook der Binärautorisierung. | Vertrauenswürdiger SA-11-Pfad |
nist-sp-800-53-r5-require-binauthz | Erfordert den Validierungs-Webhook der Binärautorisierung. | Lebenszyklus der SA-3-Systementwicklung |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Beschränkt die Verwendung von Secrets vom Typ „basic-auth“. | SA-8-Grundsätze zu Security and Privacy Engineering |
nist-sp-800-53-r5-restrict-hostpath-volumes | Schränkt die Verwendung von HostPath-Volumes ein. | |
nist-sp-800-53-r5-restrict-volume-types | Schränkt die Typen der mountbaren Volumes auf die Liste der zulässigen Volumes ein. | |
nist-sp-800-53-r5-require-binauthz | Erfordert den Validierungs-Webhook der Binärautorisierung. | Einrichtung und Verwaltung kryptografischer Schlüssel des SC-12 |
nist-sp-800-53-r5-restrict-storageclass | Schränkt „Speicherklasse“ auf eine Liste von „Speicherklasse“ ein, die standardmäßig verschlüsselt. | SC-28 – Schutz ruhender Daten |
nist-sp-800-53-r5-require-namespace-network-policies | Erfordert, dass jeder im Cluster definierte Namespace eine NetworkPolicy hat. | SC-4-Informationen in gemeinsam genutzten Ressourcen |
nist-sp-800-53-r5-cpu-and-memory-limits-required | Erfordert, dass Pods CPU- und Arbeitsspeicherlimits angeben. | SC-6-Ressourcenverfügbarkeit |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Beschränkt die Verwendung von Secrets vom Typ „basic-auth“. | SC-7-Grenzschutz |
nist-sp-800-53-r5-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Drift Prevention mit mindestens einem „RootSync“-Objekt im Cluster aktiviert ist. | |
nist-sp-800-53-r5-require-managed-by-label | Erfordert, dass alle Apps ein gültiges Label „app.kubernetes.io/managed-by“ haben. | |
nist-sp-800-53-r5-require-namespace-network-policies | Erfordert, dass jeder im Cluster definierte Namespace eine NetworkPolicy hat. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Schränkt die Verwendung von HostPath-Volumes ein. | |
nist-sp-800-53-r5-restrict-volume-types | Schränkt die Typen der mountbaren Volumes auf die Liste der zulässigen Volumes ein. | |
nist-sp-800-53-r5-asm-peer-authn-strict-mtls | Stellt sicher, dass PeerAuthentications keinen strikten mTLS-Modus überschreiben kann. | SC-8 – Vertraulichkeit und Integrität bei der Übertragung |
nist-sp-800-53-r5-require-binauthz | Erfordert den Validierungs-Webhook der Binärautorisierung. | SI-12 Informationsmanagement und -aufbewahrung |
nist-sp-800-53-r5-restrict-storageclass | Schränkt „Speicherklasse“ auf eine Liste von „Speicherklasse“ ein, die standardmäßig verschlüsselt. | |
nist-sp-800-53-r5-require-av-daemonset | Erfordert das Vorhandensein eines Antiviren-Daemonsets. | SI-3 Malwareschutz |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Beschränkt die Verwendung von Secrets vom Typ „basic-auth“. | SI-7 Software, Firmware und Integrität von Informationen |
nist-sp-800-53-r5-enforce-config-management | Erfordert, dass Config Sync ausgeführt wird und Drift Prevention mit mindestens einem „RootSync“-Objekt im Cluster aktiviert ist. | |
nist-sp-800-53-r5-require-binauthz | Erfordert den Validierungs-Webhook der Binärautorisierung. | |
nist-sp-800-53-r5-require-managed-by-label | Erfordert, dass alle Apps ein gültiges Label „app.kubernetes.io/managed-by“ haben. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Schränkt die Verwendung von HostPath-Volumes ein. | |
nist-sp-800-53-r5-require-binauthz | Erfordert den Validierungs-Webhook der Binärautorisierung. | SR-4-Herkunft |
Hinweise
- Installieren und initialisieren Sie die Google Cloud CLI, die die in dieser Anleitung verwendeten Befehle
gcloud
undkubectl
enthält. Wenn Sie Cloud Shell verwenden, ist die Google Cloud CLI vorinstalliert. - Installieren Sie Policy Controller mit der Standardbibliothek der Einschränkungsvorlagen in Ihrem Cluster. 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: "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"
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 für Drift Prevention, ist in
nist-sp-800-53-r5-enforce-config-management
erforderlich. - Eine Antivirenlösung ist erforderlich. Standardmäßig ist eine
daemonset
mit dem Namenclamav
inclamav
namespace
vorhanden. Der Name und der Namespace vondaemonset
können jedoch an Ihre Implementierung in dernist-sp-800-53-r5-require-av-daemonset
-Einschränkung angepasst werden. - Container-Images sind auf eine Liste der zulässigen Repositories beschränkt, die bei Bedarf in
nist-sp-800-53-r5-restrict-repos
angepasst werden kann. - Knoten müssen für ihr Image in
nist-sp-800-53-r5-nodes-have-consistent-time
Container-Optimized OS oder Ubuntu verwenden. - Die Verwendung von Speicherklassen ist auf eine zulässige Liste beschränkt, die angepasst werden kann, um zusätzliche Klassen mit Standardverschlüsselung in
nist-sp-800-53-r5-restrict-storageclass
hinzuzufügen. In
nist-sp-800-53-r5-require-binauthz
muss die Binärautorisierung aktiviert und konfiguriert werden.
Audit NIST SP 800-53 Rev. 5-Richtlinien-Bundle
Mit Policy Controller können Sie Richtlinien für Ihren Kubernetes-Cluster erzwingen. Damit Sie Ihre Arbeitslasten und deren Einhaltung in Bezug auf die NIST SP 800-53-Richtlinien in der vorherigen Tabelle testen können, können Sie diese Einschränkungen im „Audit“-Modus bereitstellen, um Verstöße aufzudecken und, was noch wichtiger ist, Ihnen die Möglichkeit zu geben, sie zu beheben, bevor Sie sie in Ihrem Kubernetes-Cluster erzwingen.
Sie können diese Richtlinien anwenden, wobei spec.enforcementAction
über kubectl, kpt oder Config Sync 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-53-r5
Wenden Sie die Richtlinieneinschränkungen mit kubectl an:
kubectl apply -k https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-53-r5
Die Ausgabe sieht so aus:
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
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-53-r5
Die Ausgabe sieht in etwa so aus:
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
Installieren und richten Sie kpt ein.
kpt wird in dieser Anleitung verwendet, um Kubernetes-Ressourcen anzupassen und bereitzustellen.
Laden Sie das NIST SP 800-53 Rev. 5-Richtlinien-Bundle von GitHub über kpt herunter:
kpt pkg get https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-53-r5
Führen Sie die kpt-Funktion
set-enforcement-action
aus, um die Erzwingungsaktion der Richtlinien aufdryrun
festzulegen:kpt fn eval nist-sp-800-53-r5 -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-53-r5 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
CURRENT
bestä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 oder hängen Sie
.gitignore
mitresourcegroup.yaml
an:echo resourcegroup.yaml >> .gitignore
Erstellen Sie ein dediziertes
policies
-Verzeichnis:mkdir -p policies
Laden Sie das NIST SP 800-53 Rev. 5-Richtlinien-Bundle von GitHub über kpt herunter:
kpt pkg get https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-53-r5 policies/nist-sp-800-53-r5
Führen Sie die kpt-Funktion
set-enforcement-action
aus, um die Erzwingungsaktion der Richtlinien aufdryrun
festzulegen:kpt fn eval policies/nist-sp-800-53-r5 -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-53-r5 kpt live apply --dry-run policies/nist-sp-800-53-r5
Wenn Ihr Synchronisierungsverzeichnis für Config Sync Kustomize verwendet, fügen Sie
policies/nist-sp-800-53-r5
Ihrem Stammverzeichniskustomization.yaml
hinzu. Andernfalls entfernen Sie die Dateipolicies/nist-sp-800-53-r5/kustomization.yaml
:rm SYNC_ROOT_DIR/policies/nist-sp-800-53-r5/kustomization.yaml
Übertragen Sie Änderungen per Push in das Config Sync-Repository:
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
Prüfen Sie den Status der Installation:
watch gcloud beta container fleet config-management status --project PROJECT_ID
Der Status
SYNCED
bestätigt die Installation der Richtlinien.
Richtlinienverstöße ansehen
Nachdem die Richtlinieneinschränkungen im Prüfmodus installiert wurden, können Sie Verstöße im Cluster auf der Benutzeroberfläche über das Policy Controller-Dashboard anzeigen.
Sie können
kubectl
auch verwenden, um Verstöße im Cluster mit dem folgenden Befehl anzusehen:kubectl get constraint -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5 -o json | jq -cC '.items[]| [.metadata.name,.status.totalViolations]'
Wenn Verstöße vorliegen, kann eine Liste der Verstoßmeldungen pro Einschränkung mit folgenden Elementen aufgerufen werden:
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[]?]'
Erzwingungsaktion für das Richtlinien-Bundle für NIST SP 800-53 Rev. 5 ändern
Nachdem Sie die Richtlinienverstöße in Ihrem Cluster geprüft haben, können Sie den Erzwingungsmodus ändern, sodass der Admission-Controller entweder den Status „warn
“ aktiviert oder sogar deny
verhindert, dass nicht konforme Ressourcen auf den Cluster angewendet werden.
kubectl
Legen Sie mit kubectl die Erzwingungsaktion der Richtlinien auf
warn
fest: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"}]'
Prüfen Sie, ob die Erzwingungsaktion für Richtlinieneinschränkungen aktualisiert wurde:
kubectl get constraints -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5
KPT
Führen Sie die kpt-Funktion
set-enforcement-action
aus, um die Erzwingungsaktion der Richtlinien aufwarn
festzulegen:kpt fn eval -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=warn
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-action
aus, um die Erzwingungsaktion der Richtlinien aufwarn
festzulegen:kpt fn eval policies/nist-sp-800-53-r5 -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=warn
Übertragen Sie Änderungen per Push in das Config Sync-Repository:
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
Prüfen Sie den Status der Installation:
gcloud alpha anthos config sync repo list --project PROJECT_ID
Das Repository, das in der Spalte
SYNCED
angezeigt wird, bestätigt die Installation der Richtlinien.
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
Der Admission-Controller sollte eine Warnung mit den Richtlinienverstößen ausgeben, gegen die diese Ressource verstößt, wie im folgenden Beispiel gezeigt:
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
Richtlinien-Bundle für NIST SP 800-53 Rev. 5 entfernen
Bei Bedarf kann das NIST SP 800-53 Rev. 5-Richtlinien-Bundle 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-53-r5
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-53-r5 git commit -m 'Removing NIST SP 800-53 Rev. 5 policies' git push
Prüfen Sie den Status:
gcloud alpha anthos config sync repo list --project PROJECT_ID
Das in der Spalte
SYNCED
angezeigte Repository bestätigt das Entfernen der Richtlinien.