Richtlinieneinschränkungen aus NIST SP 800-53 Rev. 5 verwenden

Policy Controller enthält eine Standardbibliothek mit Einschränkungsvorlagen, die mit dem NIST SP 800-53 Rev. 5-Bundle verwendet werden können, das Kontrollen implementiert, die in der Sonderveröffentlichung (SP) 800-53 Rev. 5 des National Institute of Standards and Technology (NIST) aufgeführt sind. Das Paket kann Organisationen dabei helfen, ihre Systeme und Daten vor einer Vielzahl von Bedrohungen zu schützen, indem sofort einsatzbereite Sicherheits- und Datenschutzrichtlinien implementiert werden.

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 Schränkt die Verwendung von Secrets vom Typ „basic-auth“ ein. AC-16 Sicherheits- und Datenschutzattribute
nist-sp-800-53-r5-restrict-hostpath-volumes Schränkt die Verwendung von HostPath-Volumes ein.
nist-sp-800-53-r5-restrict-rbac-subjects Schränkt die Verwendung von Namen in RBAC auf zulässige Werte ein. AC-2 Kontoverwaltung
nist-sp-800-53-r5-restrict-rbac-subjects Schränkt die Verwendung von Namen in RBAC auf zulässige Werte ein. AC-3 Zugriffserzwingung
nist-sp-800-53-r5-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-53-r5-require-binauthz Erfordert validierendes Zulassungs-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 validierendes Zulassungs-Webhook der Binärautorisierung. AC-6 Geringste Berechtigung
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings Schränkt die Verwendung der Rolle „cluster-admin“ ein.
nist-sp-800-53-r5-restrict-repos Beschränkt die Container-Images auf eine zulässige „Repos“-Liste.
nist-sp-800-53-r5-restrict-role-wildcards Schränkt die Verwendung von Platzhaltern in "Roles" und "ClusterRoles" ein.
nist-sp-800-53-r5-require-binauthz Erfordert validierendes Zulassungs-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, da nur Container-Optimized OS (COS) oder Ubuntu als Betriebssystem-Image zulässig ist. AU-8 Zeitstempel
nist-sp-800-53-r5-require-namespace-network-policies Erfordert, dass jeder im Cluster definierte Namespace eine NetworkPolicy hat. CA-9 Interne Systemverbindungen
nist-sp-800-53-r5-require-binauthz Erfordert validierendes Zulassungs-Webhook der Binärautorisierung. CM-14 Signierte 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 Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben.
nist-sp-800-53-r5-apparmor Schränkt die für Pods zulässigen AppArmor-Profile ein. CM-3 Konfigurationsänderungssteuerung
nist-sp-800-53-r5-block-secrets-of-type-basic-auth Schränkt die Verwendung von Secrets vom Typ „basic-auth“ ein.
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 ein, bei denen das „hostNetwork“-Flag auf „true“ festgelegt ist.
nist-sp-800-53-r5-privileged-containers Schränkt Container ein, bei denen „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 Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label 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 Beschränkt die bereitstellbaren Volume-Typen auf die zulässige Liste.
nist-sp-800-53-r5-seccomp Das Seccomp-Profil darf nicht explizit auf „Unconfined“ festgelegt sein.
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 Sysctls 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. CM-4 Sicherheits-Wirkungsanalyse
nist-sp-800-53-r5-require-managed-by-label Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben.
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings Schränkt die Verwendung der Rolle „cluster-admin“ 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. CM-5 Zugriffsbeschränkungen für Änderungen
nist-sp-800-53-r5-require-managed-by-label Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben.
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings Schränkt die Verwendung der Rolle „cluster-admin“ ein.
nist-sp-800-53-r5-block-secrets-of-type-basic-auth Schränkt die Verwendung von Secrets vom Typ „basic-auth“ ein. 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 validierendes Zulassungs-Webhook der Binärautorisierung.
nist-sp-800-53-r5-require-managed-by-label Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label 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 Beschränkt die bereitstellbaren Volume-Typen auf die zulässige Liste.
nist-sp-800-53-r5-apparmor Schränkt die für Pods zulässigen AppArmor-Profile ein. CM-7 Mindestfunktionalitä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 ein, bei denen das „hostNetwork“-Flag auf „true“ festgelegt ist.
nist-sp-800-53-r5-privileged-containers Schränkt Container ein, bei denen „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 Schränkt die Verwendung der Rolle „cluster-admin“ ein.
nist-sp-800-53-r5-restrict-hostpath-volumes Schränkt die Verwendung von HostPath-Volumes ein.
nist-sp-800-53-r5-restrict-volume-types Beschränkt die bereitstellbaren Volume-Typen auf die zulässige Liste.
nist-sp-800-53-r5-seccomp Das Seccomp-Profil darf nicht explizit auf „Unconfined“ festgelegt sein.
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 Sysctls 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. CP-10 Informationssystemwiederherstellung und -rekonstruktion
nist-sp-800-53-r5-require-managed-by-label Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label 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 Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben.
nist-sp-800-53-r5-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-53-r5-block-creation-with-default-serviceaccount Beschränkt Ressourcenerstellung mit einem Standarddienstkonto. IA-4 Kennungsverwaltung
nist-sp-800-53-r5-restrict-rbac-subjects Schränkt die Verwendung von Namen in RBAC auf zulässige Werte ein.
nist-sp-800-53-r5-require-binauthz Erfordert validierendes Zulassungs-Webhook der Binärautorisierung. IA-5 Authenticator-Verwaltung
nist-sp-800-53-r5-restrict-rbac-subjects Schränkt die Verwendung von Namen in RBAC auf zulässige Werte ein.
nist-sp-800-53-r5-restrict-rbac-subjects Schränkt die Verwendung von Namen in RBAC auf zulässige Werte ein. 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 Richtlinien und Verfahren
nist-sp-800-53-r5-require-managed-by-label Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben.
nist-sp-800-53-r5-require-binauthz Erfordert validierendes Zulassungs-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 Entwickler-Konfigurationsverwaltung
nist-sp-800-53-r5-require-managed-by-label Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label haben.
nist-sp-800-53-r5-require-binauthz Erfordert validierendes Zulassungs-Webhook der Binärautorisierung. SA-11 Vertrauenswürdiger Pfad
nist-sp-800-53-r5-require-binauthz Erfordert validierendes Zulassungs-Webhook der Binärautorisierung. SA-3 Systementwicklungslebenszyklus
nist-sp-800-53-r5-block-secrets-of-type-basic-auth Schränkt die Verwendung von Secrets vom Typ „basic-auth“ ein. SA-8 Entwicklungsprinzipien 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-volume-types Beschränkt die bereitstellbaren Volume-Typen auf die zulässige Liste.
nist-sp-800-53-r5-require-binauthz Erfordert validierendes Zulassungs-Webhook der Binärautorisierung. SC-12 Kryptografische Schlüssel einrichten und verwalten
nist-sp-800-53-r5-restrict-storageclass Beschränkt "StorageClass" auf eine Liste von "StorageClass", die standardmäßig verschlüsselt sind. SC-28 Schutz inaktiver Daten
nist-sp-800-53-r5-require-namespace-network-policies Erfordert, dass jeder im Cluster definierte Namespace eine NetworkPolicy hat. SC-4 Informationen in freigegebenen 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 Schränkt die Verwendung von Secrets vom Typ „basic-auth“ ein. SC-7 Maßnahmen zur Abgrenzung
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 Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label 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 Beschränkt die bereitstellbaren Volume-Typen auf die zulässige Liste.
nist-sp-800-53-r5-asm-peer-authn-strict-mtls Stellt sicher, dass PeerAuthentications keine strikte mTLS-Authentifizierung überschreiben kann. SC-8 Vertraulichkeit und Integrität von Übertragungen
nist-sp-800-53-r5-require-binauthz Erfordert validierendes Zulassungs-Webhook der Binärautorisierung. SI-12 Informationsmanagement und -aufbewahrung
nist-sp-800-53-r5-restrict-storageclass Beschränkt "StorageClass" auf eine Liste von "StorageClass", die standardmäßig verschlüsselt sind.
nist-sp-800-53-r5-require-av-daemonset Erfordert das Vorhandensein eines Antiviren-Daemonsets SI-3-Schutz vor schädlichem Code
nist-sp-800-53-r5-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-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 validierendes Zulassungs-Webhook der Binärautorisierung.
nist-sp-800-53-r5-require-managed-by-label Erfordert, dass alle Anwendungen ein gültiges „app.kubernetes.io/managed-by“-Label 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 validierendes Zulassungs-Webhook der Binärautorisierung. SR-4 Herkunft

