Informationen zum Audit-Logging in GKE

In diesem Dokument werden die Audit-Logs beschrieben, die von Google Kubernetes Engine als Teil von Cloud-Audit-Logs erstellt werden.

Übersicht

Dienste vonGoogle Cloud erstellen Audit-Logs, um Ihnen Antworten auf Fragen wie „Wer hat was wo und wann getan?“ für Ihre Ressourcen in Google Cloud zu liefern.

Ihre Projekte in Google Cloud enthalten nur die Audit-Logs für Ressourcen, die sich direkt im jeweiligen Projekt in Google Cloud befinden. Andere Ressourcen in Google Cloud wie Ordner, Organisationen und Rechnungskonten enthalten jeweils eigene Audit-Logs.

Einen allgemeinen Überblick über Cloud-Audit-Logs finden Sie unter Cloud-Audit-Logs – Übersicht. Detaillierte Informationen zum Format von Audit-Logs finden Sie unter Audit-Logs verstehen.

Verfügbare Audit-Logs

Für GKE stehen die folgenden Arten von Audit-Logs zur Verfügung:

  • Audit-Logs zur Administratoraktivität

    Umfasst „Admin Write“-Vorgänge, die Metadaten oder Konfigurationsinformationen schreiben.

    Sie können Audit-Logs zu Administratoraktivitäten nicht deaktivieren.

  • Audit-Logs zum Datenzugriff

    Umfasst „Admin Read“-Vorgänge, die Metadaten oder Konfigurationsinformationen lesen. Umfasst auch „Data Read“- und „Data Write“-Vorgänge, die von Nutzern bereitgestellte Daten lesen oder schreiben.

    Um Datenzugriffs-Audit-Logs zu erhalten, müssen Sie sie explizit aktivieren.

Ausführlichere Beschreibungen der Audit-Logtypen finden Sie unter Arten von Audit-Logs.

Geprüfte Vorgänge

In dieser Tabelle wird zusammengefasst, welche API-Vorgänge dem jeweiligen Audit-Logtyp in GKE entsprechen:

Audit-Logkategorie GKE-Vorgänge
Audit-Logs zur Administratoraktivität io.k8s.authorization.rbac.v1
io.k8s.authorization.rbac.v1.roles

Audit-Log-Format

Audit-Logeinträge umfassen folgende Komponenten:

  • Den Logeintrag selbst. Dabei handelt es sich um ein Objekt vom Typ LogEntry. Nützliche Felder sind unter anderem:

    • logName enthält die Ressourcen-ID und den Audit-Logtyp.
    • resource enthält das Ziel zum geprüften Vorgang.
    • timeStamp enthält die Uhrzeit des geprüften Vorgangs
    • protoPayload enthält die geprüften Informationen
  • Die Audit-Logdaten, bei denen es sich um ein AuditLog-Objekt handelt, das sich im Feld protoPayload des Logeintrags befindet

  • Optionale dienstspezifische Auditinformationen. Das Objekt ist dienstspezifisch. Bei früheren Integrationen befindet sich dieses Objekt im Feld serviceData des AuditLog-Objekts. Spätere Integrationen verwenden das Feld metadata.

Informationen zu anderen Feldern in diesen Objekten sowie zu deren Interpretation finden Sie unter Audit-Logs verstehen.

Logname

Lognamen von Cloud-Audit-Logs enthalten Ressourcenkennungen, die das Projekt inGoogle Cloud oder eine andere Entität von Google Cloud angeben, die der Inhaber der Audit-Logs ist. Außerdem geben sie an, ob das Log Audit-Logging-Daten zu Administratoraktivitäten, Datenzugriff, Richtlinienverstößen oder Systemereignissen enthält.

Im Folgenden finden Sie die Namen der Audit-Logs, einschließlich Variablen für die Ressourcenkennungen:

   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

Dienstname

Für Kubernetes-Audit-Logs wird der Dienstname k8s.io verwendet.

