Recibir un evento de registros de auditoría de Cloud

En este tutorial se explica cómo desplegar un servicio de Cloud Run autenticado que recibe eventos de Cloud Storage mediante registros de auditoría de Cloud. Sigue este tutorial para desplegar cargas de trabajo de producción. El activador de Eventarc filtra los eventos en función de las entradas de Registros de auditoría de Cloud. Para obtener más información, consulta Determinar filtros de eventos para registros de auditoría de Cloud.

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

Crear un repositorio estándar de Artifact Registry

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

Consola

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

    Ir a Repositorios

  2. Haz clic en Crear repositorio.
  3. Configura tu repositorio:
    1. Introduce 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 demás valores predeterminados y haz clic en Crear.

gcloud

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

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

Crea un segmento de Cloud Storage

En este tutorial se usa Cloud Storage como origen de eventos. Para crear un segmento de almacenamiento, sigue estos pasos:

Consola

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

    Ir a Contenedores

  2. Haz clic en Crear segmento.
  3. Introduce la información del contenedor y haz clic en Continuar para completar cada paso:
    1. Introduce un nombre único. Por ejemplo, eventarcbucket.
    2. Seleccione Región como Tipo de ubicación.
    3. Selecciona us-central1 (Iowa) como Ubicación.
    4. Selecciona Standard como clase de almacenamiento predeterminada.
    5. Selecciona Uniforme en Control de acceso.
  4. Haz clic en Crear.

gcloud

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

Una vez creado el origen del evento, puedes implementar el servicio receptor de eventos en Cloud Run.

Desplegar el servicio de receptor de eventos en Cloud Run

Despliega un servicio de Cloud Run que recibe y registra eventos. Para implementar el servicio de receptor de eventos de ejemplo, haz lo siguiente:

Consola

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

    1. En GitHub, ve a GoogleCloudPlatform/golang-samples.
    2. Haz clic en Bifurcar.
    3. Captura de pantalla del botón Fork.
    4. Si se te pide, selecciona la ubicación en la que quieras bifurcar el repositorio.

    Java

    1. En GitHub, ve a GoogleCloudPlatform/java-docs-samples.
    2. Haz clic en Bifurcar.
    3. Captura de pantalla del botón Fork.
    4. Si se te pide, selecciona la ubicación en la que quieras bifurcar el repositorio.

    .NET

    1. En GitHub, ve a GoogleCloudPlatform/dotnet-docs-samples.
    2. Haz clic en Bifurcar.
    3. Captura de pantalla del botón Fork.
    4. Si se te pide, selecciona la ubicación en la que quieras bifurcar el repositorio.

    Node.js

    1. En GitHub, ve a GoogleCloudPlatform/nodejs-docs-samples.
    2. Haz clic en Bifurcar.
    3. Captura de pantalla del botón Fork.
    4. Si se te pide, selecciona la ubicación en la que quieras bifurcar el repositorio.

    Python

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

  5. Haz clic en Crear servicio para que se muestre el formulario Crear servicio.
  6. Selecciona Desplegar continuamente desde un repositorio.

    Los cambios realizados en el repositorio de GitHub se integran automáticamente en imágenes de contenedor en Artifact Registry y se despliegan 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 Cloud Build y la API Artifact Analysis.
    2. Selecciona GitHub como proveedor de repositorios.
    3. Si se te pide, haz clic en Instalar Google Cloud Build.
    4. Selecciona el repositorio de GitHub que has bifurcado como Repositorio.
    5. Haz clic en Siguiente.
    6. En el campo Branch (Rama), introduce ^main$.
    7. Seleccione Dockerfile como Tipo de compilación y proporcione la ubicación de origen del Dockerfile:
      • eventarc/audit-storage/Dockerfile

        o

      • eventarc/audit_storage/Dockerfile(Ir)
    8. Haz clic en Guardar.
  8. En el formulario Crear servicio, introduce un nombre para el servicio. Por ejemplo, helloworld-events.
  9. Selecciona us-central1(Iowa) como región en la que quieres que se ubique tu servicio.
  10. Selecciona cualquiera de las opciones de Entrada en función del tráfico de entrada que quieras permitir en el servicio de Cloud Run.
  11. Selecciona Requerir 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. Crea el contenedor y súbelo a Cloud Build:
    gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/$SERVICE_NAME:v1
    
  3. Despliega la imagen de contenedor en Cloud Run:
    gcloud run deploy $SERVICE_NAME \
        --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/$SERVICE_NAME:v1
    

    Cuando se te pida que permitas las invocaciones sin autenticar, introduce n.

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

Ahora que has desplegado tu servicio de receptor de eventos llamado helloworld-events en Cloud Run, puedes configurar el activador.

Crear un activador de Eventarc

El activador de Eventarc enviará eventos del segmento de Cloud Storage al servicio de Cloud Run helloworld-events.

Consola

  1. En la Google Cloud consola, ve a la página Triggers (Activadores).

    Ir a Activadores

  2. Haz clic en Crear activador.
  3. Escribe un Nombre del activador.

    Es el ID del activador y debe empezar por una letra. Puede contener hasta 63 letras minúsculas, números o guiones.

  4. Selecciona un Tipo de activador:
    • Propios: filtra los eventos enviados desde proveedores de Google Cloud(directamente o a través de entradas de registros de auditoría de Cloud) o proveedores que usan mensajes de Pub/Sub.
    • De terceros: filtra los eventos enviados por proveedores externos.
  5. En la lista Proveedor de eventos, seleccione Cloud Storage como fuente de eventos.
  6. En la lista Tipo de evento, selecciona storage.objects.create.
  7. En la lista Región, selecciona us-central1 como región de la que quieres recibir eventos.
  8. Selecciona la cuenta de servicio que has creado. Por ejemplo, SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com.
  9. En la lista Destino del evento, selecciona Cloud Run.
  10. En la lista Seleccionar 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 eventos de Cloud Storage y que use la cuenta de servicio que has creado:
    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
    Sustituye PROJECT_ID por el Google Cloud ID del proyecto.

    Donde:

    • type: especifica que los registros de auditoría se crean 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 está auditando, que es storage.objects.create.
    De esta forma, se crea un activador llamado events-tutorial-trigger.
  2. Para confirmar que events-tutorial-trigger se ha creado correctamente, ejecuta el siguiente comando:
    gcloud eventarc triggers list --location=$REGION
  3. El activador events-tutorial-trigger se muestra con un objetivo de helloworld-events.

Generar y ver un evento

  1. Para generar un evento, haz lo siguiente:

    Consola

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

      Ir a Contenedores

    3. Selecciona el segmento de almacenamiento que has creado.
    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. Para ver la entrada del registro, sigue estos pasos:
  3. Consola

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

      Ir a Servicios

    2. En la lista de servicios, haga clic en el nombre del servicio que ha creado para ir a la página Detalles del servicio.
    3. Haz clic en la pestaña Registros para obtener los registros de solicitudes y contenedores de todas las revisiones de este servicio. Puedes filtrar por nivel de gravedad del registro.
    4. Busca una entrada de registro similar a la siguiente:
      Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
      donde BUCKET_NAME es el nombre del segmento 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 la siguiente:
      Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
      donde BUCKET_NAME es el nombre del segmento de Cloud Storage.

Has desplegado correctamente un servicio de receptor de eventos en Cloud Run, has creado un activador de Eventarc, has generado un evento desde Cloud Storage y lo has visto en los registros de Cloud Run.