Audit-Logging für VPC Service Controls

In diesem Dokument werden die Audit-Logs beschrieben, die von VPC Service Controls als Teil der Cloud-Audit-Logs erstellt werden.

Überblick

Google Cloud-Dienste schreiben Audit-Logs, aus denen in Bezug auf Ihre Google Cloud-Ressourcen hervorgeht, wer was wo und wann getan hat.

Ihre Google Cloud-Projekte enthalten nur die Audit-Logs für Ressourcen, die sich direkt im Google Cloud-Projekt befinden. Andere Google Cloud-Ressourcen wie Ordner, Organisationen und Rechnungskonten enthalten jeweils eigene Audit-Logs.

Eine allgemeine Übersicht über Cloud-Audit-Logs finden Sie unter Cloud-Audit-Logs. Detaillierte Informationen zum Format von Audit-Logs finden Sie unter Audit-Logs verstehen.

Verfügbare Audit-Logs

Für VPC Service Controls sind die folgenden Arten von Audit-Logs verfügbar:

  • Audit-Logs zu Richtlinienverstößen

    Gibt an, wenn einem Nutzer oder Dienstkonto der Zugriff aufgrund eines Sicherheitsrichtlinienverstoßes verweigert wird. Der Dienstname und der Methodenname in Audit-Logs zu Richtlinienverstößen geben die Namen der Ressource an, auf die dem Nutzer oder Dienstkonto der Zugriff verweigert wurde.

    Sie können Audit-Logs zu Richtlinienverstößen nicht deaktivieren. Sie können jedoch dem Ausschlussfilter für die Senke _Default Folgendes hinzufügen, um Audit-Logs zu Richtlinienverstößen auszuschließen: LOG_ID("cloudaudit.googleapis.com/policy"). Sie können auch die Senke _Default für Cloud Logging deaktivieren. Dadurch wird verhindert, dass Logs an den Bucket _Default weitergeleitet werden.

Ausführlichere Beschreibungen der Audit-Logtypen finden Sie unter Arten von Audit-Logs.

Geprüfte Vorgänge

In der folgenden Tabelle wird zusammengefasst, welche API-Vorgänge dem jeweiligen Audit-Logtyp in VPC Service Controls entsprechen:

Audit-Logkategorie VPC Service Controls-Methoden
Audit-Logs zu Richtlinienverstößen Es werden die Methoden der Dienste unterstützt, die in VPC Service Controls eingebunden sind.

Inhalt von Audit-Log-Einträgen

Jeder Audit-Log-Eintrag enthält Informationen, die in zwei Hauptkategorien unterteilt werden können: Informationen zum ursprünglichen Aufruf und Informationen zu Verstößen gegen die Sicherheitsrichtlinien. Die Informationen werden wie nachfolgend beschrieben durch die VPC Service Controls API angegeben:

Audit-Log-Feld Beschreibung
serviceName Der Dienst, auf den der Zugriff durch einen Dienstperimeter beschränkt ist. Die Anfrage an diesen Dienst hat gegen eine Prüfung von VPC Service Controls verstoßen und zur Erstellung dieses Audit-Logs geführt.
methodName Der Name des Methodenaufrufs, der zu dem im Eintrag beschriebenen Verstoß gegen die Sicherheitsrichtlinien geführt hat. Häufig ist methodName die Methode, die mit dem Google Cloud-Dienst verknüpft ist, der im Feld serviceName angegeben ist.
authenticationInfo.principalEmail Die E-Mail-Adresse des Nutzers oder Dienstkontos, von dem die Anfrage stammt.
Einige E-Mail-Adressen werden möglicherweise entfernt. Weitere Informationen finden Sie unter Aufruferidentitäten in Audit-Logs.
resourceName Die Google Cloud-Ressource, die in der ursprünglichen Anfrage vom Client angegeben wurde. Die resourceName kann ein Projekt, ein Ordner, eine Organisation oder eine Ressource wie ein Google Cloud-Bucket sein.
requestMetadata.callerIp

Die IP-Adresse des Aufrufers.

Wenn der Aufruf aus dem Internet stammt, ist requestMetadata.callerIp eine öffentliche IPv4- oder IPv6-Adresse.

