Audit-Logs verstehen

Auf dieser Seite werden die Logeinträge von Cloud-Audit-Logs detailliert beschrieben: ihre Struktur, wie sie gelesen und interpretiert werden.

Cloud-Audit-Logs stellen für jedes Google Cloud-Projekt, jeden Ordner und jede Organisation die folgenden Audit-Logs bereit:

  • Audit-Logs zur Administratoraktivität
  • Audit-Logs zum Datenzugriff
  • Audit-Logs zu Systemereignissen
  • Audit-Logs zu Richtlinienverstößen

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, der Ordner oder die Organisation, dem 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 usw. Diese Informationen sind im Feld protoPayload.serviceName des Audit-Logeintrags enthalten.

    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 vom Typ protoPayload. Die Nutzlast eines Audit-Logeintrags ist ein Objekt vom Typ AuditLog. Es definiert eine Reihe von Feldern, die für Cloud-Audit-Logs spezifisch sind, z. B. serviceName und authenticationInfo. Außerdem enthält es das optionale Feld metadata, mit dem Google Cloud-Dienste dienstspezifische Informationen im Audit-Logeintrag auflisten. Einige Google Cloud-Dienste verwenden weiterhin das ältere Feld serviceData, um dienstspezifische Informationen aufzulisten. Eine Liste der Dienste, die das Feld serviceData verwenden, finden Sie unter Dienstspezifische Auditdaten.

  • Einen Lognamen: 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
   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

Innerhalb eines Projekts, Ordners oder einer Organisation werden diese Lognamen in der Regel als activity, data_access, system_event und policy 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 Administratoraktivitäten, der von App Engine geschrieben wurde, um eine Änderung an einer IAM-Richtlinie (Identity and Access Management) mit PROJECT_ID my-gcp-project-id aufzuzeichnen. Zur besseren Übersichtlichkeit wurden einige Teile des Log-Eintrags weggelassen und 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. Er kann im Log-Explorer, in der Logging API oder in der Google Cloud CLI 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-Log-Eintrag

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.

Audit-Logs für Vorgänge mit langer Ausführungszeit

APIs mit lang laufenden Vorgängen geben zwei Audit-Logs aus: eines, wenn die API aufgerufen und der Vorgang gestartet wird, und eines, wenn der Vorgang abgeschlossen ist.

In diesem Fall enthält das Objekt LogEntry das Feld operation. Logeinträge für denselben Vorgang haben für LogEntry.operation.id und LogEntry.operation.producer denselben Wert. Das erste geschriebene Log hat LogEntry.operation.first=true und das Abschlusslog enthält LogEntry.operation.last=true.

Wenn der Vorgang sofort abgeschlossen wird, ist nur ein Log vorhanden, das LogEntry.operation.first=true und LogEntry.operation.last=true enthält.

Diese APIs implementieren den Operations-Dienst. Dieser Dienst gibt in der Regel Audit-Logs aus, wenn er aufgerufen wird. Je nachdem, welche APIs aufgerufen werden, ist protoPayload.methodName einer der folgenden Werte:

  • google.longrunning.Operations.ListOperations
  • google.longrunning.Operations.GetOperation
  • google.longrunning.Operations.CancelOperation
  • google.longrunning.Operations.WaitOperation
  • google.longrunning.Operations.DeleteOperation

LogEntry.operation wird in diesem Fall nicht angegeben, da die API Metadaten zu lang andauernden Vorgängen zurückgibt, selbst aber kein Vorgang mit langer Ausführungszeit ist.

Weitere Informationen zu den geprüften APIs finden Sie unter Google-Dienste mit Audit-Logs, da diese je nach Dienst variieren können.

Audit-Logs für Streaming-APIs

Ähnlich wie bei Vorgängen mit langer Ausführungszeit geben Streaming-APIs zwei Audit-Logs aus: eines beim ersten Aufruf der API und eines, wenn die Streamingverbindung beendet wurde.

In diesem Fall enthält das Objekt LogEntry das Feld operation und Logeinträge für denselben Vorgang haben für LogEntry.operation.id und LogEntry.operation.producer denselben Wert. Das erste geschriebene Log hat LogEntry.operation.first=true und das Abschlusslog enthält LogEntry.operation.last=true.

Diese API kann auch Fortsetzungslogs ohne LogEntry.operation.first oder LogEntry.operation.last ausgeben, um anzuzeigen, dass der Stream geöffnet bleibt.

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
IAM type.googleapis.com/google.iam.v1.logging.AuditData

Audit-Logs ansehen

Sie können nach allen Audit-Logs oder nach dem Namen des Audit-Logs abfragen. Der Audit-Logname enthält die Ressourcenkennung des Google Cloud-Projekts, des Ordners, des Rechnungskontos oder der Organisation, für die Sie Audit-Logging-Informationen aufrufen möchten. Für Abfragen können indexierte LogEntry-Felder angegeben werden. Wenn Sie die Seite Log Analytics verwenden, die SQL-Abfragen unterstützt, haben Sie die Möglichkeit, Abfrageergebnisse als Diagramm anzeigen zu lassen.

Weitere Informationen zum Abfragen Ihrer Logs finden Sie auf den folgenden Seiten:

Sie können Audit-Logs in Cloud Logging mithilfe der Google Cloud Console, der Google Cloud CLI oder der Logging API aufrufen.

Console

In der Google Cloud Console können Sie mit dem Log-Explorer die Audit-Logeinträge für Ihr Google Cloud-Projekt, Ihren Ordner oder Ihre Organisation 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 Google Cloud-Projekt, einen Ordner oder eine Organisation aus.

  3. Wenn Sie alle Audit-Logs aufrufen möchten, geben Sie eine der folgenden Abfragen in das Feld des Abfrageeditors ein und klicken 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 Audit-Logtyp 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 Google Cloud-Projekt, im Ordner oder in der Organisation 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 unter Abfragen im Log-Explorer erstellen. Informationen zum Zusammenfassen von Logeinträgen im Log-Explorer mithilfe von Gemini finden Sie unter Logeinträge mit Gemini-Unterstützung zusammenfassen.

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 ausgewählte Google Cloud-Projekt beziehen.

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

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

Führen Sie den folgenden Befehl aus, um Ihre 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 Ihre 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 Ihre 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 erhalten Sie unter gcloud logging read.

API

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 ausgewählte Google Cloud-Projekt beziehen.

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

  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 Diese API testen Folgendes ein. Wenn Sie auf dieses vorausgefü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 Execute.