Enruta eventos de registro de auditoría a Cloud Run

Un activador de Eventarc declara tu interés en un evento o conjunto de eventos determinado. Si deseas configurar el enrutamiento del evento, especifica filtros para el activador, incluidos el origen del evento y el servicio Cloud Run de destino.

Eventarc entrega eventos al receptor de eventos en formato de CloudEvents a través de una solicitud HTTP.

En estas instrucciones, se muestra cómo configurar el enrutamiento para tu servicio de Cloud Run que se activa cuando se crea un registro de auditoría que coincide con los criterios de filtro del activador. Para obtener una lista de los eventos de registro de auditoría compatibles con Eventarc, incluidos los valores serviceName y methodName, consulta Tipos de eventos compatibles con Eventarc.

Para obtener más información sobre la captura de eventos que se activan cuando se crea un registro de auditoría que coincide con los criterios de filtro del activador, consulta Determina los filtros de eventos para los Registros de auditoría de Cloud.

Prepárate para crear un activador

Antes de crear un activador, completa estos requisitos previos:

Consola

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

    Ir al selector de proyectos

  2. Habilita las APIs de Cloud Logging, Eventarc y Eventarc Publishing.

    Habilita las API

  3. Si corresponde, habilita la API relacionada con los eventos de los registros de auditoría de Cloud. Por ejemplo, para los registros de auditoría de Cloud Functions, habilita la API de Cloud Functions.

  4. Si aún no tienes una, crea una cuenta de servicio administrada por el usuario y, luego, otórgale los roles y los permisos necesarios para que Eventarc pueda administrar los eventos para el servicio de destino.

    1. En la consola de Google Cloud, ve a la página Crear cuenta de servicio.

      Ve a Crear cuenta de servicio

    2. Elige tu proyecto.

    3. Escribe un nombre en el campo Nombre de cuenta de servicio. La consola de Google Cloud completa el campo ID de la cuenta de servicio en función de este nombre.

      Opcional: en el campo Descripción de la cuenta de servicio, escribe una descripción. Por ejemplo, Service account for event trigger.

    4. Haz clic en Crear y continuar.

    5. Para proporcionar el acceso adecuado, en la lista Elegir un rol, elige los roles necesarios de Identity and Access Management (IAM) que otorgarás a tu cuenta de servicio para las invocaciones autenticadas o no autenticadas. Si deseas obtener más información, consulta Roles y permisos para destinos de Cloud Run.

      Para obtener roles adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.

    6. Haz clic en Continuar.

    7. Para terminar de crear la cuenta, haz clic en Listo.

gcloud

  1. En la consola de Google Cloud, activa Cloud Shell.

    Activar Cloud Shell

    En la parte inferior de la consola de Google Cloud, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.

  2. Habilita las APIs de Cloud Logging, Eventarc y Eventarc Publishing.

    gcloud services enable logging.googleapis.com \
      eventarc.googleapis.com \
      eventarcpublishing.googleapis.com
    
  3. Si corresponde, habilita la API relacionada con los eventos de los registros de auditoría de Cloud. Por ejemplo, para los registros de auditoría de Cloud Functions, habilita cloudfunctions.googleapis.com.

  4. Si aún no tienes una, crea una cuenta de servicio administrada por el usuario y, luego, otórgale los roles y los permisos necesarios para que Eventarc pueda administrar los eventos para el servicio de destino.

    1. Cree la cuenta de servicio:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
      

      Reemplaza SERVICE_ACCOUNT_NAME por el nombre de la cuenta de servicio. Debe tener entre 6 y 30 caracteres y puede contener guiones y caracteres alfanuméricos en minúscula. Después de crear una cuenta de servicio, no podrás cambiar su nombre.

    2. Otorga los roles o permisos necesarios de Identity and Access Management (IAM) para las invocaciones autenticadas o no autenticadas. Si deseas obtener más información, consulta Roles y permisos para destinos de Cloud Run.

Crear un activador

Puedes crear un activador de Eventarc con Google Cloud CLI o a través de la consola de Google Cloud.