Wenn der Aufruf von einer Compute Engine-VM stammt, ist requestMetadata.callerIp eine VM-IP-Adresse. Die VM-IP-Adresse kann eine interne oder eine externe IP-Adresse sein.

Wenn der Aufruf aus dem internen Produktionsnetzwerk von Google stammt, lautet der Wert in diesem Feld private. Dieser Fall tritt auf, wenn der Aufruf von einem Google Cloud-Dienst an einen anderen gesendet wird.

request_metadata.caller_network Der Name des Netzwerks des Anrufers. Dieser Wert wird nur festgelegt, wenn das Netzwerk-Hostprojekt zu derselben Google Cloud-Organisation oder demselben Google Cloud-Projekt gehört, zu der die Ressource gehört, auf die zugegriffen wird. Weitere Informationen finden Sie unter VPC-Netzwerke.
status Der Gesamtstatus der Verarbeitung eines im Eintrag beschriebenen Vorgangs.
metadata Die Informationen zum Verstoß gegen die Sicherheitsrichtlinie.
metadata.resourceNames Die Namen der Ressourcen, die am Sicherheitsrichtlinienverstoß beteiligt sind, der im Eintrag beschrieben ist.
metadata.dryRun Ein boolescher Wert, der True ist, wenn das Audit-Log für eine Probelaufrichtlinienprüfung vorgesehen ist.
metadata.vpcServiceControlsUniqueId Die eindeutige Kennung des im Eintrag beschriebenen Verstoßes gegen VPC Service Controls.
metadata.violationReason Der Grund für den Verstoß RESOURCE_NOT_IN_SAME_SERVICE_PERIMETER bedeutet beispielsweise, dass die Ressourcen, auf die zugegriffen wird, nicht zum selben Dienstperimeter gehören.
metadata.securityPolicyInfo Der Name des Dienstperimeters, für den der Verstoß aufgetreten ist, und die eindeutige Kennung der Organisation, zu der der Perimeter gehört.
metadata.egressViolations Ein Verstoß für ausgehenden Traffic tritt in der Regel auf, wenn eine Anfrage fehlschlägt, weil die Quelle durch einen Dienstperimeter geschützt ist und sich die Zielressource außerhalb des Perimeters befindet. Die Quelle kann ein Projekt oder ein VPC-Netzwerk sein.
metadata.ingressViolations Die Art des Verstoßes. Dieser Verstoß tritt häufig auf, wenn die Anfrage versucht, auf eine Zielressource zuzugreifen, die durch einen Dienstperimeter geschützt ist. Die Quelle kann entweder ein Projekt oder ein VPC-Netzwerk sein. Dieses Feld enthält eine Struktur, die den Verstoß für eingehenden Traffic erklärt.
metadata.accessLevels Alle übereinstimmenden Zugriffsebenen unter der Organisation, die zur selben Zugriffsrichtlinie gehört. Diese Zugriffsebenen werden möglicherweise nicht im verletzten Perimeter angegeben und können daher zum Verstoß gegen NO_MATCHING_ACCESS_LEVEL führen.
metadata.intermediateServices Die Liste der Dienste, die an der Anfragekette beteiligt sind. Bei vom Nutzer initiierten Anfragen ist dieses Feld leer.
metadata.deviceState Der Status des Geräts, das die Anfrage erstellt, wenn die Geräterichtlinie aktiviert ist. Der Standardwert für dieses Feld ist Unknown.

Audit-Logformat

Audit-Logeinträge umfassen folgende Komponenten:

  • Den Logeintrag selbst. Dabei handelt es sich um ein Objekt vom Typ LogEntry. Interessante Felder sind unter anderem:

    • logName enthält die Ressourcen-ID und den Audit-Logtyp.
    • resource enthält das Ziel zum geprüften Vorgang
    • timeStamp enthält die Uhrzeit des geprüften Vorgangs
    • protoPayload enthält die geprüften Informationen
  • Die Audit-Logdaten, bei denen es sich um ein AuditLog-Objekt handelt, das sich im Feld protoPayload des Logeintrags befindet

  • Optionale dienstspezifische Auditinformationen. Das Objekt ist dienstspezifisch. Bei früheren Integrationen befindet sich dieses Objekt im Feld serviceData des AuditLog-Objekts. Spätere Integrationen verwenden das Feld metadata.

