Auf dieser Seite werden die Logeinträge von Cloud-Audit-Logs detailliert beschrieben: ihre Struktur, wie sie gelesen und interpretiert werden.
Cloud-Audit-Logging legt für jedes Google Cloud-Projekt, jeden Ordner und jede Organisation die folgenden Audit-Logs an:
- 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 istcloudsql.googleapis.com
usw. Diese Informationen sind im FeldprotoPayload.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 TypAuditLog
. Es definiert eine Reihe von Feldern, die für Cloud-Audit-Logs spezifisch sind, z. B.serviceName
undauthenticationInfo
. 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.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 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 einer Administratoraktivität. Er wurde von Resource Manager erstellt, um eine Änderung an einer IAM-Richtlinie (Identity and Access Management) mit PROJECT_ID my-gcp-project-id
zu erfassen. 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.
Sie kann in Log-Explorer, 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-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
isttype.googleapis.com/google.cloud.audit.AuditLog
.Das Feld
logName
enthält die Domaincloudaudit.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 FeldprotoPayload.methodName
angegeben. Weitere Informationen zum geprüften Vorgang finden Sie im ObjektAuditData
inprotoPayload.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 Feldresource
entnehmen, das den Ressourcentypgae_app
und die Projekt-IDmy-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.
Audit-Logs ansehen
Wenn Sie Audit-Logs suchen und ansehen möchten, müssen Sie die ID des Cloud-Projekts, des Ordners oder der Organisation kennen, 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 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 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
Sie haben mehrere Möglichkeiten, Ihre Audit-Logeinträge aufzurufen.
Console
Sie können mit dem Log-Explorer in der Cloud Console die Audit-Logeinträge für Ihr Cloud-Projekt abrufen:
Rufen Sie in der Cloud Console die Seite Logging > Log-Explorer auf.
Wählen Sie auf der Seite Log-Explorer ein vorhandenes Cloud-Projekt aus.
Führen Sie im Bereich Query Builder folgende Schritte aus:
Wählen Sie unter Ressource den Google Cloud-Ressourcentyp aus, dessen 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.
Wenn diese Optionen nicht angezeigt werden, sind im Cloud-Projekt keine Audit-Logs dieses Typs verfügbar.
Ausführliche Informationen zu Abfragen mit dem neuen Log-Explorer finden Sie unter Logabfragen erstellen.
gcloud
Das gcloud
-Befehlszeilentool bietet eine Befehlszeile für die Cloud Logging API. Geben Sie dabei in jedem Lognamen eine gültige PROJECT_ID
, FOLDER_ID
oder ORGANIZATION_ID
an.
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
Weitere Informationen zur Verwendung des gcloud
-Tools finden Sie unter Logeinträge lesen.
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 rufen Sie Ihre Audit-Logeinträge mit der Logging API auf:
Rufen Sie den Abschnitt Diese API testen in der Dokumentation für die Methode
entries.list
auf.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" }
Klicken Sie auf Ausführen.
Weitere Informationen zu Abfragen finden Sie unter Logging-Abfragesprache.
Ein Beispiel für einen Audit-Log-Eintrag und wie Sie die wichtigsten Informationen darin finden, ist unter Beispiel für einen Audit-Logeintrag enthalten.