Audit-Logs verstehen

Auf dieser Seite werden die Audit-Logeinträge detailliert beschrieben: ihre Struktur, das Lesen und das Interpretieren.

Cloud-Audit-Logging legt für jedes Google Cloud-Projekt, jeden Ordner und jede Organisation drei Audit-Logs an:

  • Audit-Logs zu Systemereignissen
  • Audit-Logs zur Administratoraktivität
  • Auditlogs zum Datenzugriff

Eine allgemeine Übersicht über Cloud-Audit-Logs finden Sie unter Cloud-Audit-Logs.

Format der Audit-Logeinträge

Ein Audit-Logeintrag ist ein bestimmter Typ von Cloud Logging-Logeinträgen. Wie alle Logging-Logeinträge wird ein Audit-Logeintrag in einem LogEntry-Objekt gespeichert. Ein Audit-Logeintrag unterscheidet sich von anderen Logeinträgen durch das Feld protoPayload. In Audit-Logeinträgen enthält das Feld protoPayload des Logeintrags ein AuditLog-Objekt, das die Audit-Logging-Daten speichert.

Kurz gesagt, jeder Audit-Logeintrag ist durch folgende Informationen gekennzeichnet:

  • Das Projekt oder die Organisation, der der Logeintrag gehört.
  • Die Ressource, für die der Logeintrag gilt. Diese Informationen bestehen aus einem Ressourcentyp aus der Liste überwachter Ressourcen und weiteren Werten, die eine spezifische Instanz bestimmen. Sie können beispielsweise Audit-Logeinträge einer einzelnen Compute Engine-VM-Instanz oder aller VM-Instanzen aufrufen.
  • Einen Zeitstempel
  • Einen Dienst: Dienste sind einzelne Google Cloud-Produkte wie Compute Engine, Cloud SQL oder Pub/Sub. Jeder Dienst wird über seinen Namen identifiziert: Compute Engine ist compute.googleapis.com, Cloud SQL ist cloudsql.googleapis.com und so weiter. Diese Informationen werden im Feld protoPayload.serviceName des Audit-Logeintrags aufgeführt.

    Ressourcentypen gehören jeweils zu einem Dienst, wobei ein Dienst mehrere Ressourcentypen haben kann. Eine Liste der Dienste und Ressourcen finden Sie unter Dienste zu Ressourcen zuordnen.

  • Eine Nutzlast des Typs protoPayload. Die Nutzlast jedes Audit-Logeintrags ist ein Objekt des Typs AuditLog. Dies definiert eine Reihe von Feldern, die für Audit-Logging spezifisch sind, wie z. B. serviceName und authenticationInfo. Außerdem enthält es ein optionales Feld serviceData, das von einigen Google Cloud-Diensten verwendet wird, um dienstspezifische Informationen im Audit-Logeintrag aufzulisten. Unter Dienstspezifische Auditdaten finden Sie eine Liste von Google Cloud-Diensten, die dieses Feld verwenden.

  • Logname: Audit-Logeinträge gehören zu Logs in Projekten, Ordnern und Organisationen. Die Lognamen sind unten aufgeführt:

   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

   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

   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

Innerhalb eines Projekts, Ordners oder einer Organisation werden diese Lognamen in der Regel mit activity, data_access und system_event abgekürzt.

Beispiel für einen Audit-Logeintrag

In diesem Abschnitt wird anhand eines beispielhaften Audit-Logeintrags erläutert, wie Sie die wichtigsten Informationen in Audit-Logeinträgen finden.

