Von Aktivitätslogs zu Audit-Logs migrieren


Wenn Sie mithilfe von Aktivitätslogs Administratoraktivitäten und Systemereignisse von Compute Engine ansehen können, lesen Sie diesen Leitfaden. Hier erfahren Sie, wie Sie mithilfe von Audit-Logs nach ähnlichen Logeinträgen suchen. , um die Option zu aktivieren.

Compute Engine-Aktivitätslogs sind veraltet. Sie können Aktivitätslogeinträge anhand ihres Lognamens identifizieren:

logName: "projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"

Compute Engine-Audit-Logs enthalten dieselben Informationen wie die Aktivitätslogs. In Audit-Logs werden die Informationen im Vergleich zu Aktivitätslogs jedoch anders dargestellt. Sie müssen also Ihre Abfragen anpassen.

Informationen zur Migration von Aktivitätslogs zu Audit-Logs

Wenn Sie Audit-Logs anstelle von Aktivitätslogs verwenden möchten, müssen Sie Ihre Abfragenanpassen. Gehen Sie dazu so vor:

  1. Suchen Sie Ihre alten Abfragen. Sie haben sie unter Umständen in einer gespeicherten Suche im Log-Explorer gespeichert oder ein Skript mithilfe der API oder des SDK erstellt. Weitere Informationen dazu, wie Sie Ihre Ressourcen beobachten können, finden Sie im Dokument Logging.

  2. Ersetzen Sie die Felder des Aktivitätslogs durch die entsprechenden Audit-Logfelder. In der Tabelle sehen Sie, wie die Felder verknüpft sind.

    Wenn beispielsweise in der Abfrage des Legacy-Aktivitätslogs nach einem Feld mit dem Namen jsonPayload.resource.name gesucht wurde, sollte in der Abfrage des neuen Audit-Logs stattdessen nach protoPayload.resourceName gesucht werden.

  3. Speichern und verwenden Sie die Abfrage des neuen Audit-Logs. Beispielsweise können Sie in Cloud Logging eine gespeicherte Suchanfrage erstellen oder Ihre Skripts aktualisieren.

Beispiele

Hier einige Beispiele für konvertierte Abfragen:

Aktivität für eine bestimmte Ressource abfragen

Beispielabfrage
Legacy-Aktivitätsloggcloud logging read jsonPayload.resource.name="VM_NAME"
Audit-Log

Verwenden Sie eine der folgenden Optionen:

  1. gcloud logging read protoPayload.resourceName:"VM_NAME"
  2. gcloud logging read protoPayload.resourceName="projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"

Bei Option 1 stimmt der Operator "has" (:) mit allen Ressourcen in Ihrem Projekt überein, die einen Namen haben, der VM_NAME enthält. Bei Option 2 stimmt der Operator "equals" (=) nur mit einer bestimmten vollständig qualifizierten Ressource mit diesem Namen überein.

Neueste Einträge aus dem Administratoraktivitätslog abfragen

Beispielabfrage
Legacy-Aktivitätsloggcloud logging read logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"
Audit-Loggcloud logging read logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"

Neueste Logeinträge über das Erstellen von Instanzen abfragen

Beispielabfrage
Legacy-Aktivitätsloggcloud logging read 'logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log" AND jsonPayload.event_subtype="compute.instances.insert"'
Audit-Loggcloud logging read 'logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND protoPayload.methodName:"compute.instances.insert"'

Abfrage für den Beginn aller Instanzerstellungsvorgänge

Beispielabfrage
Legacy-Aktivitätsloggcloud logging read 'jsonPayload.event_type="GCE_API_CALL" AND jsonPayload.event_subtype="compute.instances.insert"'
Audit-Loggcloud logging read 'operation.first="true" AND protoPayload.methodName:"compute.instances.insert"'

Abfrage für den Abschluss eines beliebigen Vorgangs

Beispielabfrage
Legacy-Aktivitätsloggcloud logging read jsonPayload.event_type="GCE_OPERATION_DONE"
Audit-Loggcloud logging read operation.last="true"

Unterschiede zwischen Aktivitätslogs und Audit-Logs

