Sie betrachten die Dokumentation für eine frühere Version von GKE On-Prem. Sehen Sie sich die aktuelle Dokumentation an.

Audit-Logging

Überblick

Anthos GKE On-Prem verwendet Kubernetes-Audit-Logging, das eine chronologische Aufzeichnung der Aufrufe an den Kubernetes API-Server eines Clusters speichert. Audit-Logs sind nützlich, um verdächtige API-Anfragen zu untersuchen und Statistiken zu erfassen.

Vor Anthos 1.2 hat GKE On-Prem-Audit-Logs nur auf Festplatte geschrieben. Anthos 1.2 führt eine Alphafunktion ein, mit der Audit-Logs in Cloud-Audit-Logs in einem Google Cloud-Projekt geschrieben werden können. Das Schreiben in Cloud-Audit-Logs hat mehrere Vorteile gegenüber dem Schreiben auf die Festplatte oder sogar dem Erfassen von Logs in einem lokalen Logging-System:

  • Audit-Logs für alle Anthos GKE-Cluster können zentralisiert werden.
  • In Cloud-Audit-Logs geschriebene Logeinträge sind unveränderlich.
  • Cloud-Audit-Logeinträge werden 400 Tage lang aufbewahrt.
  • Cloud-Audit-Logs sind im Preis von Anthos enthalten.

Sie können GKE On-Prem so konfigurieren, dass Logs auf das Laufwerk oder in Cloud-Audit-Logs geschrieben werden.

Datenträgerbasiertes Audit-Logging

Standardmäßig werden Audit-Logs in GKE On-Prem auf einen nichtflüchtigen Speicher geschrieben, damit VM-Neustarts und -Upgrades nicht zum Verschwinden der Logs führen. GKE On-Prem speichert bis zu 10 GB Audit-Logeinträge.

Cloud-Audit-Logs

Wenn Cloud-Audit-Logs aktiviert sind, werden die Audit-Log-Einträge der Administrator-Aktivität von allen Kubernetes API-Servern unter Verwendung des Projekts und der Position, die Sie beim Erstellen eines Nutzerclusters angeben, an Google Cloud gesendet.

GKE On-Prem stellt einen audit-proxy Pod für die Administrator- und Nutzercluster bereit. Dieser Pod puffert und protokolliert Logeinträge in Cloud-Audit-Logs.

Beschränkungen

Cloud-Audit-Logs für GKE On-Prem sind eine Alphafunktion. Diese Alpha-Version unterliegt einigen Einschränkungen:

  • Sie können Cloud-Audit-Logs nur während der Erstellung von Nutzerclustern konfigurieren. Das heißt, Sie müssen einen neuen Nutzercluster erstellen

  • Die Datenzugriffsprotokollierung wird nicht unterstützt.

  • Das Ändern der Audit-Richtlinie von Kubernetes wird nicht unterstützt.

Diese Einschränkungen werden in zukünftigen Versionen behoben.

Anthos GKE API aktivieren

Wenn Sie Cloud-Audit-Logs mit GKE On-Prem verwenden möchten, müssen Sie die Anthos GKE API aktivieren.

Anthos GKE API aktivieren

Dienstkonto für das Audit-Logging erstellen

Sie haben bereits mehrere Dienstkonten, die Sie für die Verwendung mit GKE On-Prem erstellt haben. Für diese Alphafunktion müssen Sie ein zusätzliches Dienstkonto erstellen und auf die weiße Liste setzen lassen.

  1. Erstellen Sie Ihr Cloud-Audit-Log-Dienstkonto:

    gcloud iam service-accounts create audit-logging-service-account
  2. Erstellen Sie eine JSON-Schlüsseldatei für Ihr Cloud-Audit-Log-Dienstkonto:

    gcloud iam service-accounts keys create audit-logging-key.json \
       --iam-account [Cloud Audit Logs_SERVICE_ACCOUNT_EMAIL]
    

    Dabei ist [Cloud Audit Logs_SERVICE_ACCOUNT_EMAIL] die E-Mail-Adresse Ihres Cloud-Audit-Logs-Dienstkontos.

  3. Speichern Sie audit-logging-key.json auf der Administrator-Workstation am selben Speicherort wie Ihre anderen Dienstkontoschlüssel.

Setzen Sie Ihr Dienstkonto auf die weiße Liste

Wenn Sie beantragen möchten, dass Ihr Cloud-Audit-Log-Dienstkonto auf die weiße Liste gesetzt wird, füllen Sie das Cloud-Audit-Logs für GKE On-Prem Alpha aus. Ihr Dienstkonto muss auf die weiße Liste gesetzt werden, bevor Sie einen Nutzercluster erstellen, der Cloud-Audit-Logs aktiviert.

