Aggregierte Senken konfigurieren

In diesem Dokument wird beschrieben, wie Sie aggregierte Senken erstellen. Informationen zum Verwalten vorhandener Senken finden Sie unter Senken verwalten.

Aggregierte Senken kombinieren und leiten Logeinträge aus den Google Cloud-Ressourcen zusammen, die in einer Organisation, einem Ordner oder einem Rechnungskonto enthalten sind. Beispielsweise können Sie Audit-Logeinträge aus den Ordnern einer Organisation aggregieren und an einen Cloud Storage-Bucket weiterleiten.

Ohne das aggregierte Senkenfeature sind Senken auf das Routing von Logeinträgen von der Ressource beschränkt, in der die Senke erstellt wurde: ein Google Cloud-Projekt, eine Organisation, ein Ordner oder ein Rechnungskonto.

Sie können zum Erstellen einer aggregierten Senke entweder die Cloud Logging API oder das gcloud-Befehlszeilentool verwenden. Aggregierte Senken können nicht mit der Google Cloud Console erstellt werden. Mit der Google Cloud Console können Sie nur (nicht aggregierte) Senken auf Projektebene erstellen. Informationen zum Erstellen von Senken in Cloud-Projekten finden Sie unter Senken konfigurieren.

Eine allgemeine Konzeptübersicht über Senken finden Sie unter Routing und Speicher: Senken.

Unterstützte Ziele

Mit aggregierten Senken können Sie Logs innerhalb oder zwischen denselben Organisationen, Ordnern oder Rechnungskonten an folgende Ziele weiterleiten:

  • Cloud Storage: In Cloud Storage-Buckets gespeicherte JSON-Dateien.
  • Pub/Sub: JSON-Nachrichten, die an Pub/Sub-Themen zugestellt werden Unterstützung von Drittanbieterintegrationen wie Splunk in Logging.
  • BigQuery: In BigQuery-Datasets erstellte Tabellen.
  • Ein anderer Cloud Logging-Bucket: Logeinträge von Log-Buckets in Cloud Logging.

Hinweis

Bevor Sie eine Senke erstellen, prüfen Sie Folgendes:

  • Sie haben eine Ressource mit Logs, die Sie im Log-Explorer sehen können.

  • Sie haben eine der folgenden IAM-Rollen für die Google Cloud-Organisation, den Google Cloud-Ordner oder das Google Cloud-Rechnungskonto, von dem aus Sie Logs senden.

    • Inhaber (roles/owner)
    • Logging-Administrator (roles/logging.admin)
    • Autor von Log-Konfigurationen (roles/logging.configWriter)

    Mit den in diesen Rollen enthaltenen Berechtigungen können Sie Senken erstellen, löschen oder ändern. Informationen zum Festlegen von IAM-Rollen finden Sie in der Anleitung zur Zugriffssteuerung von Logging.

  • Sie haben eine Ressource in einem unterstützten Ziel oder können eine erstellen.

    Das Ziel für Logsenken muss vor der Senke erstellt werden. Dies erfolgt über das gcloud-Befehlszeilentool, die Cloud Console oder die Google Cloud APIs. Sie können das Ziel in jedem Cloud-Projekt jeder Organisation erstellen. Sie müssen jedoch dafür sorgen, dass das Dienstkonto aus der Senke Berechtigungen zum Schreiben in das Ziel hat.

Aggregierte Senke erstellen

Wenn Sie aggregierte Senken verwenden möchten, erstellen Sie eine Senke in einer Google Cloud-Organisation, einem Ordner oder einem Rechnungskonto und setzen den Parameter includeChildren der Senke auf True. Diese Senke kann dann Logeinträge aus der Organisation, dem Rechnungskonto oder dem Ordner sowie (rekursiv) aus allen enthaltenen Ordnern, Rechnungskonten oder Cloud-Projekten weiterleiten. Sie legen die Ein- und Ausschlussfilter der Senke fest, um Logeinträge anzugeben, die Sie an Ihr Ziel weiterleiten möchten.

Sie können bis zu 200 Senken pro Rechnungskonto, Ordner oder Organisation erstellen.

API