Hinweise

  1. Installieren und initialisieren Sie die Google Cloud CLI, die die in dieser Anleitung verwendeten Befehle gcloud und kubectl enthält. Wenn Sie Cloud Shell verwenden, ist die Google Cloud CLI vorinstalliert.
  2. 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

  1. 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"
    
  2. Wenden Sie das policycontroller-config.yaml-Manifest an:

    kubectl apply -f policycontroller-config.yaml
    

Cluster und Arbeitslast konfigurieren

  1. Die Aktivierung und Konfiguration von Config Sync , einschließlich Drift Prevention-Zulassungs-Webhook, ist in nist-sp-800-53-r5-enforce-config-management erforderlich.
  2. Eine Antivirenlösung ist erforderlich. Die Standardeinstellung ist das Vorhandensein eines daemonset namens clamav in dem clamav namespace. Der Name und der Namespace von daemonset können jedoch an Ihre Implementierung in der Einschränkung nist-sp-800-53-r5-require-av-daemonset angepasst werden.
  3. Container-Images sind auf eine zulässige Repository-Liste beschränkt, die bei Bedarf in nist-sp-800-53-r5-restrict-repos angepasst werden kann.
  4. Knoten müssen Container-Optimized OS oder Ubuntu für ihr Image in nist-sp-800-53-r5-nodes-have-consistent-time verwenden.
  5. 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.
  6. Die Aktivierung und Konfiguration der Binärautorisierung ist in nist-sp-800-53-r5-require-binauthz erforderlich.