Der Dienst k8s.io wird für Kubernetes-Audit-Logs verwendet. Diese Logs werden von der Kubernetes API Server-Komponente generiert und enthalten Informationen zu Aktionen, die mit der Kubernetes API ausgeführt werden. Beispielsweise werden alle Änderungen, die Sie mit dem Befehl kubectl an einer Kubernetes-Ressource vornehmen, vom Dienst k8s.io aufgezeichnet. Die Einträge im Kubernetes-Audit-Log sind nützlich, um verdächtige API-Anfragen zu untersuchen, Statistiken zu erfassen oder Monitoringbenachrichtigungen für unerwünschte API-Aufrufe zu erstellen.

Eine vollständige Liste aller Cloud Logging API-Dienstnamen und des jeweiligen überwachten Ressourcentyps finden Sie unter Dienste Ressourcen zuordnen.

Ressourcentypen

Für Kubernetes-Audit-Logs wird der Ressourcentyp k8s_cluster verwendet. Vom Kubernetes API-Server geschriebene Logeinträge beziehen sich auf den Ressourcentyp k8s_cluster. Diese Logeinträge beschreiben Vorgänge auf Kubernetes-Clusterressourcen wie Pods, Deployments und Secrets.

Eine Liste aller überwachten Cloud Logging-Ressourcentypen und beschreibende Informationen finden Sie unter Überwachte Ressourcentypen.

Aufruferidentitäten

Die IP-Adresse des Aufrufers wird im Feld RequestMetadata.caller_ip des Objekts AuditLog gespeichert. In Logging können bestimmte Aufruferidentitäten und IP-Adressen entfernt werden.

Informationen dazu, welche Informationen in Audit-Logs entfernt werden, finden Sie unter Aufruferidentitäten in Audit-Logs.

Audit-Logging aktivieren

Audit-Logs zu Administratoraktivitäten sind immer aktiviert. Sie können sie nicht deaktivieren.

Audit-Logs zum Datenzugriff sind standardmäßig deaktiviert und werden nur geschrieben, wenn sie explizit aktiviert werden. Eine Ausnahme bilden die Audit-Logs zum Datenzugriff für BigQuery, die nicht deaktiviert werden können.

Informationen zum Aktivieren einiger oder aller Audit-Logs zum Datenzugriff finden Sie unter Audit-Logs zum Datenzugriff aktivieren.

Berechtigungen und Rollen

IAM-Berechtigungen und ‑Rollen bestimmen, ob Sie auf Audit-Logdaten in Google Cloud -Ressourcen zugreifen können.

