Recibir un evento de Registros de auditoría de Cloud

En este instructivo, se muestra cómo implementar un servicio autenticado de Cloud Run que recibe eventos de Cloud Storage mediante Registros de auditoría de Cloud. Usa este instructivo para implementar cargas de trabajo de producción. El activador de Eventarc filtra los eventos según las entradas de los Registros de auditoría de Cloud. Si deseas obtener más información, consulta Determina los filtros de eventos para los Registros de auditoría de Cloud.

Puedes completar este instructivo con la consola de Google Cloud o Google Cloud CLI.

Crea un repositorio estándar de Artifact Registry

Crea un repositorio estándar de Artifact Registry para almacenar tu imagen de contenedor.

Console

  1. En la consola de Google Cloud , ve a la página Repositorios.

    Ir a Repositorios

  2. Haz clic en Crear repositorio.
  3. Configura tu repositorio:
    1. Ingresa un nombre único.
    2. En Formato, elige Docker.
    3. En Modo, elige Estándar.
    4. En Tipo de ubicación, elige Región.
    5. En la lista Región, selecciona us-central1 (Iowa).
  4. Acepta los otros valores predeterminados y haz clic en Crear.

gcloud

gcloud artifacts repositories create REPOSITORY \
    --repository-format=docker \
    --location=$REGION

Reemplaza REPOSITORY por un nombre único para el repositorio de Artifact Registry.

Crea un bucket de Cloud Storage

En este instructivo, se usa Cloud Storage como la fuente del evento. Para crear un bucket de almacenamiento, ejecuta el siguiente comando:

Console

  1. En la consola de Google Cloud , ve a la página Buckets.

    Ir a Buckets

  2. Haz clic en Crear bucket.
  3. Ingresa la información de tu bucket y haz clic en Continuar para completar cada paso:
    1. Ingresa un nombre único. Por ejemplo, eventarcbucket.
    2. Selecciona Región como el Tipo de ubicación.
    3. Selecciona us-central1 (Iowa) como la Ubicación.
    4. Selecciona Estándar para clase de almacenamiento predeterminada.
    5. En Control de acceso, selecciona Uniforme.
  4. Haz clic en Crear.

gcloud

gcloud storage buckets create gs://events-tutorial-PROJECT_ID/ --location=$REGION

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:

Console

  1. Clona el repositorio de muestra en tu cuenta de GitHub:
  2. Go

    1. En GitHub, navega hasta GoogleCloudPlatform/golang-samples
    2. Haz clic en Fork.
    3. Captura de pantalla del botón Bifurcación
    4. Si se te solicita, selecciona la ubicación en la que deseas bifurcar el repositorio.

    Java

    1. En GitHub, navega hasta GoogleCloudPlatform/java-docs-samples.
    2. Haz clic en Fork.
    3. Captura de pantalla del botón Bifurcación
    4. Si se te solicita, selecciona la ubicación en la que deseas bifurcar el repositorio.

    .NET

    1. En GitHub, navega hasta GoogleCloudPlatform/dotnet-docs-samples.
    2. Haz clic en Fork.
    3. Captura de pantalla del botón Bifurcación
    4. Si se te solicita, selecciona la ubicación en la que deseas bifurcar el repositorio.

    Node.js

    1. En GitHub, navega hasta GoogleCloudPlatform/nodejs-docs-samples.
    2. Haz clic en Fork.
    3. Captura de pantalla del botón Bifurcación
    4. Si se te solicita, selecciona la ubicación en la que deseas bifurcar el repositorio.

    Python

    1. En GitHub, navega hasta GoogleCloudPlatform/python-docs-samples.
    2. Haz clic en Fork.
    3. Captura de pantalla del botón Bifurcación
    4. Si se te solicita, selecciona la ubicación en la que deseas bifurcar el repositorio.
  3. En la consola de Google Cloud , ve a la página Servicios.
  4. Ir a Servicios

  5. Haz clic en Crear servicio para mostrar el formulario Crear servicio.
  6. Selecciona Implementar continuamente a partir de un repositorio.

    Los cambios en tu repositorio de GitHub se compilan automáticamente en imágenes de contenedor en Artifact Registry y se implementan en Cloud Run.

  7. Haz clic en Configurar con Cloud Build para abrir el formulario Configurar con Cloud Build.
    1. Si se te solicita, habilita la API de Cloud Build y la API de Artifact Analysis.
    2. Selecciona GitHub como Proveedor de repositorio (Repository Provider).
    3. Si se te solicita, haz clic en Instalar Google Cloud Build.
    4. Selecciona el repositorio de GitHub que bifurcaste como el repositorio.
    5. Haz clic en Siguiente.
    6. En el campo Rama, ingresa ^main$.
    7. Selecciona Dockerfile como el Tipo de compilación y proporciona la ubicación de origen del Dockerfile:
      • eventarc/audit-storage/Dockerfile

        o

      • eventarc/audit_storage/Dockerfile(Go)
    8. Haz clic en Guardar.
  8. En el formulario Crear servicio, ingresa un nombre de servicio. Por ejemplo, helloworld-events
  9. Selecciona us-central1(Iowa) como la región en la que quieres que se ubique el servicio.
  10. Selecciona cualquiera de las opciones de Ingress en función del tráfico de entrada que deseas permitir en el servicio de Cloud Run.
  11. Selecciona Solicitar autenticación.
  12. Haz clic en Crear.