Das folgende Beispiel zeigt einen Audit-Logeintrag zu einer Administratoraktivität. Er wurde von Resource Manager erstellt, um eine Änderung an einer Richtlinie von Cloud Identity and Access Management im Google Cloud-Projekt my-gcp-project-id zu erfassen. Zur besseren Übersichtlichkeit wurden einige Teile des Logeintrags weggelassen und gewisse Felder hervorgehoben:

    {
      protoPayload: {
        @type: "type.googleapis.com/google.cloud.audit.AuditLog",
        status: {},
        authenticationInfo: {
          principalEmail: "user@example.com"
        },
        serviceName: "appengine.googleapis.com",
        methodName: "SetIamPolicy",
        authorizationInfo: [...],
        serviceData: {
          @type: "type.googleapis.com/google.appengine.legacy.AuditData",
          policyDelta: { bindingDeltas: [
              action: "ADD",
              role: "roles/logging.privateLogViewer",
              member: "user:user@example.com"
          ], }
        },
        request: {
          resource: "my-gcp-project-id",
          policy: { bindings: [...], }
        },
        response: {
          bindings: [
            {
              role: "roles/logging.privateLogViewer",
              members: [ "user:user@example.com" ]
            }
          ],
        }
      },
      insertId: "53179D9A9B559.AD6ACC7.B40604EF",
      resource: {
        type: "gae_app",
        labels: { project_id: "my-gcp-project-id" }
      },
      timestamp: "2019-05-27T16:24:56.135Z",
      severity: "NOTICE",
      logName: "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity",
    }

Dies ist die Abfrage, die zur Auswahl des obigen Beispieleintrags für den Audit-Logeintrag verwendet wurde. Sie kann in der erweiterten Loganzeige, in der Logging API oder im Cloud SDK verwendet werden. Die Projekt-ID ist im Lognamen enthalten und die Abfrage wird schnell verarbeitet, da das Feld logName indexiert ist:

    resource.type = "gae_app"
    logName = "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity"

Wenn Sie Audit-Logs einer einzelnen Instanz eines Ressourcentyps suchen, z. B. gce_instance, fügen Sie einen Instanzqualifizierer hinzu:

    resource.type = "gce_instance"
    resource.instance_id = "[INSTANCE_ID]/
    logName = "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity"

Interpretieren des Beispiels für einen Audit-Logeintrag

Im obigen Beispiel für einen Audit-Logeintrag sind die angezeigten Felder protoPayload, insertId, resource, timestamp, severity und logName Bestandteile des Objekts LogEntry. Der Wert des Feldes protoPayload ist ein AuditLog-Objekt. Es enthält die Audit-Logdaten.

Wenn Sie sich das Beispiel für den Audit-Logeintrag ansehen, kommen unter Umständen Fragen auf:

  • Ist dies ein Audit-Logeintrag? Ja, das können Sie auf zwei Arten erkennen:

    • Das Feld protoPayload.@type ist type.googleapis.com/google.cloud.audit.AuditLog.

    • Das Feld logName enthält die Domain cloudaudit.googleapis.com.

  • Welcher Dienst hat das Audit-Log verfasst? Das Log wurde von App Engine geschrieben. Diese Informationen werden im Feld protoPayload.serviceName des Audit-Logeintrags aufgeführt.

  • Welcher Vorgang wird überprüft? Geprüft wird SetIamPolicy, wie im Feld protoPayload.methodName angegeben. Weitere Informationen zum geprüften Vorgang finden Sie im Objekt AuditData in protoPayload.serviceData.

  • Welche Ressource wird geprüft? Geprüft wird eine Anwendung, die in App Engine ausgeführt wird und mit einem Google Cloud-Projekt my-gcp-project-id verknüpft ist. Sie können dies dem Feld resource entnehmen, das den Ressourcentyp gae_app und die Projekt-ID my-gcp-project-id angibt. In diesem Beispiel finden Sie Details zum Ressourcentyp in der Liste überwachter Ressourcen.

Weitere Informationen finden Sie unter Typ LogEntry, Typ AuditLog und IAM-Typ AuditData.

Große oder lange laufende Audit-Logeinträge

Ein einzelner geprüfter Vorgang wird auf mehrere Logeinträge aufgeteilt, wenn der Vorgang asynchron ausgeführt wird oder wenn er einen großen AuditLog-Datensatz generiert. Wenn für denselben Vorgang mehr als ein Logeintrag vorhanden ist, enthält das Objekt LogEntry ein Feld operation und die Einträge für denselben Vorgang haben denselben Wert unter LogEntry.operation.id und LogEntry.operation.producer.

Im obigen Beispiel für einen Audit-Logeintrag ist das Feld operation nicht vorhanden. Dies bedeutet, dass alle Audit-Informationen in einem einzelnen Logeintrag enthalten sind.

Dienstspezifische Auditdaten

