Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar.

Aktivierung des API-Audit-Logs in Downstream-Clustern

Die Auditierung von Kubernetes liefert eine sicherheitsrelevante, chronologisch geordnete Reihe von Aufzeichnungen über einen Cluster. Der Kube-Apiserver führt die Auditierung durch. Anfragen erzeugen ein Ereignis in jeder Phase ihrer Ausführung, das dann gemäß einer bestimmten Richtlinie vorverarbeitet und in ein Backend geschrieben wird. Die Richtlinie bestimmt, was aufgezeichnet wird, und das Backend speichert die Aufzeichnungen.

Sie möchten möglicherweise das Audit-Log als Teil der Einhaltung der Kontrollen des Center for Internet Security (CIS) Kubernetes Benchmark konfigurieren.

Für Konfigurationsdetails siehe die offizielle Kubernetes-Dokumentation.

  • RKE2

  • K3s

Methode 1 (Empfohlen): Set `audit-policy-file` in `machineGlobalConfig` or `machineSelectorConfig`

Sie können audit-policy-file in der Konfigurationsdatei entweder mit machineGlobalConfig oder machineSelectorConfig festlegen.

Bei Verwendung von machineGlobalConfig liefert Rancher die Datei an den Pfad /var/lib/rancher/rke2/etc/config-files/audit-policy-file auf allen Knoten (sowohl Steuerungsknoten als auch Arbeitsknoten) und setzt die entsprechenden Optionen im RKE2-Server. Dies kann unerwünschte Rekonziliationen von Arbeitsknoten verursachen, wenn die Audit-Richtlinie geändert wird.

Um Rekonziliationen von Arbeitsknoten zu vermeiden, verwenden Sie machineSelectorConfig mit einem Label-Selector, um nur Steuerungsknoten anzusprechen. Dies stellt sicher, dass die Audit-Richtliniendatei nur an Steuerungsknoten geliefert wird.

Beispiel mit machineGlobalConfig:

apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
  rkeConfig:
    machineGlobalConfig:
      audit-policy-file: |
        apiVersion: audit.k8s.io/v1
        kind: Policy
        rules:
          - level: RequestResponse
            resources:
              - group: ""
                resources:
                  - pods

Beispiel mit machineSelectorConfig (empfohlen, um Rekonziliationen von Arbeitsknoten zu vermeiden):

apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
  rkeConfig:
    machineSelectorConfig:
      - config:
          audit-policy-file: |
            apiVersion: audit.k8s.io/v1
            kind: Policy
            rules:
              - level: RequestResponse
                resources:
                  - group: ""
                    resources:
                      - pods
        machineLabelSelector:
          matchLabels:
            rke.cattle.io/control-plane-role: 'true'

Methode 2: Verwenden Sie die Direktiven `machineSelectorFiles` und `machineGlobalConfig`

Dieses Feature ist in Rancher v2.7.2 und später verfügbar.

Sie können machineSelectorFiles verwenden, um die Audit-Richtliniendatei an die Steuerungsknoten zu liefern, und machineGlobalConfig, um die Optionen auf kube-apiserver festzulegen.

Als Voraussetzung müssen Sie ein secret oder configmap erstellen, das die Quelle der Audit-Richtlinie ist.

Das Secret oder ConfigMap muss die folgenden Anforderungen erfüllen:

  1. Es muss im fleet-default Namespace sein, in dem das Cluster-Objekt existiert.

  2. Es muss die Annotation rke.cattle.io/object-authorized-for-clusters: <cluster-name1>,<cluster-name2> haben, die es den Ziel-Clustern erlaubt, es zu verwenden.

Das Rancher Dashboard bietet ein benutzerfreundliches Formular zum Erstellen des Secrets oder ConfigMaps.

Beispiel:

apiVersion: v1
data:
  audit-policy: >-
    IyBMb2cgYWxsIHJlcXVlc3RzIGF0IHRoZSBNZXRhZGF0YSBsZXZlbC4KYXBpVmVyc2lvbjogYXVkaXQuazhzLmlvL3YxCmtpbmQ6IFBvbGljeQpydWxlczoKLSBsZXZlbDogTWV0YWRhdGE=
kind: Secret
metadata:
  annotations:
    rke.cattle.io/object-authorized-for-clusters: cluster1
  name: <name1>
  namespace: fleet-default

Aktivieren und konfigurieren Sie das Audit-Log, indem Sie das Cluster in YAML bearbeiten und die Direktiven machineSelectorFiles und machineGlobalConfig verwenden.

Beispiel:

apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
  rkeConfig:
    machineGlobalConfig:
      kube-apiserver-arg:
        - audit-policy-file=<customized-path>/dev-audit-policy.yaml
        - audit-log-path=<customized-path>/dev-audit.logs
    machineSelectorFiles:
      - fileSources:
          - configMap:
              name: ''
            secret:
              items:
                - key: audit-policy
                  path: <customized-path>/dev-audit-policy.yaml
              name: dev-audit-policy
        machineLabelSelector:
          matchLabels:
            rke.cattle.io/control-plane-role: 'true'

Weitere Informationen zur Clusterkonfiguration finden Sie auf den Seiten RKE2-Clusterkonfigurationsreferenz.

Dieses Feature ist in Rancher v2.7.2 und später verfügbar.

Sie können machineSelectorFiles verwenden, um die Audit-Richtliniendatei an die Steuerungsknoten zu liefern, und machineGlobalConfig, um die Optionen auf kube-apiserver festzulegen.

Als Voraussetzung müssen Sie ein secret oder configmap erstellen, das die Quelle der Audit-Richtlinie ist.

Das Secret oder ConfigMap muss die folgenden Anforderungen erfüllen:

  1. Es muss im fleet-default Namespace sein, in dem das Cluster-Objekt existiert.

  2. Es muss die Annotation rke.cattle.io/object-authorized-for-clusters: <cluster-name1>,<cluster-name2> haben, die es den Ziel-Clustern erlaubt, es zu verwenden.

Das Rancher Dashboard bietet ein benutzerfreundliches Formular zum Erstellen des secret oder configmap.

Beispiel:

apiVersion: v1
data:
  audit-policy: >-
    IyBMb2cgYWxsIHJlcXVlc3RzIGF0IHRoZSBNZXRhZGF0YSBsZXZlbC4KYXBpVmVyc2lvbjogYXVkaXQuazhzLmlvL3YxCmtpbmQ6IFBvbGljeQpydWxlczoKLSBsZXZlbDogTWV0YWRhdGE=
kind: Secret
metadata:
  annotations:
    rke.cattle.io/object-authorized-for-clusters: cluster1
  name: <name1>
  namespace: fleet-default

Aktivieren und konfigurieren Sie das Audit-Log, indem Sie das Cluster in YAML bearbeiten und die Direktiven machineSelectorFiles und machineGlobalConfig verwenden.

Beispiel:

apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
  rkeConfig:
    machineGlobalConfig:
      kube-apiserver-arg:
        - audit-policy-file=<customized-path>/dev-audit-policy.yaml
        - audit-log-path=<customized-path>/dev-audit.logs
    machineSelectorFiles:
      - fileSources:
          - configMap:
              name: ''
            secret:
              items:
                - key: audit-policy
                  path: <customized-path>/dev-audit-policy.yaml
              name: dev-audit-policy
        machineLabelSelector:
          matchLabels:
            rke.cattle.io/control-plane-role: 'true'

Weitere Informationen zur Clusterkonfiguration finden Sie auf den Seiten K3s-Clusterkonfigurationsreferenz.