Informationen zu anderen Feldern in diesen Objekten sowie zu deren Interpretation finden Sie unter Audit-Logs verstehen.

Logname

Lognamen von Cloud-Audit-Logs enthalten Ressourcenkennungen, die das Google Cloud-Projekt oder eine andere Google Cloud-Entität angeben, die der Inhaber der Audit-Logs ist. Außerdem zeigen sie an, ob das Log Audit-Logging-Daten zu Administratoraktivitäten, Datenzugriff, Richtlinienverweigerung oder Audit-Systemereignissen enthält.

Im Folgenden finden Sie die Namen der Audit-Logs, einschließlich Variablen für die Ressourcenkennungen:

   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

Dienstname

Für Audit-Logs von VPC Service Controls werden die Dienstnamen der Dienste verwendet, die in VPC Service Controls eingebunden sind.

Eine vollständige Liste aller Cloud Logging API-Dienstnamen und des jeweiligen überwachten Ressourcentyps finden Sie unter Dienste Ressourcen zuordnen.

Ressourcentypen

Die Audit-Logs von VPC Service Controls verwenden die Ressourcentypen, die von den Diensten unterstützt werden, die in VPC Service Controls eingebunden sind.

Eine Liste aller überwachten Cloud Logging-Ressourcentypen und beschreibende Informationen finden Sie unter Überwachte Ressourcentypen.

Aufruferidentitäten

Die IP-Adresse des Aufrufers wird im Feld RequestMetadata.caller_ip des AuditLog-Objekts gespeichert. In Logging können bestimmte Aufruferidentitäten und IP-Adressen entfernt werden.

Informationen dazu, welche Informationen in Audit-Logs entfernt werden, finden Sie unter Aufruferidentitäten in Audit-Logs.

Audit-Logging aktivieren

Audit-Logs zu Administratoraktivitäten sind immer aktiviert. Sie können sie nicht deaktivieren.

Berechtigungen und Rollen

IAM-Berechtigungen und -Rollen bestimmen Ihre Fähigkeit, auf Audit-Logdaten in Google Cloud-Ressourcen zuzugreifen.