Consola

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

    Ir a Activadores

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

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

  4. Para el Tipo de activador, elige Fuentes de Google.
  5. Elige un Proveedor de eventos.

    Este es el servicio de Google que es la fuente de los eventos a través de sus registros de auditoría. Por ejemplo, elige BigQuery.

    Ten en cuenta que el nombre del proveedor de eventos que se usa en la documentación de Google Cloud asociada podría no tener el prefijo Cloud o Google Cloud. Por ejemplo, en la consola, Memorystore for Redis se denomina Google Cloud Memorystore para Redis.

  6. En la lista Tipo de evento, en los eventos a través de los Registros de auditoría de Cloud, elige un tipo de evento.
  7. Elige una de las siguientes opciones:
    • Cualquier recurso: es el valor predeterminado y, además, incluye los recursos creados de forma dinámica que tienen identificadores generados en el momento de la creación.
    • Recurso específico: debes proporcionar el nombre completo del recurso.
    • Patrón de ruta de acceso: puedes filtrar los recursos con un patrón de ruta de acceso. Por ejemplo, escribe projects/_/buckets/eventarc-bucket/objects/random.txt o projects/_/buckets/**/r*.txt.
  8. Para especificar la codificación de la carga útil del evento, en la lista Tipo de contenido de datos de eventos, elige application/json o application/protobuf.

    Ten en cuenta que una carga útil de evento con formato JSON es mayor que una con formato en Protobuf. Esto puede afectar la confiabilidad según el destino del evento y los límites de tamaño del evento. Para obtener más información, consulta Problemas conocidos.

  9. En la lista Región, elige una región.

    Los activadores de los Registros de auditoría de Cloud para Eventarc están disponibles en regiones específicas y en la global, pero no están disponibles en ubicaciones birregionales o multirregionales. Para evitar cualquier problema de rendimiento y residencia de datos causado por un activador global, te recomendamos que la ubicación coincida con la del servicio de Google Cloud que genera eventos. Para obtener más información, consulta Ubicaciones de Eventarc.

    Si especificas la ubicación global, recibirás eventos de todas las ubicaciones que generen coincidencias para los filtros de eventos. Por ejemplo, si creas un activador de Eventarc global, puedes recibir eventos de recursos en las multirregiones de EE.UU. y UE.

    Ten en cuenta que hay un problema conocido con los activadores de los Registros de auditoría de Cloud para Compute Engine que da como resultado eventos que se originan en una sola región: us-central1. Esto ocurre sin importar dónde se encuentre la instancia de máquina virtual. Cuando crees tu activador, configura su ubicación como us-central1 o global.

  10. ?
  11. Elige la cuenta de servicio que invocará el servicio o el flujo de trabajo.

    O bien, puedes crear una cuenta de servicio nueva.

    Esto especifica el correo electrónico de la cuenta de servicio de Identity and Access Management (IAM) asociado con el activador y al que otorgaste antes roles específicos que requiere Eventarc.

  12. En la lista Destino del evento, elige Cloud Run.
  13. Elige un servicio.

    Este es el nombre del servicio que recibe los eventos del activador. El servicio debe estar en el mismo proyecto que el activador y recibirá eventos como solicitudes POST HTTP enviadas a su ruta de URL raíz (/) cada vez que se genere el evento.

  14. De manera opcional, puedes especificar la ruta de URL de servicio a la que enviar la solicitud entrante.

    Esta es la ruta de acceso relativa en el servicio de destino al que se deben enviar los eventos del activador. Por ejemplo: /, /route, route, route/subroute.

  15. Haz clic en Crear.
  16. Después de que se crea un activador, los filtros de fuente del evento no se pueden cambiar. En su lugar, crea un activador nuevo y borra el anterior. Para obtener más información, consulta Administra activadores.

gcloud