In diesem Abschnitt erfahren Sie, wie sich die Struktur von Audit-Logs von der von Aktivitätslogs unterscheidet. Beachten Sie diese Unterschiede, wenn Sie Abfragen des Legacy-Aktivitätslogs in Abfragen des Audit-Logs umwandeln. Ersetzen Sie beispielsweise in Ihren Abfragen alle Feldnamen des Legacy-Aktivitätslogs durch die entsprechenden Feldnamen des Audit-Logs.

Zwar geben Audit-Logs und Aktivitätslogs jeweils Logeintragsobjekte zurück, unterscheiden sich jedoch in folgenden Punkten:

  • Verschiedene Feldnamen Weitere Informationen finden Sie in der Tabelle Antwortfeldnamen.
  • Verschiedene Feldwerte, einschließlich:
    • Unterschiedliche Lognamen: Audit-Logs haben Lognamen, die cloudaudit.googleapis.com enthalten.
    • Unterschiedliche Nutzlasten: Audit-Logs geben statt jsonPayload ein protoPayload-Feld zurück.
    • Vollständig qualifizierte Ressourcennamen: Audit-Logs geben Ressourcennamen zurück, die ihren Pfad enthalten, z. B. projects/my-project/zones/us-east1-b/instances/my-instance-name.
    • Versionierte Methodennamen: Audit-Logs geben Methodennamen zurück, die ihre Version enthalten, z. B. v1.

Das folgende Beispiel zeigt die Unterschiede bei Lognamen und Nutzlasten:

Beispiel-Logeintrag
Legacy-Aktivitätslog

{
  insertId:  "1x3bbhjg2wwvz1x"
  jsonPayload: {
    event_subtype: "compute.instances.stop"
    ...
    resource: {
      id: "12345678900123456789"
      name: "my-instance-name"
      type: "instance"
      zone: "us-east1-b"
    }
    ...
  }
  labels: {…}
  logName:  "projects/my-project/logs/compute.googleapis.com%2Factivity_log"
  receiveTimestamp:  "2019-08-26T12:22:44.602794616Z"
  ...
}
Audit-Log

{
  insertId:  "-w6o499e22fwk"
  logName:  "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity"
  protoPayload: {
    ...
    methodName: "beta.compute.instances.stop"
    ...
    resourceName: "projects/my-project/zones/us-east1-b/instances/my-instance-name"
  }
  receiveTimestamp:  "2019-08-26T12:22:46.881198276Z"
  ...
}

Felder aus Aktivitätslogs zu Audit-Logs zuordnen

Anhand der folgenden Tabellen können Sie in Ihren Abfragen den entsprechenden Audit-Logfeldern die Felder des Aktivitätslogs zuordnen.

Felder

Verwenden Sie die folgende Tabelle, um in den aktualisierten Abfragen die Felder der Legacy-Aktivitäts-Logs durch Audit-Log-Felder zu ersetzen.

Beispiel: In Ihrer Abfrage des alten Aktivitätslogs war ein auf jsonPayload.resource.type basierender Filter enthalten. Dann sollte in der Abfrage des neuen Audit-Logs stattdessen auf resource.type gefiltert werden.

Legacy-Aktivitäts-Log-Feld Audit-Log-Feld
insertId insertId
jsonPayload.actor.user protoPayload.authenticationInfo.principalEmail
jsonPayload.event_subtype protoPayload.methodName
jsonPayload.event_timestamp_us timestamp
jsonPayload.event_type="GCE_API_CALL" operation.first="true"
jsonPayload.event_type="GCE_OPERATION_DONE" operation.last="true"
jsonPayload.request protoPayload.request
jsonPayload.operation operation
jsonPayload.resource.id resource.labels.instance_id
jsonPayload.resource.name protoPayload.resourceName
jsonPayload.resource.type resource.type
jsonPayload.resource.zone resource.labels.zone
jsonPayload.trace_id operation.id
jsonPayload.user_agent protoPayload.requestMetadata.callerSuppliedUserAgent
labels.compute.googleapis.com/resource_id resource.labels.[RESOURCE_TYPE]_id
labels.compute.googleapis.com/resource_name protoPayload.resourceName
labels.compute.googleapis.com/resource_type resource.type
labels.compute.googleapis.com/resource_zone Eine der folgenden Möglichkeiten:
  • resource.labels.zone
  • resource.labels.region
  • resource.labels.location