Verwenden Sie zum Erstellen einer Logging-Senke organizations.Sinks.create, folders.Sinks.create oder billingAccounts.Sinks.create in der Logging API. Bereiten Sie die Argumente für die Methode so vor:

  1. Legen Sie als parent-Parameter die Google Cloud-Organisation, den Google Cloud-Ordner oder das Google Cloud-Rechnungskonto fest, in dem die Senke erstellt werden soll. Geben Sie als übergeordnete Ressource eine der folgenden an:

    • organizations/ORGANIZATION_ID
    • folders/FOLDER_ID
    • billingAccounts/BILLING_ACCOUNT_ID
  2. Führen Sie im Objekt LogSink im Anfragetext der Methode die folgenden Schritte aus:

  3. Rufen Sie organizations.Sink.create, folders.Sink.create oder billingAccounts.Sink.create auf, um die Senke zu erstellen.

  4. Rufen Sie den Namen des Dienstkontos aus dem Feld writer_identity ab, das in der API-Antwort zurückgegeben wurde.

  5. Gewähren Sie dem Dienstkonto die Berechtigung zum Schreiben in das Senkenziel.

    Wenn Sie keine Berechtigung zu dieser Änderung für das Senkenziel haben, senden Sie den Namen des Dienstkontos an einen Nutzer mit der erforderlichen Berechtigung.

    Weitere Informationen zum Gewähren von Dienstkontoberechtigungen für Ressourcen finden Sie im Abschnitt Zielberechtigungen festlegen.

gcloud

Zum Erstellen einer Logsenke verwenden Sie den Befehl logging sinks create:

  1. Geben Sie den Namen, das Ziel der Senke, den Filter und die ID des Ordners, des Rechnungskontos oder der Organisation an.

    Richten Sie beispielsweise eine aggregierte Senke auf Ordnerebene in etwa so ein:

    gcloud logging sinks create SINK_NAME \
    storage.googleapis.com/STORAGE_BUCKET_NAME --include-children \
    --folder=FOLDER_ID --log-filter="logName:activity"

    Hinweise:

    • Wenn Sie eine Senke auf Organisationsebene erstellen möchten, ersetzen Sie --folder=FOLDER_ID durch --organization=ORGANIZATION_ID. Ersetzen Sie bei einem Rechnungskonto --folder=FOLDER_ID durch --billing-account=BILLING_ACCOUNT_ID.

    • Damit die Senke alle Projekte in der Organisation umfasst, muss das Flag --include-children gesetzt sein, selbst wenn das Flag --organization an create übergeben wird. Wenn dieser Wert auf false (Standardeinstellung) gesetzt ist, leitet eine Senke nur Logs von der Hostressource weiter.

    • Beispiele für nützliche Filter finden Sie unter Filter für aggregierte Senken erstellen.

  2. Ermitteln Sie anhand der Ausgabe des Befehls den Namen des Dienstkontos, mit dem die Senke erstellt wurde.

  3. Erteilen Sie diesem Dienstkonto Schreibzugriff auf das Senkenziel.

    Wenn Sie keine Berechtigung zu dieser Änderung für das Senkenziel haben, senden Sie den Namen des Dienstkontos an einen Nutzer mit der erforderlichen Berechtigung.

    Weitere Informationen zum Gewähren von Dienstkontoberechtigungen für Ressourcen finden Sie im Abschnitt Zielberechtigungen festlegen.

Filter für aggregierte Senken erstellen

Wie jede Senke enthält Ihre aggregierte Senke einen Filter, der einzelne Logeinträge auswählt. Beispiele für Filter, die Sie zum Erstellen Ihrer aggregierten Senke verwenden können, finden Sie unter Beispielabfragen mit dem Log-Explorer.

Im Folgenden finden Sie einige Beispiele für Filtervergleiche, die bei Verwendung des Features für aggregierte Senken hilfreich sein können. In manchen Beispielen wird folgende Notation verwendet:

  • : ist der Teilstringoperator. Ersetzen Sie den Operator = nicht.
  • ... steht für alle weiteren Filtervergleiche.
  • Variablen sind durch farbigen Text gekennzeichnet. Ersetzen Sie sie durch gültige Werte.

Ein Filter darf maximal 20.000 Zeichen lang sein.

