Ereignisse aus Cloud-Audit-Logs empfangen

Im Folgenden wird gezeigt, wie Sie einen Cloud Run for Anthos-Dienst in Google Cloud bereitstellen und dann Ereignisse aus Cloud-Audit-Logs an diesen Dienst senden.

Vorbereitung

Zum Ausführen dieser Aufgabe benötigen Sie einen Ereignis-Broker und Sie müssen wissen, in welchem Namespace er ausgeführt wird. Lesen Sie hier, wie Sie Events for Cloud Run for Anthos konfigurieren und einen Ereignis-Broker erstellen.

Wenn ein Ereignis-Broker ausgeführt wird, können Sie den Kubernetes-Namespace mit folgendem Befehl aufrufen:

kubectl get brokers -n NAMESPACE

Cloud Run for Anthos-Dienst zum Empfangen von Ereignissen bereitstellen

Stellen Sie einen Cloud Run for Anthos-Dienst bereit, der Ereignisse vom Ereignis-Broker empfängt.

  1. Klonen Sie das Repository:

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/eventarc/audit-storage
    

    Java

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    cd java-docs-samples/eventarc/audit-storage
    

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git
    cd golang-samples/eventarc/audit_storage
    

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    cd nodejs-docs-samples/eventarc/audit-storage
    

    C#

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    cd dotnet-docs-samples/eventarc/audit-storage
    
  2. Erstellen Sie den Container und laden Sie ihn in Cloud Build hoch:

    gcloud builds submit \
       --tag gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
    

    Dabei ist CLOUD_RUN_CONTAINER_NAME der Dateiname Ihres Containers.

  3. Stellen Sie das Container-Image für Cloud Run for Anthos bereit:

    gcloud run deploy CLOUD_RUN_SERVICE_NAME \
        --namespace=NAMESPACE \
        --image gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
    

    Dabei ist NAMESPACE derselbe Namespace wie für Ihren Ereignis-Broker.

    Wenn die Dienst-URL angezeigt wird, wurde sie erfolgreich bereitgestellt.

Cloud-Audit-Log-Trigger erstellen

  1. Erstellen Sie im Namespace des Ereignis-Brokers einen Tigger:

    gcloud beta events triggers create TRIGGER_NAME \
       --namespace NAMESPACE \
       --target-service=CLOUD_RUN_SERVICE_NAME \
       --type=google.cloud.audit.log.v1.written \
       --parameters serviceName=pubsub.googleapis.com \
       --parameters methodName=google.pubsub.v1.Publisher.CreateTopic
    

    In diesem Beispiel filtert der Trigger Cloud-Audit-Logs, in denen die methodName-Einträge google.pubsub.v1.Publisher.CreateTopic entsprechen. Weitere Filteroptionen finden Sie unter AuditLog-Formatierung.

  2. Prüfen Sie nach 60 Sekunden, ob der Trigger funktioniert:

    gcloud beta events triggers list \
       --target-service CLOUD_RUN_SERVICE_NAME \
       --namespace NAMESPACE
    

    Dabei ist NAMESPACE derselbe Namespace wie für Ihren Ereignis-Broker.

    Die Ausgabe sieht etwa so aus:

    TRIGGER                EVENT TYPE                          TARGET
    trigger-name           google.cloud.audit.log.v1.written   cloud-run-service
    

Ereignis generieren

  1. Generieren Sie ein Ereignis durch Erstellen eines Pub/Sub-Themas:

    gcloud pubsub topics create TOPIC_NAME
    
  2. Prüfen Sie, ob das Ereignis vom Cloud Run for Anthos-Dienst empfangen wurde:

    kubectl logs \
       --selector serving.knative.dev/service=CLOUD_RUN_SERVICE_NAME \
       -c user-container \
       -n NAMESPACE \
       --tail=200
    

    Dabei ist NAMESPACE derselbe Namespace wie für Ihren Ereignis-Broker.

    Die Ausgabe sieht etwa so aus:

      [...]
      [2020-09-10 18:51:28 +0000] [1] [INFO] Starting gunicorn 20.0.4
      [2020-09-10 18:51:28 +0000] [1] [INFO] Listening at: http://0.0.0.0:8080 (1)
      [2020-09-10 18:51:28 +0000] [1] [INFO] Using worker: threads
      [2020-09-10 18:51:28 +0000] [7] [INFO] Booting worker with pid: 7
      GCS CloudEvent type: pubsub.googleapis.com/projects/PROJECT_NAME/topics/to-be-deleted
      GCS CloudEvent type: pubsub.googleapis.com/projects/PROJECT_NAME/topics/to-be-deleted2
      [...]
    

Bereinigen

Löschen Sie die in dieser Anleitung erstellten Ressourcen, um wiederkehrende Gebühren zu vermeiden.

  1. Geben Sie Folgendes ein, um den Trigger zu löschen:

    gcloud beta events triggers delete TRIGGER_NAME \
        --namespace NAMESPACE
    

    Dabei ist NAMESPACE derselbe Namespace wie für Ihren Ereignis-Broker.

  2. Löschen Sie das Pub/Sub-Thema:

    gcloud pubsub topics delete TOPIC_NAME