gcloud

  1. Clona el repositorio de GitHub:

    Go

    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 $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/$SERVICE_NAME:v1
    
  3. Implementa la imagen del contenedor en Cloud Run:
    gcloud run deploy $SERVICE_NAME \
        --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/$SERVICE_NAME:v1
    

    Cuando se te solicite permitir invocaciones no autenticadas, ingresa n.

    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.

Console

  1. En la consola de Google Cloud , ve a la página Activadores.

    Ir a Activadores

  2. Haz clic en Crear activador.
  3. Escribe un nombre de activador.

    Este es el ID del activador y debe comenzar con una letra. Puede contener hasta 63 letras en minúscula, números o guiones.

  4. Selecciona un tipo de activador:
    • Propio: Filtra los eventos enviados desde los proveedores de Google Cloud(directamente o a través de entradas de Registros de auditoría de Cloud) o proveedores con mensajes de Pub/Sub.
    • De terceros: Filtra los eventos enviados desde proveedores externos.
  5. En la lista Proveedor del evento, selecciona Cloud Storage como el origen de los eventos.
  6. En la lista Tipo de evento, selecciona storage.objects.create.
  7. En la lista Región, selecciona us-central1 como la región desde la que recibirás los eventos.
  8. Selecciona la Cuenta de servicio que creaste. Por ejemplo, SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com.
  9. En la lista Destino del evento, selecciona Cloud Run.
  10. En la lista Selecciona un servicio de Cloud Run, selecciona helloworld-events.
  11. Haz clic en Crear.
  12. Ten en cuenta que también puedes crear un activador de Eventarc con la página de la consola de Cloud Run.

gcloud

  1. Crea un activador que filtre los eventos de Cloud Storage y que use la cuenta de servicio que creaste:
    gcloud eventarc triggers create events-tutorial-trigger \
        --destination-run-service=$SERVICE_NAME \
        --destination-run-region=$REGION \
        --event-filters="type=google.cloud.audit.log.v1.written" \
        --event-filters="serviceName=storage.googleapis.com" \
        --event-filters="methodName=storage.objects.create" \
        --service-account=sample-service-account@PROJECT_ID.iam.gserviceaccount.com
    Reemplaza PROJECT_ID por el ID del proyecto Google Cloud.

    Aquí:

    • type: Especifica que se crean registros de auditoría cuando se cumplen los criterios de filtro del activador.
    • serviceName: el servicio que escribe el registro de auditoría, que es Cloud Storage.
    • methodName: la operación que se audita, que es storage.objects.create.
    Esto crea un activador llamado events-tutorial-trigger.
  2. Para confirmar que events-tutorial-trigger se creó de forma correcta, ejecuta el siguiente comando:
    gcloud eventarc triggers list --location=$REGION
  3. El activador, events-tutorial-trigger, se muestra con un destino de helloworld-events.

Genera y visualiza un evento

  1. Para generar un evento, haz lo siguiente:

    Console

    1. Crea un archivo de texto con el nombre de archivo random.txt y el texto “Hello World”.
    2. En la consola de Google Cloud , ve a la página Buckets.

      Ir a Buckets

    3. Selecciona el bucket de almacenamiento que creaste.
    4. En la pestaña Objetos, haz clic en Subir archivos y sube el archivo random.txt.

    gcloud

    Sube un archivo de texto a Cloud Storage:

    echo "Hello World" > random.txt
    gcloud storage cp random.txt gs://events-tutorial-PROJECT_ID/random.txt
  2. Sigue estos pasos para ver la entrada de registro:
  3. Console

    1. En la consola de Google Cloud , ve a la página Servicios.

      Ir a Servicios

    2. En la lista de servicios, haz clic en el nombre del servicio que creaste para ir a la página de Detalles del servicio.
    3. Hacer clic en la pestaña Registros para obtener los registros de solicitud y contenedor de todas las revisiones de este servicio. Puedes filtrar por nivel de gravedad del registro
    4. 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.

    gcloud

    1. gcloud logging read "resource.labels.service_name=helloworld-events AND textPayload:random.txt" --format=json
    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.

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.