Weitere Informationen zur Filtersyntax finden Sie unter Logging-Abfragesprache.

Logquelle auswählen

Verwenden Sie einen der folgenden Beispielvergleiche, um Logs aus bestimmten Cloud-Projekten, Ordnern oder Organisationen weiterzuleiten:

logName:"projects/PROJECT_ID/logs/" AND ... 
logName:("projects/PROJECT_A_ID/logs/" OR "projects/PROJECT_B_ID/logs/") AND ... 
logName:"folders/FOLDER_ID/logs/" AND ... 
logName:"organizations/ORGANIZATION_ID/logs/" AND ... 

Überwachte Ressource auswählen

Wenn Sie Logs nur von einer bestimmten überwachten Ressource in einem Cloud-Projekt weiterleiten möchten, verwenden Sie mehrere Vergleiche, um die Ressource genau anzugeben:

logName:"projects/PROJECT_ID/logs" AND
resource.type=RESOURCE_TYPE AND
resource.labels.instance_id=INSTANCE_ID

Eine Liste der Ressourcentypen finden Sie unter Überwachte Ressourcentypen.

Beispiel für Logeinträge auswählen

Fügen Sie die integrierte Funktion sample hinzu, um eine zufällige Auswahl von Logeinträgen weiterzuleiten. Wenn Sie beispielsweise nur zehn Prozent der Logeinträge weiterleiten möchten, die mit dem aktuellen Filter übereinstimmen, fügen Sie Folgendes hinzu:

sample(insertId, 0.10) AND ...

Weitere Informationen finden Sie in der sample-Funktion.

Weitere Informationen zu Cloud Logging-Filtern finden Sie unter Logging-Abfragesprache.

Zielberechtigungen festlegen

In diesem Abschnitt wird beschrieben, wie Sie Logging die Berechtigung zur Identitäts- und Zugriffsverwaltung erteilen, um Logs in das Ziel der Senke zu schreiben. Eine vollständige Liste der Logging-Rollen und -Berechtigungen finden Sie unter Zugriffssteuerung.

Wenn Sie eine Senke erstellen, wird in Logging ein neues Dienstkonto für die Senke erstellt. Dieses wird als unique-writer-identity bezeichnet. Das Senkenziel muss diesem Dienstkonto das Schreiben von Logeinträgen ermöglichen. Sie können dieses Dienstkonto nicht direkt verwalten, da es Cloud Logging gehört und von diesem verwaltet wird. Das Dienstkonto wird gelöscht, wenn die Senke gelöscht wird.

Zum Weiterleiten von Logs an eine Ressource, die durch einen Dienstperimeter geschützt ist, müssen Sie das Dienstkonto für die jeweilige Logsenke einer Zugriffsebene hinzufügen und diese anschließend dem Zieldienst zuweisen. Perimeter. Dies ist für Senken (nicht aggregiert) auf Projektebene nicht erforderlich. Weitere Informationen finden Sie unter VPC Service Controls: Cloud Logging.

So legen Sie die Berechtigungen für die Weiterleitung der Senke zu ihrem Ziel fest:

API

  1. Rufen Sie das Dienstkonto aus dem Feld writerIdentity in der Senke ab, indem Sie die API-Methode organizations.Sinks.get und folders.Sink.get aufrufen. oder billingAccounts.Sinks.get.

    Das Dienstkonto sieht in etwa so aus:

    serviceAccount:p123456789012-12345@gcp-sa-logging.iam.gserviceaccount.com
    
  2. Fügen Sie die Berechtigung des Autors der neuen Senke der Berechtigungsliste des Ziels hinzu. Damit erhält der Autor die Berechtigung zum Schreiben in das Ziel.

    Wenn Sie mit IAM Zugriff auf das Ziel haben, fügen Sie dem Ziel das Dienstkonto so hinzu:

    • Fügen Sie für Cloud Storage-Ziele die Autorenidentität der Senke Ihrem Cloud Storage-Bucket hinzu und weisen Sie ihr die Rolle Storage-Objekt-Ersteller zu.
    • Fügen Sie für BigQuery-Ziele die Autorenidentität der Senke dem Dataset hinzu und weisen Sie ihr die Rolle BigQuery-Dateneditor zu.
    • Fügen Sie für Pub/Sub, einschließlich Splunk, die Autorenidentität der Senke Ihrem Thema hinzu und weisen Sie ihr die Rolle Pub/Sub-Publisher zu.
    • Wenn Sie Logging-Bucket-Ziele in verschiedenen Cloud-Projekten verwenden möchten, fügen Sie die Autorenidentität der Senke dem Ziel-Log-Bucket hinzu und erteilen Sie die Berechtigung roles/logging.bucketWriter.

    Wenn Sie nicht die Berechtigung Inhaber für das Ziel der Senke haben, senden Sie den Namen des Dienstkontos für die Autorenidentität einem Nutzer mit dieser Berechtigung. Diese Person sollte dann der Anleitung im vorherigen Schritt folgen, um dem Senkenziel die Identität des Autors hinzuzufügen.