Berücksichtigen Sie Folgendes bei der Entscheidung, welche Logging-spezifischen Berechtigungen und Rollen für Ihren Anwendungsfall gelten:

  • Die Rolle „Log-Betrachter“ (roles/logging.viewer) bietet Ihnen Lesezugriff auf die Audit-Logs zu Administratoraktivitäten, abgelehnten Richtlinien und Systemereignissen. Wenn Sie nur diese Rolle haben, können Sie keine Audit-Logs zum Datenzugriff aufrufen, die sich im Bucket _Default befinden.

  • Die Rolle „Betrachter privater Logs“ ((roles/logging.privateLogViewer) enthält die Berechtigungen, die in roles/logging.viewer enthalten sind, sowie die Möglichkeit, Audit-Logs zum Datenzugriff im Bucket _Default zu lesen.

    Wenn diese privaten Logs in benutzerdefinierten Buckets gespeichert sind, kann jeder Nutzer, der Berechtigungen zum Lesen von Logs in diesen Buckets hat, die privaten Logs lesen. Weitere Informationen zu Log-Buckets finden Sie unter Routing und Speicher.

Weitere Informationen zu den IAM-Berechtigungen und -Rollen, die für Audit-Logdaten gelten, finden Sie unter Zugriffssteuerung mit IAM.

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. Wählen Sie im Navigationsbereich der Google Cloud Console Logging und anschließend Log-Explorer aus:

    Zum Log-Explorer

  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 Duet AI finden Sie unter Logeinträge mit Duet AI-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.

Beispielabfragen

Verwenden Sie die folgenden Abfragen im Log-Explorer, um Audit-Logs für VPC Service Controls zu finden:

Beschreibung der Abfrage Ausdruck
Details zu Verstößen basierend auf einer Ablehnungs-ID

log_id("cloudaudit.googleapis.com/policy") severity=ERROR
resource.type="audited_resource"
protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
protoPayload.metadata.vpcServiceControlsUniqueId="UNIQUE_ID" 

Ersetzen Sie UNIQUE_ID durch die eindeutige ID der Ablehnung.

Verstöße für eine IP-Adresse

log_id("cloudaudit.googleapis.com/policy")
severity=ERROR
resource.type="audited_resource"
protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
protoPayload.requestMetadata.callerIp="IP_ADDRESS"

Ersetzen Sie IP_ADDRESS durch die IP-Adresse des Aufrufers.

Verstöße gegen einen Dienst

log_id("cloudaudit.googleapis.com/policy")
severity=ERROR
resource.type="audited_resource"
protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
protoPayload.serviceName="SERVICE_NAME"

Ersetzen Sie SERVICE_NAME durch den Namen des eingeschränkten Dienstes.

Die Zugriffsebene wurde an einem Perimeter geändert

logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
severity=NOTICE
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName="google.identity.accesscontextmanager.v1.AccessContextManager.UpdateServicePerimeter"
-protoPayload.metadata.previousState:"ACCESS_LEVEL"
protoPayload.request.servicePerimeter.status.accessLevels:"ACCESS_LEVEL"

Ersetzen Sie ORGANIZATION_ID durch die numerische ID Ihrer Organisation und ACCESS_LEVEL durch den eindeutigen Namen der Zugriffsebene.

Perimeter-CRUD-Vorgänge

logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
severity=NOTICE
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName=~"google.identity.accesscontextmanager.v1.AccessContextManager.ServicePerimeter"
protoPayload.request.servicePerimeter.name=~".PERIMETER_NAME$"
Ersetzen Sie PERIMETER_NAME durch den Namen des Perimeters.
CRUD-Vorgänge auf Zugriffsebene

logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
severity=NOTICE
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName=~"google.identity.accesscontextmanager.v1.AccessContextManager.AccessLevel"
protoPayload.request.accessLevel.name=~".ACCESS_LEVEL$"
Vorgänge für Eingangsregeln erstellen und aktualisieren

logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName=~"google.identity.accesscontextmanager.v1.AccessContextManager.ServicePerimeter"
protoPayload.request.servicePerimeter.status.ingressPolicies:""
Vorgänge für Regeln für ausgehenden Traffic erstellen und aktualisieren

logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName=~"google.identity.accesscontextmanager.v1.AccessContextManager.ServicePerimeter"
protoPayload.request.servicePerimeter.status.egressPolicies:""

So verwenden Sie die Beispielabfragen:

  1. Ersetzen Sie die Variablen durch Ihre eigenen Projektinformationen und kopieren Sie den Ausdruck dann mit dem Symbol der Zwischenablage .

  2. Wählen Sie im Navigationsbereich der Google Cloud Console Logging und anschließend Log-Explorer aus:

    Zum Log-Explorer

  3. Aktivieren Sie Abfrage anzeigen, um das Feld „Query Editor” zu öffnen, und fügen Sie den Ausdruck dann in das Feld des Query Editor ein:

    Der Query Editor, in dem Sie Beispielabfragen eingeben.

  4. Klicken Sie auf Abfrage ausführen. Logs, die Ihrer Abfrage entsprechen, werden im Bereich Abfrageergebnisse aufgeführt.

Audit-Logs weiterleiten

Sie können Audit-Logs auf dieselbe Weise wie andere Arten von Logs an unterstützte Ziele weiterleiten. Im Folgenden erfahren Sie, warum es sinnvoll sein kann, Ihre Audit-Logs weiterzuleiten:

  • Sie können Kopien Ihrer Audit-Logs an Cloud Storage, BigQuery oder Pub/Sub weiterleiten, um Audit-Logs für einen längeren Zeitraum aufzubewahren oder leistungsfähigere Suchfunktionen zu nutzen. Mit Pub/Sub haben Sie die Möglichkeit, die Logs an andere Anwendungen, andere Repositories und Dritte weiterzuleiten.

  • Zum organisationsübergreifenden Verwalten Ihrer Audit-Logs erstellen Sie aggregierte Senken, mit denen sich Logs aus beliebigen oder allen Google Cloud-Projekten in der Organisation weiterleiten lassen.

Eine Anleitung zum Weiterleiten von Logs finden Sie unter Logs an unterstützte Ziele weiterleiten.

Preise

Informationen zu den Preisen für Cloud Logging finden Sie unter Preise für die Operations-Suite von Google Cloud: Cloud Logging.