Guía de inicio rápido: Recibir eventos con los Registros de auditoría de Cloud (Google Cloud CLI)

Recibe eventos mediante Registros de auditoría de Cloud (gcloud)

En esta guía de inicio rápido, se muestra cómo recibir eventos de Cloud Storage en un servicio de Cloud Run no autenticado mediante Eventarc.

Puedes completar esta guía de inicio rápido con Google Cloud CLI. Para obtener instrucciones sobre cómo usar la consola, consulta Crea un activador mediante la consola de Google Cloud.

En esta guía de inicio rápido, podrás hacer lo siguiente:

  1. Crear un bucket de Cloud Storage para que sea la fuente del evento

  2. Implementar un servicio de receptor de eventos en Cloud Run

  3. Crear un activador de eventos

  4. Generar un evento mediante la carga de un archivo al bucket de Cloud Storage y visualizarlo en los registros de Cloud Run.

Antes de comenzar

Algunos de los pasos de este documento podrían no funcionar correctamente si tu organización aplica restricciones a tu entorno de Google Cloud. En ese caso, es posible que no puedas completar tareas como crear direcciones IP públicas o claves de cuenta de servicio. Si realizas una solicitud que muestra un error sobre las restricciones, consulta cómo desarrollar aplicaciones en un entorno restringido de Google Cloud.

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. Habilita las API de Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc.

    Habilita las API

  5. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  6. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  7. Habilita las API de Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc.

    Habilita las API

  8. Actualiza los componentes de gcloud:
    gcloud components update
  9. Accede con tu cuenta:

    gcloud auth login
    

  10. Establece las variables de configuración que se usan en esta guía de inicio rápido:

    gcloud config set project PROJECT_ID
    gcloud config set run/region us-central1
    gcloud config set run/platform managed
    gcloud config set eventarc/location us-central1
    

  11. Habilita los tipos de registros de lectura de administrador, lectura de datos y escritura de datos de los registros de auditoría de Cloud en Cloud Storage:

    Ten en cuenta que a nivel de proyecto, necesitas la función roles/owner de administración de identidades y accesos para configurar los registros de auditoría de acceso a datos de tus recursos de Google Cloud.

    1. Lee la política de IAM de tu proyecto y almacénala en un archivo:
       gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
      
    2. Edita la política en /tmp/policy.yaml. Para ello, agrega o cambia solo la configuración de los registros de auditoría de acceso a datos.

      auditConfigs:
      - auditLogConfigs:
        - logType: ADMIN_READ
        - logType: DATA_WRITE
        - logType: DATA_READ
        service: storage.googleapis.com
      
    3. Escribe tu nueva política de IAM:
      gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
      
      Si el comando anterior informa de un conflicto con otro cambio, repite estos pasos y comienza por leer la lectura de la política de IAM del proyecto.
  12. Otorga la función eventarc.eventReceiver a la cuenta de servicio de Compute Engine:
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
        --role='roles/eventarc.eventReceiver'
    

  13. Si habilitaste la cuenta de servicio de Pub/Sub el 8 de abril de 2021 o antes de esa fecha, otorga la función iam.serviceAccountTokenCreator a la cuenta de servicio de Pub/Sub:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com"\
        --role='roles/iam.serviceAccountTokenCreator'
    

  14. Descarga e instala la herramienta de administración de código fuente de Git.

Cree un bucket de Cloud Storage

En esta guía de inicio rápido, se usa Cloud Storage como la fuente del evento. Para crear un bucket de almacenamiento, ejecuta el siguiente comando:

gsutil mb -l us-central1 gs://events-quickstart-PROJECT_ID/

Después de crear la fuente del evento, puedes implementar el servicio del receptor de eventos en Cloud Run.

Implementa el servicio del receptor de eventos en Cloud Run

Implementa un servicio de Cloud Run que reciba y registre eventos. Para implementar el servicio del receptor de eventos de muestra, haz lo siguiente:

  1. Clone el repositorio:

    Comienza a usarlo

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

    Java

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

    .NET

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

    Node.js

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

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/eventarc/audit-storage
    
  2. Compila el contenedor y súbelo a Cloud Build:

    gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld-events
    
  3. Implementa la imagen del contenedor en Cloud Run:

    gcloud run deploy helloworld-events \
       --image gcr.io/PROJECT_ID/helloworld-events \
        --allow-unauthenticated
    

    Cuando la implementación se realiza correctamente, la línea de comandos muestra la URL del servicio.

    Ahora que implementaste el servicio del receptor de eventos llamado helloworld-events en Cloud Run, puedes configurar el activador.

Crea un activador de Eventarc

El activador de Eventarc enviará eventos desde el bucket de Cloud Storage al servicio helloworld-events de Cloud Run.

  1. Crea un activador que filtre los eventos de Cloud Storage y que use la cuenta de servicio predeterminada de Compute Engine del proyecto de Google Cloud:

      gcloud eventarc triggers create events-quickstart-trigger \
          --destination-run-service=helloworld-events \
          --destination-run-region=us-central1 \
          --event-filters="type=google.cloud.audit.log.v1.written" \
          --event-filters="serviceName=storage.googleapis.com" \
          --event-filters="methodName=storage.objects.create" \
          --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
    

    Esto crea un activador llamado events-quickstart-trigger.

  2. Para confirmar que events-quickstart-trigger se creó de forma correcta, ejecuta el siguiente comando:

     gcloud eventarc triggers list --location=us-central1
    

    Se muestra events-quickstart-trigger con un objetivo de helloworld-events.

Genera y visualiza un evento

  1. Para generar un evento, haz lo siguiente:

    Sube un archivo de texto a Cloud Storage:

     echo "Hello World" > random.txt
     gsutil cp random.txt gs://events-quickstart-PROJECT_ID/random.txt
    

    La carga genera un evento y el servicio de Cloud Run registra el mensaje del evento.

  2. Para ver las entradas de registro relacionadas con eventos creadas por tu servicio, sigue estos pasos:

    1. gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=helloworld-events AND NOT resource.type=build"
      
    2. Busca una entrada de registro similar a lo siguiente:

      Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
      

      En el ejemplo anterior, BUCKET_NAME es el nombre del bucket de Cloud Storage.

¡Felicitaciones! Implementaste un servicio de receptor de eventos en Cloud Run de forma correcta, creaste un activador de Eventarc, generaste un evento desde Cloud Storage y lo viste en los registros de Cloud Run.

Limpia

Si bien Cloud Run no cobra cuando el servicio no se usa, es posible que se te cobre por almacenar la imagen del contenedor en Container Registry, por los recursos de Eventarch, y por almacenar archivos en el bucket de Cloud Storage.

Puedes borrar tu imagen y borrar tu bucket de almacenamiento. Para borrar el activador de Eventarc, ejecuta el siguiente comando:

gcloud eventarc triggers delete events-quickstart-trigger

Como alternativa, puedes borrar el proyecto de Cloud para evitar que se generen cargos. Si borras el proyecto de Cloud, se dejan de facturar todos los recursos que usaste en ese proyecto.

gcloud projects delete PROJECT_ID_OR_NUMBER
  • Reemplaza PROJECT_ID_OR_NUMBER por el ID o el número del proyecto.

¿Qué sigue?