Nutzercluster mit aktivierten Cloud-Audit-Logs erstellen

  1. Wenn Sie noch keinen Administratorcluster erstellt haben, erstellen Sie neue Administrator- und Nutzercluster, indem Sie die Anweisungen in Installieren mit statischen IP-Adressen oder Installieren mit DHCP befolgen.

    Wenn Sie bereits einen Administratorcluster haben, erstellen Sie einen neuen Nutzercluster. Folgen Sie dazu der Anleitung unter Zusätzliche Nutzercluster erstellen.

  2. Nachdem Sie gkectl create-config ausgeführt haben, füllen Sie Ihre Konfigurationsdatei wie gewohnt aus, aber auch den neuen Abschnitt cloudauditlogging unter usercluster.

  3. Legen Sie für cloudauditlogging.projectid die Projekt-ID des Google Cloud-Projekts fest, in dem Sie Audit-Logs zu Ihrem Nutzercluster aufrufen möchten.

  4. Legen Sie cloudauditloggijg.clusterlocation für eine Google Cloud-Region fest, in der Audit-Logs gespeichert werden sollen. Es empfiehlt sich, eine Region in der Nähe Ihres lokalen Rechenzentrums auszuwählen.

  5. Legen Sie cloudauditlogging.serviceaccountkeypath für den Pfad der JSON-Schlüsseldatei für Ihr Cloud Audit Logs-Dienstkonto fest.

Beispiel:

cloudauditlogging:
  projectid: "my-project"
  clusterlocation: "us-west1"
  serviceaccountkeypath: "/my-key-folder/audit-logging-key.json"

Setzen Sie die Clustererstellung wie gewohnt fort.

Auf GKE-Audit-Logs für die lokale Suche zugreifen

Datenträgerbasiertes Audit-Logging

  1. Sehen Sie sich die Kubernetes API-Server an, die in Ihrem Administratorcluster ausgeführt werden, sowie alle zugehörigen Nutzercluster:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get pods --all-namespaces -l component=kube-apiserver
    

    Dabei ist [ADMIN_CLUSTER_KUBECONFIG] die kubeconfig-Datei Ihres Admin-Clusters.

  2. Laden Sie die Audit-Logs des API-Servers herunter:

    kubectl cp -n [NAMESPACE] [APISERVER_POD_NAME]:/var/log/kube-audit/kube-apiserver-audit.log /tmp/kubeaudit.log
    

    Mit diesem Befehl wird die neueste Protokolldatei abgerufen, die bis zu 1 GB Daten für den Administratorcluster und bis zu 850 GB für Nutzercluster enthalten kann.

    Ältere Audit-Aufzeichnungen werden in separaten Dateien gespeichert. So rufen Sie diese Dateien auf:

    kubectl exec -n [NAMESPACE] [APISERVER_POD_NAME] -- ls /var/log/kube-audit -la
    

    Der Dateiname jedes Audit-Logs enthält einen Zeitstempel, der angibt, wann die Datei rotiert wurde. Eine Datei enthält Audit-Logs bis zu diesem Zeitpunkt.

Cloud-Audit-Logs

Console

  1. Rufen Sie in der Cloud Console im Menü Logging die Seite Logs auf.

    Zur Seite "Logs"

  2. Klicken Sie oberhalb der gerade erwähnten Drop-down-Menüs im Feld Nach Label oder Textsuche filtern auf den Abwärtspfeil, um das Drop-down-Menü zu öffnen. Wählen Sie im Menü den Eintrag In erweiterten Filter umwandeln aus.

  3. Füllen Sie das Textfeld mit dem folgenden Filter aus:

    resource.type="k8s_cluster"
    logName="projects/[PROJECT_ID]/logs/externalaudit.googleapis.com%2Factivity"
    protoPayload.serviceName="anthosgke.googleapis.com"
    
  4. Klicken Sie auf Filter senden, um alle Audit-Logs von GKE On-Prem-Clustern anzuzeigen, die für die Anmeldung in diesem Projekt konfiguriert wurden.

gcloud

Listen Sie die ersten beiden Logeinträge im Administratoraktivitätslog des Projekts auf, die sich auf den Ressourcentyp k8s_cluster beziehen:

gcloud logging read \
    'logName="projects/[PROJECT_ID]/logs/externalaudit.googleapis.com%2Factivity" \
    AND resource.type="k8s_cluster" \
    AND protoPayload.serviceName="anthosgke.googleapis.com" ' \
    --limit 2 \
    --freshness 300d

Dabei ist [PROJECT_ID] Ihre Projekt-ID.

Es werden zwei Logeinträge ausgegeben. Beachten Sie, dass das Feld logName für jeden Logeintrag den Wert projects/[PROJECT_ID]/logs/externalaudit.googleapis.com%2Factivity hat und protoPayload.serviceName gleich anthosgke.googleapis.com ist.

Audit-Richtlinie

Das Audit-Logging-Verhalten wird durch eine statisch konfigurierte Audit-Logging-Richtlinie von Kubernetes bestimmt. Die Änderung dieser Richtlinie wird derzeit nicht unterstützt, wird aber in einer zukünftigen Version verfügbar sein.