Recibe eventos de registros de auditoría de Cloud

Aprende a implementar un servicio en Cloud Run for Anthos en Google Cloud y, luego, a crear y enviar eventos a ese servicio desde los registros de auditoría de Cloud.

Antes de comenzar

Para completar esta tarea, debes tener un agente de eventos y saber en qué espacio de nombres se ejecuta. Obtén más información sobre cómo configurar eventos para Cloud Run for Anthos y crear un agente de eventos.

Si tienes un agente de eventos en ejecución, puedes ver el espacio de nombres de Kubernetes si ejecutas este comando:

kubectl get brokers -n NAMESPACE

Implementa un servicio de receptor de eventos de Cloud Run for Anthos

Implementa un servicio de Cloud Run for Anthos que reciba eventos del agente de eventos.

  1. Clona el repositorio:

    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. Compila el contenedor y súbelo a Cloud Build:

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

    En el ejemplo anterior, CLOUD_RUN_CONTAINER_NAME es el nombre de archivo de tu contenedor.

  3. Implementa la imagen de contenedor en Cloud Run for Anthos:

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

    En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.

    Si ves la URL del servicio, se implementó de forma correcta.

Crea un activador de registros de auditoría de Cloud

  1. Crea un activador en el mismo espacio de nombres que tu agente de eventos:

    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
    

    En este ejemplo, el activador filtra las entradas de registros de auditoría de Cloud que tienen entradas methodName iguales a google.pubsub.v1.Publisher.CreateTopic. Para ver más opciones de filtrado, consulta Formato AuditLog.

  2. Después de 60 segundos, verifica que el activador funcione:

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

    En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.

    El resultado es similar al siguiente:

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

Genera un evento

  1. Genera un evento mediante la creación de un tema de Pub/Sub:

    gcloud pubsub topics create TOPIC_NAME
    
  2. Verifica que el servicio de Cloud Run for Anthos haya recibido el evento:

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

    En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.

    El resultado es similar al siguiente:

      [...]
      [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
      [...]
    

Realiza una limpieza

Borra los recursos que se crearon en este instructivo para evitar cargos recurrentes.

  1. Para borrar el activador, escribe lo siguiente:

    gcloud beta events triggers delete TRIGGER_NAME \
        --namespace NAMESPACE
    

    En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.

  2. Borra el tema de Pub/Sub:

    gcloud pubsub topics delete TOPIC_NAME