Einige Dienste erweitern die in ihrem AuditLog gespeicherten Informationen, indem sie eine zusätzliche Datenstruktur in das Feld serviceData des Audit-Logs einfügen. In der folgenden Tabelle sind die Dienste aufgeführt, die das Feld serviceData verwenden. Außerdem finden Sie einen Link zu deren AuditData -Typ.

Dienst Dienstdatentyp
App Engine type.googleapis.com/google.appengine.v1.AuditData
App Engine (Legacy) type.googleapis.com/google.appengine.legacy.AuditData
BigQuery type.googleapis.com/google.cloud.bigquery.logging.v1.AuditData
Cloud Identity and Access Management type.googleapis.com/google.iam.v1.logging.AuditData

Audit-Logs ansehen

Wenn Sie Audit-Logs suchen und ansehen möchten, brauchen Sie die ID des Cloud-Projekts, des Ordners oder der Organisation, für die Sie Audit-Logging-Informationen abrufen möchten. Sie können weitere indexierte LogEntry-Felder angeben, z. B. resource.type. Weitere Informationen erhalten Sie unter Logeinträge schnell finden.

Im Folgenden finden Sie die Namen der Audit-Logs. Sie enthalten Variablen für die IDs des Cloud-Projekts, des Ordners oder der Organisation.

   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

   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

   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

Sie haben mehrere Möglichkeiten, Ihre Audit-Logeinträge aufzurufen.

Console

Sie können mit der Loganzeige in der Cloud Console die Audit-Logeinträge für Ihr Cloud-Projekt abrufen:

  1. Rufen Sie in der Cloud Console die Seite Cloud Logging > Loganzeige auf:

    Loganzeige aufrufen

  2. Wählen Sie unter Klassisch die Option Vorschau der neuen Loganzeige ansehen aus.

  3. Wählen Sie ein vorhandenes Cloud-Projekt aus.

  4. Führen Sie im Bereich Query Builder die folgenden Schritte aus:

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

    • Wählen Sie unter Logname den anzuzeigenden Audit-Logtyp aus:

    • Wählen Sie für Audit-Logs zu Administratoraktivitäten activity aus.

    • Wählen Sie für Audit-Logs zu Datenzugriffen data_access aus.

    • Wählen Sie für Audit-Logs zu Systemereignissen system_events aus.

    Wenn diese Optionen nicht angezeigt werden, sind im Cloud-Projekt keine Audit-Logs dieses Typs verfügbar.

    Weitere Informationen zu Abfragen mit der neuen Loganzeige finden Sie unter Logabfragen erstellen (Vorschau).

API

Ersetzen Sie beim Erstellen Ihrer Abfragen die Variablen durch gültige Werte, ersetzen Sie den entsprechenden Audit-Lognamen oder die entsprechenden Kennungen auf Projektebene, Ordnerebene oder Organisationsebene, wie in den Audit-Lognamen aufgeführt. Wenn die Abfrage beispielsweise eine project-id enthält, muss sich die von Ihnen angegebene Projekt-ID auf das aktuell ausgewählte Cloud-Projekt beziehen.

So prüfen Sie Ihre Audit-Logeinträge mithilfe der Logging API:

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

  2. Geben Sie im Teil Anfragetext des Formulars API testen Folgendes ein. Wenn Sie auf dieses vorausgefüllte Formular klicken, wird der Anfragetext automatisch übernommen. Sie müssen nur noch 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.

Weitere Informationen zu Abfragen finden Sie unter Logging-Abfragesprache.

gcloud

Das gcloud-Befehlszeilentool bietet eine Befehlszeilenschnittstelle mit der Cloud Logging API. Geben Sie dabei in jedem Lognamen eine gültige project-id, folder-id oder organization-id an.

Führen Sie folgenden Befehl aus, um Ihre Audit-Logeinträge auf Projektebene in Google Cloud zu lesen:

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

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

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

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

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

Weitere Informationen zur Verwendung des gcloud-Tools finden Sie unter Logeinträge lesen.

Ein Beispiel für einen Audit-Logeintrag und wie Sie die wichtigsten Informationen darin finden, ist in Audit-Logs verstehen enthalten.

Weitere Informationen zum Auffinden von Audit-Logs mit der Loganzeige, einschließlich Tipps zur Abfragesyntax, erhalten Sie unter Logs aufrufen.