gcloud

  1. Rufen Sie von der neuen Senke die Identität des Autors in Form einer E-Mail-Adresse ab:

  2. Rufen Sie das Dienstkonto aus dem Feld writerIdentity der Senke ab:

    gcloud logging sinks describe SINK_NAME
    

    Das Dienstkonto sieht in etwa so aus:

    serviceAccount:p123456789012-12345@gcp-sa-logging.iam.gserviceaccount.com
    
  3. Wenn Sie mit IAM Zugriff auf das Ziel haben, fügen Sie dem Ziel das Dienstkonto so hinzu:

    • Wenn Sie Cloud Storage-Ziele verwenden, fügen Sie die Autorenidentität der Senke dem Cloud Storage-Bucket hinzu und weisen ihr die Rolle Storage-Objekt-Ersteller zu.
    • Fügen Sie für BigQuery-Ziele die Autorenidentität der Senke dem Dataset hinzu und weisen Sie ihr die Rolle BigQuery-Dateneditor zu.
    • Fügen Sie für Pub/Sub, einschließlich Splunk, die Autorenidentität der Senke Ihrem Thema hinzu und weisen Sie ihr die Rolle Pub/Sub-Publisher zu.
    • Wenn Sie Logging-Bucket-Ziele in verschiedenen Cloud-Projekten verwenden möchten, fügen Sie die Autorenidentität der Senke dem Ziel-Log-Bucket hinzu und erteilen Sie die Berechtigung roles/logging.bucketWriter.

    Wenn Sie nicht die Berechtigung Inhaber für das Ziel der Senke haben, senden Sie den Namen des Dienstkontos für die Autorenidentität einem Nutzer mit dieser Berechtigung. Diese Person sollte dann der Anleitung im vorherigen Schritt folgen, um dem Senkenziel die Identität des Autors hinzuzufügen.

    Wenn Sie beispielsweise Logs zwischen Logging-Buckets in verschiedenen Cloud-Projekten weiterleiten, fügen Sie dem Dienstkonto so roles/logging.bucketWriter hinzu:

    1. Rufen Sie die Identity and Access Management-Richtlinie für das Cloud-Zielprojekt ab und schreiben Sie sie in eine lokale Datei im JSON-Format:

      gcloud projects get-iam-policy DESTINATION_PROJECT_ID --format json > output.json
      
    2. Fügen Sie eine IAM-Bedingung hinzu, mit der das Dienstkonto nur in das von Ihnen erstellte Ziel schreiben kann. Beispiel:

      {
      "bindings": [
       {
         "members": [
           "user:username@gmail.com"
         ],
         "role": "roles/owner"
       },
       {
         "members": [
           "SERVICE_ACCOUNT"
         ],
         "role": "roles/logging.bucketWriter",
         "condition": {
             "title": "Bucket writer condition example",
             "description": "Grants logging.bucketWriter role to service account SERVICE_ACCOUNT used by log sink SINK_NAME",
             "expression":
               "resource.name.endsWith(\'locations/global/buckets/BUCKET_ID\')"
         }
       }
      ],
      "etag": "BwWd_6eERR4=",
      "version": 3
      }
    3. Aktualisieren Sie die IAM-Richtlinie:

      gcloud projects set-iam-policy DESTINATION_PROJECT_ID output.json
      

Nächste Schritte