Recibir un evento de Registros de auditoría de Cloud

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

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.

Objetivos

En este instructivo, podrás:

  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 Eventarc.

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

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

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 Google Cloud Console, 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 Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

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

    Habilita las API

  5. En la página del selector de proyectos de Google Cloud Console, 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 Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

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

    Habilita las API

  8. Completa los siguientes pasos para la consola de Google Cloud o la CLI de gcloud:

    Console

    1. En Google Cloud Console, ve a la página Cuentas de servicio.

      Ir a Cuentas de servicio
    2. Haga clic en Crear cuenta de servicio.
    3. Ingresa un nombre de cuenta de servicio para mostrar en la consola de Google Cloud.

      La consola de Google Cloud genera un ID de cuenta de servicio a partir de este nombre. Si es necesario, edita el ID. No podrás cambiar el ID más adelante.

    4. Opcional: Ingresa una descripción de la cuenta de servicio.
    5. Si no quieres configurar los controles de acceso ahora, haz clic en Listo para terminar de crear la cuenta de servicio.

      Para establecer controles de acceso ahora, haz clic en Crear y continuar y continúa con el siguiente paso.

    6. Elige las funciones de administración de identidades y accesos Cloud Run Invoker y Eventarc Event Receiver para otorgar a la cuenta de servicio del proyecto.
    7. Cuando hayas terminado de agregar funciones, haz clic en Continuar y Listo para terminar de crear la cuenta de servicio.
    8. Para otorgar roles de IAM a una principal, haz lo siguiente:
      1. En la consola de Google Cloud, ve a la página IAM.

        Ir a IAM
      2. Busca la fila que contiene la dirección de correo electrónico USER_EMAIL, haz clic en Editar principal en esa fila y, luego, haz clic en Agregar otra función.
      3. En la lista desplegable, agrega funciones Eventarc Admin y Service Account User.
      4. Haz clic en Guardar. Al principal se le otorgan las funciones de administración de identidades y accesos en el recurso.

    gcloud

    1. Actualiza los componentes de gcloud:
      gcloud components update
    2. Accede con tu cuenta:
      gcloud auth login
      
    3. Establece las variables de configuración que se usan en este instructivo:
      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
      
    4. Reemplaza PROJECT_ID por el ID del proyecto.
    5. Habilita los tipos de registros de Lectura de administración, Lectura de datos y Escritura de datos de los Registros de auditoría de Cloud en Google Cloud Storage en: Ir a Registros de auditoría de Cloud
    6. Crea una cuenta de servicio para el proyecto:
      gcloud iam service-accounts create sample-service-account \
          --description="A sample service account" \
          --display-name="Sample service account"
      Después de crear una cuenta de servicio, pueden pasar hasta 7 minutos antes de que puedas usarla. Si intentas usar una cuenta de servicio de forma inmediata después de crearla y recibes un error, espera al menos 60 segundos y vuelve a intentarlo.
    7. Para confirmar que se creó sample-service-account, ejecuta lo siguiente:
      gcloud iam service-accounts list
      El resultado debería ser similar al ejemplo siguiente:
      DISPLAY NAME                     EMAIL                                                               DISABLED
      Default compute service account  PROJECT_NUMBER-compute@developer.gserviceaccount.com                False
      Sample service account           sample-service-account@PROJECT_ID.iam.gserviceaccount.com           False
    8. Otorga las siguientes funciones a la cuenta de servicio:

        run.invoker

        gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:sample-service-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/run.invoker"

        Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud.

        eventarc.eventReceiver

        gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:sample-service-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/eventarc.eventReceiver"

        Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud.

    9. Otorga las siguientes funciones de IAM al usuario:

        eventarc.admin

        gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="PRINCIPAL" \
          --role='roles/eventarc.admin'

        Reemplaza los siguientes valores:

        • PROJECT_ID: Es el ID del proyecto de Google Cloud.
        • PRINCIPAL: Es una identidad válida a la que deseas otorgar la función.

            Por ejemplo:

          • Correo electrónico de la Cuenta de Google: user:test-user@gmail.com
          • Grupo de Google: group:admins@example.com
          • Cuenta de servicio: serviceAccount:test123@example.domain.com
          • Dominio de Google Workspace o Cloud Identity: domain:example.domain.com

        iam.serviceAccountUser

        gcloud iam service-accounts add-iam-policy-binding \
          sample-service-account@PROJECT_ID.iam.gserviceaccount.com \
          --member="PRINCIPAL" \
          --role="roles/iam.serviceAccountUser"

        Reemplaza los siguientes valores:

        • PROJECT_ID: Es el ID del proyecto de Google Cloud.
        • PRINCIPAL: Es una identidad válida a la que deseas otorgar la función.

            Por ejemplo:

          • Correo electrónico de la Cuenta de Google: user:test-user@gmail.com
          • Grupo de Google: group:admins@example.com
          • Cuenta de servicio: serviceAccount:test123@example.domain.com
          • Dominio de Google Workspace o Cloud Identity: domain:example.domain.com
    10. Descarga e instala la herramienta de administración de código fuente de Git.