Richtlinien-Bundle NIST SP 800-53 Rev. 5 testen

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 SP 800-53-Richtlinien testen können, können Sie diese Einschränkungen im „Audit”-Modus bereitstellen. So können Sie Verstöße aufdecken und haben Gelegenheit, diese 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

  1. (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
    
  2. 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
    
  3. 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

  1. Installieren und richten Sie kpt ein.

    kpt wird in dieser Anleitung verwendet, um Kubernetes-Ressourcen anzupassen und bereitzustellen.

  2. Laden Sie das Richtlinien-Bundle NIST SP 800-53 Rev. 5 von GitHub mit kpt herunter:

    kpt pkg get https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-53-r5
    
  3. Führen Sie die kpt-Funktion set-enforcement-action aus, um die Maßnahme der Richtlinien auf dryrun festzulegen:

    kpt fn eval nist-sp-800-53-r5 -i gcr.io/kpt-fn/set-enforcement-action:v0.1 \
    -- enforcementAction=dryrun
    
  4. 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
    
  5. Wenden Sie die Richtlinieneinschränkungen mit kpt an:

    kpt live apply
    
  6. 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

  1. 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:

  2. Wechseln Sie in das Synchronisierungsverzeichnis für Config Sync:

    cd SYNC_ROOT_DIR
    

    So erstellen Sie resourcegroup.yaml oder hängen es an .gitignore an:

    echo resourcegroup.yaml >> .gitignore
    
  3. Erstellen Sie ein dediziertes policies-Verzeichnis:

    mkdir -p policies
    
  4. Laden Sie das Richtlinien-Bundle NIST SP 800-53 Rev. 5 von GitHub mit 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
    
  5. Führen Sie die kpt-Funktion set-enforcement-action aus, um die Maßnahme der Richtlinien auf dryrun festzulegen:

    kpt fn eval policies/nist-sp-800-53-r5 -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=dryrun
    
  6. (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
    
  7. Wenn Ihr Synchronisierungsverzeichnis für Config Sync Kustomize verwendet, fügen Sie policies/nist-sp-800-53-r5 Ihrer Stamm-kustomization.yaml hinzu. Andernfalls entfernen Sie die Datei policies/nist-sp-800-53-r5/kustomization.yaml:

    rm SYNC_ROOT_DIR/policies/nist-sp-800-53-r5/kustomization.yaml
    
  8. Ü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
    
  9. 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

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.

  1. Mit kubectl können Sie auch mit dem folgenden Befehl Verstöße im Cluster aufrufen:

    kubectl get constraint -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5 -o json | jq -cC '.items[]| [.metadata.name,.status.totalViolations]'
    
  2. 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-53-r5 -o json | jq -C '.items[]| select(.status.totalViolations>0)| [.metadata.name,.status.violations[]?]'
    

Maßnahme für das Richtlinien-Bundle NIST SP 800-53 Rev. 5 ä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 auf das Cluster angewendet werden.

kubectl

  1. Verwenden Sie kubectl, um die Maßnahme der Richtlinien auf warn festzulegen:

    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"}]'
    
  2. Prüfen Sie, ob die Maßnahme für Richtlinieneinschränkungen aktualisiert wurde:

    kubectl get constraints -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5
    

KPT

  1. Führen Sie die kpt-Funktion set-enforcement-action aus, um die Erzwingungsaktion der Richtlinien auf warn festzulegen:

    kpt fn eval -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=warn
    
  2. 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:

  1. Wechseln Sie in das Synchronisierungsverzeichnis für Config Sync:

    cd SYNC_ROOT_DIR
    
  2. Führen Sie die kpt-Funktion set-enforcement-action aus, um die Erzwingungsaktion der Richtlinien auf warn festzulegen:

    kpt fn eval policies/nist-sp-800-53-r5 -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=warn
    
  3. Ü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
    
  4. Prüfen Sie den Status der Installation:

    gcloud alpha anthos config sync repo list --project PROJECT_ID
    

    Ihr 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 ausgeben, in der die Richtlinienverstöße aufgeführt sind, 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 NIST SP 800-53 Rev. 5 entfernen

Bei Bedarf kann das Richtlinien-Bundle NIST SP 800-53 Rev. 5 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:

  1. Ü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
    
  2. Prüfen Sie den Status:

    gcloud alpha anthos config sync repo list --project PROJECT_ID
    

    Ihr Repository, das in der Spalte SYNCED angezeigt wird, bestätigt das Entfernen der Richtlinien.