Para crear un activador, ejecuta un comando gcloud eventarc triggers create junto con las marcas obligatorias y opcionales.

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.cloud.audit.log.v1.written" \
    --event-filters="serviceName=SERVICE_NAME" \
    --event-filters="methodName=METHOD_NAME" \
    --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Reemplaza lo siguiente:

  • TRIGGER: el ID del activador o un identificador completamente calificado.
  • LOCATION: la ubicación del activador de Eventarc. De forma alternativa, puedes establecer la propiedad eventarc/location; por ejemplo, gcloud config set eventarc/location us-central1.

    Los activadores de Registros de auditoría de Cloud para Eventarc están disponibles en regiones específicas y en la global, pero no están disponibles en ubicaciones birregionales o multirregionales. Para evitar cualquier problema de rendimiento y residencia de datos causado por un activador global, te recomendamos que la ubicación coincida con la del servicio de Google Cloud que genera eventos. Para obtener más información, consulta Ubicaciones de Eventarc.

    Si especificas la ubicación global, recibirás eventos de todas las ubicaciones que generen coincidencias para los filtros de eventos. Por ejemplo, si creas un activador de Eventarc global, puedes recibir eventos de recursos en las multirregiones de EE.UU y UE.

    Ten en cuenta que hay un problema conocido con los activadores de Registros de auditoría de Cloud para Compute Engine que da lugar a eventos originados en una única región: us-central1. Esto ocurre sin importar dónde se encuentre la instancia de máquina virtual. Cuando crees tu activador, configura su ubicación como us-central1 o global.

  • DESTINATION_RUN_SERVICE: el nombre del servicio de Cloud Run que recibe los eventos para el activador. El servicio puede estar en cualquiera de las ubicaciones admitidas de Cloud Run y no es necesario que esté en la misma ubicación que el activador. Sin embargo, el servicio debe estar en el mismo proyecto que el activador y recibirá eventos como solicitudes POST HTTP enviadas a su ruta de URL raíz (/) cada vez que se genere el evento.
  • DESTINATION_RUN_REGION: (opcional) la región en la que se puede encontrar el servicio de Cloud Run de destino. Si no se especifica, se supone que el servicio se encuentra en la misma región que el activador.
  • SERVICE_NAME: es el identificador del servicio de Google Cloud.
  • METHOD_NAME: Es el identificador de la operación.
  • EVENT_DATA_CONTENT_TYPE: la codificación de la carga útil del evento (opcional). Puede ser application/json o application/protobuf. La codificación predeterminada es application/json.

    Ten en cuenta que una carga útil de evento con formato JSON es mayor que una con formato Protobuf. Esto puede afectar la confiabilidad según el destino del evento y los límites de tamaño del evento. Para obtener más información, consulta Problemas conocidos.

  • SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio administrada por el usuario.
  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud.

Notas:

  • Estas marcas son obligatorias:

    • --event-filters="type=google.cloud.audit.log.v1.written"
    • --event-filters="serviceName=VALUE"
    • --event-filters="methodName=VALUE"
  • De manera opcional, filtra eventos para un recurso específico mediante la marca --event-filters="resourceName=VALUE" y la especificación de la ruta completa al recurso. Omite la marca para los recursos creados de forma dinámica que tienen identificadores generados en el momento de la creación. O bien, filtra eventos para un conjunto de recursos mediante la marca --event-filters-path-pattern="resourceName=VALUE" y la especificación del patrón de ruta de recurso.

  • Cada activador tiene varios filtros de eventos, delimitados por comas en una marca --event-filters=[ATTRIBUTE=VALUE,...], o puedes repetir la marca para agregar más filtros. Solo los eventos que coinciden con todos los filtros se envían al destino. No se admiten comodines ni expresiones regulares.
  • Después de crear un activador, no se puede cambiar el tipo de filtro de eventos. Para un tipo de evento diferente, debes crear un activador nuevo.
  • La marca --service-account se usa para especificar el correo electrónico de la cuenta de servicio de Identity and Access Management (IAM) asociado con el activador.
  • De manera opcional, especifica una ruta de acceso relativa en el servicio de Cloud Run de destino al que se deben enviar los eventos del activador con la marca --destination-run-path.

Ejemplo:

  gcloud eventarc triggers create helloworld-trigger \
      --location=us-central1 \
      --destination-run-service=helloworld-events \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.audit.log.v1.written" \
      --event-filters="serviceName=bigquery.googleapis.com" \
      --event-filters="methodName=google.cloud.bigquery.v2.JobService.InsertJob" \
      --service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com

Esto crea un activador llamado helloworld-trigger para los registros de auditoría que escribe bigquery.googleapis.com y para la operación identificada como google.cloud.bigquery.v2.JobService.InsertJob.

Terraform

Puedes crear un activador para un destino de Cloud Run con Terraform. Para obtener más información, consulta Crea un activador con Terraform.

Enumera un activador

Para confirmar la creación de un activador, enumera los activadores de Eventarc con Google Cloud CLI o a través de la consola de Google Cloud.

Consola

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

    Ir a Activadores

    En esta página, se enumeran tus activadores en todas las ubicaciones y se incluyen detalles, como nombres, regiones, proveedores de eventos, destinos y mucho más.

  2. Para filtrar tus activadores, haz lo siguiente:

    1. Haz clic en Filtrar o en el campo Filtrar activadores.
    2. En la lista Propiedades, elige una opción para filtrar los activadores.

    Puedes elegir una sola propiedad o usar el operador lógico OR para agregar más propiedades.

  3. Para ordenar los activadores, junto con el encabezado de la columna compatible, haz clic en Ordenar.

gcloud

Ejecuta el siguiente comando para enumerar los activadores:

gcloud eventarc triggers list --location=-

Este comando enumera tus activadores en todas las ubicaciones y, además, incluye detalles como nombres, tipos, destinos y estados.

¿Qué sigue?