Berücksichtigen Sie Folgendes bei der Entscheidung, welche Logging-spezifischen Berechtigungen und Rollen für Ihren Anwendungsfall gelten:

  • Die Rolle „Logs Viewer“ (roles/logging.viewer) bietet Ihnen Lesezugriff auf die Audit-Logs zu Administratoraktivitäten, Richtlinienverstößen und Systemereignissen. Wenn Sie nur diese Rolle haben, können Sie keine Audit-Logs zum Datenzugriff aufrufen, die sich im Bucket _Default befinden.

  • Die Rolle „Private Logs Viewer“ ((roles/logging.privateLogViewer) enthält die Berechtigungen, die in roles/logging.viewer enthalten sind, sowie die Möglichkeit, Audit-Logs zum Datenzugriff im Bucket _Default zu lesen.

    Wenn diese privaten Logs in benutzerdefinierten Buckets gespeichert sind, kann jeder Nutzer, der Berechtigungen zum Lesen von Logs in diesen Buckets hat, die privaten Logs lesen. Weitere Informationen zu Log-Buckets finden Sie auf der Seite zum Routing und zur Speicherung.

Weitere Informationen zu den IAM-Berechtigungen und ‑Rollen für Audit-Logdaten finden Sie unter Zugriffssteuerung mit IAM.

Logs ansehen

Sie können alle Audit-Logs oder Audit-Lognamen abfragen. Der Audit-Logname enthält die Ressourcenkennung des Projekts, Ordners, Rechnungskontos oder der Organisation in Google Cloud , für die Sie Audit-Logging-Informationen aufrufen möchten. In Ihren Abfragen können Sie indexierte Felder des Typs LogEntry angeben. Weitere Informationen zum Abfragen von Logs finden Sie auf der Seite zum Erstellen von Abfragen im Log-Explorer.

Mit dem Log-Explorer können Sie einzelne Logeinträge filtern. Wenn Sie SQL nutzen möchten, um Gruppen von Logeinträgen zu analysieren, verwenden Sie die Seite Loganalysen. Weitere Informationen finden Sie unter:

Die meisten Audit-Logs können in Cloud Logging über dieGoogle Cloud Console, die Google Cloud CLI oder die Logging API aufgerufen werden. Für Audit-Logs im Zusammenhang mit der Abrechnung können Sie jedoch nur die Google Cloud CLI oder die Logging API verwenden.

Console

In der Google Cloud Console können Sie mit dem Log-Explorer die Audit-Logeinträge für Ihr Projekt, Ihren Ordner oder Ihre Organisation in Google Cloud abrufen:

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf:

    Zum Log-Explorer

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.

  2. Wählen Sie ein vorhandenes Projekt, einen Ordner oder eine Organisation in Google Cloud aus.

  3. Wenn Sie alle Audit-Logs aufrufen möchten, geben Sie eine der folgenden Abfragen in das Feld des Abfrageeditors ein und klicken Sie dann auf Abfrage ausführen:

    logName:"cloudaudit.googleapis.com"
    
    protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
    
  4. So rufen Sie im Bereich Query Builder die Audit-Logs für eine bestimmte Ressource und einen bestimmten Typ von Audit-Log auf:

    • Wählen Sie unter Ressourcentyp die Google Cloud -Ressource aus, deren Audit-Logs angezeigt werden sollen.

    • Wählen Sie unter Logname den Audit-Logtyp aus, den Sie sehen möchten:

      • Wählen Sie für Audit-Logs zu Administratoraktivitäten die Option activity aus.
      • Wählen Sie für Audit-Logs zum Datenzugriff die Option data_access aus.
      • Wählen Sie für Audit-Logs zu Systemereignissen die Option system_event aus.
      • Wählen Sie für Audit-Logs zu Richtlinienverstößen die Option policy aus.
    • Klicken Sie auf Abfrage ausführen.

    Wenn diese Optionen nicht angezeigt werden, sind im Projekt, im Ordner oder in der Organisation in Google Cloud keine Audit-Logs dieses Typs verfügbar.

    Wenn beim Aufrufen von Logs im Log-Explorer Probleme auftreten, lesen Sie die Informationen zur Fehlerbehebung.

    Weitere Informationen zu Abfragen mit dem Log-Explorer finden Sie auf der Seite zum Erstellen von Abfragen im Log-Explorer.

gcloud

Die Google Cloud CLI bietet eine Befehlszeile für die Logging API. Geben Sie in jedem Lognamen eine gültige Ressourcenkennung an. Wenn die Abfrage beispielsweise eine PROJECT_ID enthält, muss sich die von Ihnen angegebene Projekt-ID auf das aktuell inGoogle Cloud ausgewählte Projekt beziehen.

Führen Sie den folgenden Befehl aus, um Audit-Logeinträge auf Ebene des Projekts in Google Cloud zu lesen:

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \
    --project=PROJECT_ID

Führen Sie den folgenden Befehl aus, um Audit-Logeinträge auf Ordnerebene zu lesen:

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \
    --folder=FOLDER_ID

Führen Sie den folgenden Befehl aus, um Audit-Logeinträge auf Organisationsebene zu lesen:

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \
    --organization=ORGANIZATION_ID

Führen Sie den folgenden Befehl aus, um Audit-Logeinträge auf Cloud-Rechnungskontoebene zu lesen:

gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \
    --billing-account=BILLING_ACCOUNT_ID

Fügen Sie Ihrem Befehl das Flag --freshness hinzu, um Logs zu lesen, die mehr als einen Tag alt sind.

Weitere Informationen zur Verwendung der gcloud CLI finden Sie unter gcloud logging read.

REST

Geben Sie beim Erstellen von Abfragen in jedem Lognamen eine gültige Ressourcenkennung an. Wenn die Abfrage beispielsweise eine PROJECT_ID enthält, muss sich die von Ihnen angegebene Projekt-ID auf das aktuell inGoogle Cloud ausgewählte Projekt beziehen.

So können Sie beispielsweise mit der Logging API Audit-Logeinträge auf Projektebene aufrufen:

  1. Rufen Sie in der Dokumentation für die Methode entries.list den Abschnitt Diese API testen auf.

  2. Geben Sie im Teil Anfragetext des Formulars Diese API testen Folgendes ein. Wenn Sie auf dieses vorab ausgefüllte Formular klicken, wird der Anfragetext automatisch übernommen. Sie müssen jedoch in jedem der Lognamen eine gültige PROJECT_ID angeben.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. Klicken Sie auf Ausführen.

Beispielabfragen

So verwenden Sie die Beispielabfragen in der folgenden Tabelle:

  1. Ersetzen Sie die Variablen im Abfrageausdruck durch Ihre eigenen Projektinformationen und kopieren Sie den Ausdruck dann mit dem Symbol der Zwischenablage .

  2. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf:

    Zum Log-Explorer

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.

  3. Aktivieren Sie Abfrage anzeigen, um das Feld „Query Editor” zu öffnen, und fügen Sie den Ausdruck dann in das Feld des Query Editor ein:

    Der Query Editor, in dem Sie Beispielabfragen eingeben.

  4. Klicken Sie auf Abfrage ausführen. Logs, die Ihrer Abfrage entsprechen, werden im Bereich Abfrageergebnisse aufgeführt.

Verwenden Sie die folgenden Abfragen im Log-Explorer, um Audit-Logs für GKE zu finden:

Abfrage-/Filtername Ausdruck
Audit-Logs für Arbeitslasten
log_id("cloudaudit.googleapis.com/activity")
resource.type="k8s_cluster"
resource.labels.cluster_name="CLUSTER_NAME"
protoPayload.request.metadata.name="WORKLOAD_NAME"
Aktualisierung der Knotenmetadaten für das Knotenobjekt
resource.type="k8s_cluster"
log_id("cloudaudit.googleapis.com/activity")
protoPayload.methodName="io.k8s.core.v1.nodes.update"
resource.labels.cluster_name="CLUSTER_NAME"
resource.labels.location="LOCATION_NAME"
Änderungen an der rollenbasierten Zugriffssteuerung, ohne automatisierte Systemänderungen
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.methodName:"io.k8s.authorization.rbac.v1"
NOT protoPayload.authenticationInfo.principalEmail:"system"
Änderungen an den Rollen der rollenbasierten Zugriffssteuerung, ohne automatisierte Systemänderungen
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.methodName:"io.k8s.authorization.rbac.v1.roles"
NOT protoPayload.authenticationInfo.principalEmail:"system"
Änderungen an Rollenbindungen der rollenbasierten Zugriffssteuerung, ohne automatisierte Systemänderungen
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.methodName:"io.k8s.authorization.rbac.v1.rolebindings"
NOT protoPayload.authenticationInfo.principalEmail:"system"
Zertifikatsignierungsanfragen
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.resourceName:"certificates.k8s.io/v1beta1/certificatesigningrequests"
Nicht authentifizierte Webanfragen
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.authenticationInfo.principalEmail:"system:anonymous"
Aufrufe der Kubelet-Bootstrap-Identität
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.authenticationInfo.principalEmail:"kubelet"
Authentifizierte Knotenanfragen
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.authenticationInfo.principalEmail:"system:node"
Anrufe außerhalb eines IP-Adressbereichs
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.requestMetadata.callerIp!="127.0.0.1"
protoPayload.requestMetadata.callerIp!="::1"
NOT protoPayload.requestMetadata.callerIp:"IP_ADDRESS_PREFIX"
Audit-Logeinträge zu Administratoraktivitäten, die sich auf den Ressourcentyp k8s_cluster beziehen und das Erstellen eines Deployments beschreiben
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.methodName:"deployments.create"
Audit-Logeinträge zu Administratoraktivitäten, die sich auf den Ressourcentyp k8s_cluster beziehen und im Feld principalEmail den Wert system:anonymous enthalten. Diese Einträge stellen wahrscheinlich fehlgeschlagene Authentifizierungsversuche dar.
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.authenticationInfo.principalEmail="system:anonymous"
Audit-Logeinträge zu Administratoraktivitäten, die sich auf den Ressourcentyp gke_cluster beziehen und im Feld severity den Wert ERROR enthalten.
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="gke_cluster"
severity="ERROR"
Audit-Logeinträge zu Administratoraktivitäten, die sich auf den Ressourcentyp k8s_cluster beziehen und eine Schreibanfrage für ein Secret beschreiben.
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.methodName:"io.k8s.core.v1.secrets"
NOT protoPayload.methodName:"get"
NOT protoPayload.methodName:"list"
NOT protoPayload.methodName:"watch"
Audit-Logeinträge zu Administratoraktivitäten, die sich auf den Ressourcentyp k8s_cluster beziehen und eine Pod-Anfrage von einem bestimmten Nutzer beschreiben.
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.methodName:"io.k8s.core.v1.pods"
protoPayload.authenticationInfo.principalEmail="dev@example.com"

Audit-Logs weiterleiten

Sie können Audit-Logs auf dieselbe Weise wie andere Arten von Logs an unterstützte Ziele weiterleiten. Im Folgenden erfahren Sie, warum es sinnvoll sein kann, Audit-Logs weiterzuleiten:

  • Sie können Kopien von Audit-Logs zu Cloud Storage, BigQuery oder Pub/Sub weiterleiten, um Audit-Logs länger zu behalten oder leistungsfähigere Suchfunktionen zu nutzen. Mit Pub/Sub haben Sie die Möglichkeit, die Logs zu anderen Anwendungen, anderen Repositories und Systemen von Drittanbietern weiterzuleiten.

  • Zum Verwalten der Audit-Logs einer gesamten Organisation können Sie aggregierte Senken erstellen, mit denen sich Logs aus beliebigen oder allen Projekten der Organisation in Google Cloud weiterleiten lassen.

  • Wenn die aktivierten Audit-Logs zum Datenzugriff dazu führen, dass IhreGoogle Cloud -Projekte Ihre Logkontingente überschreiten, können Sie Senken erstellen, die die Audit-Logs zum Datenzugriff aus Logging ausschließen.

Eine Anleitung zum Weiterleiten von Logs finden Sie unter Logs an unterstützte Ziele weiterleiten.

Preise

Informationen zu den Preisen finden Sie auf der Seite Google Cloud Observability – Preise im Abschnitt zu Cloud Logging.

Messwerte und Benachrichtigungen einrichten

In Cloud Monitoring können Sie Messwerte anhand Ihrer Logeinträge einrichten. Zum Einrichten von Diagrammen und Benachrichtigungen können Sie logbasierte Messwerte verwenden.

Audit-Richtlinie

Die Audit-Richtlinie von Kubernetes legt fest, welche Log-Einträge vom Kubernetes-API-Server exportiert werden. Die Audit-Richtlinie von Kubernetes Engine legt fest, welche Einträge in das Administratoraktivitäts-Audit-Log und welche Einträge in das Datenzugriffs--Audit-Log geschrieben werden.

Weitere Informationen zu Audit-Richtlinien in Kubernetes Engine finden Sie unter Audit-Richtlinie von Kubernetes Engine.