logName logName
receiveTimestamp receiveTimestamp
resource.labels resource.labels
severity severity
timestamp timestamp

Feldwerte

Anhand der folgenden Tabelle können Sie die Feldwerte des Legacy-Aktivitätslogs den Feldwerten des Audit-Logs zuordnen. Im Vergleich zu Aktivitätslogs haben Audit-Logs mehrere Werte für Lognamen und unterschiedliche Nutzlastwerte. Audit-Logeinträge geben außerdem vollständig qualifizierte Ressourcennamen und versionierte Methodennamen zurück.

Lognamen

Wenn Sie einen Audit-Logeintrag finden möchten, suchen Sie nach einem logName, der cloudaudit.googleapis.com enthält.

LognameLoginhalte
Legacy-Aktivitätslogprojects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_logAdministratoraktivitäten und Systemereignisse
Audit-Logprojects/PROJECT_ID/logs/cloudaudit.googleapis.com%2FactivityAdministratoraktivität
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_eventSystemereignisse
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_accessDatenzugriff

Nutzlasten

Suchen Sie in jedem Audit-Logeintrag nach einem protoPayload statt einem jsonPayload.

NutzlasttypBeispiel für eine Nutzlast
Legacy-AktivitätslogjsonPayload

    jsonPayload: {
      actor: {…}
      event_subtype:  "compute.instances.start"
      event_timestamp_us:  "1566404493487248"
      event_type:  "GCE_API_CALL"
      ip_address:  ""
      operation: {…}
      request: {…}
      resource: {…}
      trace_id:  "operation-1566404491560-590a2f74b4705-a1ae0686-d896d772"
      user_agent:  "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
      version:  "1.2"
    }
Audit-LogprotoPayload

    protoPayload: {
      @type:  "type.googleapis.com/google.cloud.audit.AuditLog"
      authenticationInfo: {…}
      methodName:  "v1.compute.instances.start"
      request: {…}
      requestMetadata: {…}
      resourceName:  "projects/my-project/zones/us-central1-a/instances/alert"
      serviceName:  "compute.googleapis.com"
    }

Im Abschnitt Logeintragsfelder zuordnen erfahren Sie, in welcher Beziehung diese Nutzlasten zueinander stehen und wie Sie Audit-Logfelder den Feldern des alten Aktivitätslogs zuordnen können.

Ressourcennamen

In Audit-Logs sind API-Ressourcennamen (im Feld protoPayload.resourceName) vollständig qualifiziert. Beispiel:

resourceName: "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"

Sie können weiterhin Teile von Namen verwenden, aber Sie müssen Ihre Abfrage so anpassen, dass der Operator "has" (:) anstelle des Operators "equals" verwendet wird.

Verwenden Sie eine der folgenden Optionen in Ihren Abfragen des Audit-Logs, um nach einer bestimmten Ressource zu filtern:

  • gcloud logging read protoPayload.resourceName:"VM_NAME"
  • gcloud logging read protoPayload.resourceName="projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"

Methodennamen

In Audit-Logs wird den Namen der API-Methoden (im Feld protoPayload.methodName) die jeweilige Version als Präfix-Angabe vorangestellt, z. B.: v1.compute.instances.delete.

FeldWertBeispielabfrage
Legacy-AktivitätslogjsonPayload.event_subtypeRESOURCE.METHODjsonPayload.event_subtype=compute.instances.delete
Audit-LogprotoPayload.methodNameAPI_VERSION.RESOURCE.METHODprotoPayload.methodName=v1.compute.instances.delete
oder
protoPayload.methodName=beta.compute.instances.delete
oder
protoPayload.methodName:compute.instances.delete

Sie können in Ihren Abfragen des Audit-Logs weiterhin nicht-versionierte Methodennamen verwenden, müssen jedoch Ihre Abfrage so korrigieren, dass der Operator "has" (:) anstelle des Operators "equals" (=) verwendet wird. Beispiel: Mit protoPayload.methodName:compute.instances.delete werden alle API-Aufrufe zum Löschen von Instanzen unabhängig von der Version zurückgegeben. Weitere Informationen zu Operatoren finden Sie unter Vergleiche.

Nächste Schritte