Auf dieser Seite werden die Logeinträge von Cloud-Audit-Logs detailliert beschrieben: ihre Struktur, wie sie gelesen und interpretiert werden.
Cloud-Audit-Logging erstellt für jedes Google Cloud Projekt, jeden Ordner und jede Organisation die folgenden Audit-Logs:
- Audit-Logs zu Administratoraktivitäten
- 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.comund so weiter. Diese Informationen werden im FeldprotoPayload.serviceNamedes 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 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.serviceNameundauthenticationInfo. Außerdem enthält es ein optionales Feld,metadata, das von Google Cloud -Diensten verwendet wird, um dienstspezifische Informationen im Audit-Logeintrag aufzulisten. Einige Google Cloud Dienste verwenden weiterhin das ältere FeldserviceData, um dienstspezifische Informationen aufzulisten. Eine Liste der Dienste, die das FeldserviceDataverwenden, finden Sie unter Dienstspezifische Auditdaten.Einen Lognamen: Audit-Logeinträge gehören zu Logs in Rechnungskonten, Projekten, Ordnern und Organisationen. In der folgenden Tabelle sind die Lognamen 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 Abrechnungskontos, 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 App Engine 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 Logeintrags 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 vorherigen Beispieleintrags für den Audit-Logeintrag verwendet wurde. Die Abfrage kann im Log-Explorer, in der Logging API oder in der Google Cloud CLI verwendet werden. Die Projekt-ID ist im Lognamen enthalten:
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 vorherigen 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.@typeisttype.googleapis.com/google.cloud.audit.AuditLog.Das Feld
logNameenthä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.serviceNamedes Audit-Logeintrags aufgeführt.Welcher Vorgang wird überprüft? Geprüft wird
SetIamPolicy, wie im FeldprotoPayload.methodNameangegeben. Weitere Informationen zum geprüften Vorgang finden Sie im ObjektAuditDatainprotoPayload.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-idverknüpft ist. Sie können dies dem Feldresourceentnehmen, das den Ressourcentypgae_appund die Projekt-IDmy-gcp-project-idangibt. 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, die Vorgänge mit langer Ausführungszeit sind, geben zwei Audit-Logs aus: eines, wenn die API aufgerufen wird und der Vorgang beginnt, und eines, wenn der Vorgang abgeschlossen ist.
In diesem Fall enthält das LogEntry-Objekt ein operation-Feld.
Logeinträge für denselben Vorgang haben denselben Wert für LogEntry.operation.id und LogEntry.operation.producer.
Der erste Logeintrag, der geschrieben wurde, hat LogEntry.operation.first=true und der Abschluss-Logeintrag hat LogEntry.operation.last=true.
Wenn der Vorgang sofort abgeschlossen wird oder fehlschlägt, gibt es nur einen Logeintrag, der sowohl LogEntry.operation.first=true als auch LogEntry.operation.last=true enthält.
Bei einigen Diensten wird das Feld LogEntry.operation nicht ausgefüllt, wenn der Vorgang fehlschlägt. Welche Vorgänge lange dauern, können Sie jedoch der Dokumentation zur Audit-Protokollierung des Dienstes entnehmen.
Diese APIs implementieren den Operations-Dienst.
Dieser Dienst gibt in der Regel Audit-Log-Einträge aus, wenn er aufgerufen wird. Je nachdem, welche APIs aufgerufen werden, ist protoPayload.methodName einer der folgenden Werte:
google.longrunning.Operations.ListOperationsgoogle.longrunning.Operations.GetOperationgoogle.longrunning.Operations.CancelOperationgoogle.longrunning.Operations.WaitOperationgoogle.longrunning.Operations.DeleteOperation
LogEntry.operation ist in diesem Fall nicht angegeben, da diese API Metadaten zu lang andauernden Vorgängen zurückgibt, aber selbst kein lang andauernder Vorgang ist.
Unter Google Cloud -Dienste mit Audit-Logs finden Sie Details dazu, welche APIs geprüft werden, da dies je nach Dienst variieren kann.
Audit-Logs für Streaming-APIs
Ähnlich wie bei Vorgängen mit langer Laufzeit werden bei Streaming-APIs zwei Audit-Log-Einträge ausgegeben: einer beim ersten Aufruf der API und einer beim Ende der Streamingverbindung.
In diesem Fall enthält das Objekt LogEntry ein Feld operation und Logeinträge für denselben Vorgang haben denselben Wert für LogEntry.operation.id und LogEntry.operation.producer.
Das erste Protokoll hat LogEntry.operation.first=true und das Abschluss-Protokoll hat LogEntry.operation.last=true.
Diese API kann auch Fortsetzungs-Logeinträge ohne LogEntry.operation.first oder LogEntry.operation.last ausgeben, um anzugeben, dass der Stream weiterhin geöffnet ist.
Dienstspezifische Auditdaten
Einige Dienste erweitern die in ihrem AuditLog gespeicherten Informationen, indem sie eine zusätzliche Datenstruktur in das Feld serviceData des Audit-Logeintrags 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
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:
- Logs mit Loganalysen abfragen und analysieren
- Beispielabfragen für Sicherheitsinformationen
- Ergebnisse von SQL-Abfragen in Diagrammen darstellen
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:
-
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf:
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.
Wählen Sie ein vorhandenes Projekt, einen Ordner oder eine Organisation in Google Cloud aus.
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"
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:
Rufen Sie in der Dokumentation für die Methode
entries.listden Abschnitt Diese API testen auf.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" }Klicken Sie auf Ausführen.