Cree 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. Ve a Cloud Storage en la consola de Google Cloud.

    Ir a Cloud Storage

  2. Haz clic en Crear bucket.
  3. Bucket nuevo.
  4. 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.
  5. Haga clic en Crear.

gcloud

gsutil mb -l us-central1 gs://events-tutorial-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:

Console

  1. Clona el repositorio de muestra en tu cuenta de GitHub:
  2. Comienza a usarlo

    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. Ve a Cloud Run en la consola de Google Cloud.
  4. Ir a Cloud Run

  5. Haz clic en Crear servicio para mostrar el formulario Crear servicio.
  6. create-service-page.
  7. Selecciona Continuously deploy new revisions from a source repository.
  8. Haz clic en Configurar con Cloud Build para abrir el formulario Configurar con Cloud Build.
  9. Página Configurar con Cloud Build.

    En el formulario Configurar con Cloud Build, haz lo siguiente:

    1. Si se te solicita, habilita la API de Cloud Build y la API de Container 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. Haga clic en Next.
    6. En el campo Rama, ingresa ^master$.
    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.
  10. En el formulario Crear servicio, ingresa el nombre de servicio deseado. Por ejemplo, helloworld-events
  11. Selecciona us-central1(Iowa) como la región en la que quieres que se ubique el servicio.
  12. Haga clic en Next.
  13. En la sección Configura la forma en que se activa el servicio, realiza los siguientes pasos:
    • Selecciona cualquiera de las opciones de Ingress en función del tráfico de entrada que deseas permitir en el servicio de Cloud Run.
    • Selecciona Solicitar autenticación.
  14. De forma opcional, haz clic en Agregar activador de Eventarc y crea un activador o crea un activador después de crear un servicio. Si deseas obtener más información para crear un activador, consulta Crea un activador de Eventarc.
  15. Haga clic en Crear.

gcloud

  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
    

    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. Ve a Cloud Run en la consola de Google Cloud.

    Ir a Cloud Run

  2. En la lista de servicios, haz clic en el servicio que creaste y ve a la página Detalles del servicio.
  3. Haz clic en la pestaña Activadores y, luego, en Agregar activador de Eventarc.
  4. En la lista desplegable Elige un evento, selecciona Cloud Storage > storage.objects.create.
  5. A fin de habilitar los tipos de registros de auditoría obligatorios para el servicio storage.googleapis.com, haz clic en Habilitar todo.
  6. En el campo Recibir eventos desde, selecciona Región única y, luego, selecciona us-central1 como la región desde la que recibirás los eventos.
  7. Si se te solicita, otorga la función eventarc.eventReceiver a la cuenta de servicio de Compute Engine y la función iam.serviceAccountTokenCreator a la cuenta de servicio de Pub/Sub.Configura un activador nuevo
  8. Selecciona la Cuenta de servicio que creaste. Por ejemplo, SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com.
  9. Haz clic en Guardar.

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=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=sample-service-account@PROJECT_ID.iam.gserviceaccount.com
    Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud. 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=us-central1
  3. Se muestra events-tutorial-trigger con un objetivo 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 random.txt y el texto “Hello World”.
    2. Ve a Cloud Storage en la consola de Google Cloud.

      Ir a Cloud Storage

    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
    gsutil cp random.txt gs://events-tutorial-PROJECT_ID/random.txt
  2. Sigue estos pasos para ver la entrada de registro:
  3. Console

    1. Ve a Cloud Run en la consola de Google Cloud.

      Ir a Cloud Run

    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: Activar registros.

    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.

¡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-tutorial-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.

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

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

¿Qué sigue?