Recopila registros de auditoría de Slack

Compatible con:

En este documento, se explica cómo transferir registros de auditoría de Slack a Google Security Operations con Cloud Run Functions de Google Cloud o Amazon S3 con AWS Lambda.

Los registros de auditoría de Slack proporcionan un registro detallado de los eventos relacionados con la seguridad en toda tu organización de Slack Enterprise Grid. La API de Audit Logs te permite supervisar las acciones de los usuarios, como los accesos, las descargas de archivos, las instalaciones de apps y los cambios administrativos, para fines de supervisión de cumplimiento y seguridad.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Una instancia de Google SecOps
  • Un plan de Enterprise Grid de Slack con acceso de propietario de la organización o administrador
  • Acceso con privilegios a cualquiera de las siguientes opciones:

    • Google Cloud (para la opción 1: Cloud Run Functions y Cloud Scheduler)
    • AWS (para la opción 2: S3, IAM, Lambda, EventBridge)

Recopila credenciales de Slack

Crea la app de Slack

La API de Slack Audit Logs requiere un token de OAuth del usuario con el alcance auditlogs:read. Este token se debe obtener instalando una app a nivel de la organización de Enterprise Grid, no a nivel del espacio de trabajo.

  1. Accede a la Consola del administrador de Slack con una cuenta de administrador o propietario de la organización de Enterprise Grid.
  2. Ve a la página de Apps de la API de Slack.
  3. Haz clic en Crear app nueva.
  4. Selecciona Desde cero.
  5. Proporciona los siguientes detalles de configuración:
    • Nombre de la app: Ingresa un nombre descriptivo (por ejemplo, Google SecOps Audit Integration).
    • Elige un espacio de trabajo para desarrollar tu app: Selecciona tu lugar de trabajo de Slack de desarrollo (cualquier lugar de trabajo de la organización).
  6. Haz clic en Crear app.

Configura los permisos de OAuth

  1. En la página de configuración de tu app, selecciona OAuth y permisos en el panel de navegación de la izquierda.
  2. Desplázate hacia abajo hasta la sección Scopes.
  3. En User Token Scopes (NO Bot Token Scopes), haz clic en Add an OAuth Scope.
  4. Agrega el siguiente alcance:
    • auditlogs:read: Este alcance habilita el acceso a la API de Audit Logs para la organización de Enterprise Grid.
  5. En Bot Token Scopes, haz clic en Add an OAuth Scope.
  6. Agrega el siguiente alcance:

    • users:read: Este alcance es necesario para habilitar la instalación de apps a nivel de la organización.

Configura la URL de redireccionamiento

  1. En la página de configuración de tu app, selecciona OAuth y permisos en el panel de navegación de la izquierda.
  2. Ve a la sección URLs de redireccionamiento.
  3. Haz clic en Agregar una URL de redireccionamiento nueva.
  4. Ingresa la siguiente URL:

    https://slack.com/oauth/v2/authorize
    
  5. Haz clic en Agregar.

  6. Haz clic en Guardar URLs.

Activa la distribución pública

Para instalar una app a nivel de la organización de Enterprise (no solo en un espacio de trabajo), debes activar la distribución pública.

¿Por qué se requiere la distribución pública?

  • Slack requiere que las apps con permisos para toda la organización tengan habilitada la distribución pública.
  • Esto permite instalar la app a nivel de la organización en lugar de en espacios de trabajo individuales.
  • Sin ella, solo podrás instalar la app en un solo espacio de trabajo de tu Enterprise Grid.
  • Habilitar la distribución pública simplemente quita las restricciones internas sobre el alcance de la instalación.

Para activar la distribución pública, sigue estos pasos:

  1. En la página de configuración de la app, selecciona Administrar distribución en el panel de navegación de la izquierda.
  2. En Share Your App with Other Workspaces, verifica que las cuatro secciones tengan marcas de verificación verdes:
    • Cómo quitar la información codificada
    • Activa la distribución pública
    • Cómo establecer una URL de redireccionamiento
    • Cómo agregar un permiso de OAuth
  3. Si alguna sección muestra una X roja, expándela y completa la acción requerida.
  4. Marca la casilla de verificación junto a Revisé y quité toda la información codificada.
  5. Haz clic en Activar la distribución pública.

Instala la app en la organización de Enterprise

  1. En la página de configuración de tu app, selecciona OAuth y permisos en el panel de navegación de la izquierda.
  2. En Share Your App with Your Workspace, copia la URL para compartir.
  3. Ingresa la URL en tu navegador.
  4. Importante: En la pantalla de instalación, verifica el menú desplegable de la esquina superior derecha.
  5. Asegúrate de instalar la app en la organización de Enterprise, NO en un lugar de trabajo individual.
  6. Si ves el nombre de un espacio de trabajo en el menú desplegable, haz clic en él y selecciona el nombre de tu organización empresarial.
  7. Revisa los permisos solicitados y haz clic en Permitir.

Recupera credenciales

Una vez que se complete la autorización, se te redireccionará a la página OAuth y permisos.

  1. En Tokens de OAuth para tu espacio de trabajo, busca el Token de OAuth del usuario.
  2. El token comienza con xoxp-.
  3. Haz clic en Copiar y guarda este token de forma segura.

  4. Anota tu ID de organización:

    1. Ve a la Consola del administrador de Slack.
    2. Navega a Configuración y permisos > Configuración de la organización.
    3. Copia el ID de la organización.

Verifica los permisos

Para verificar que tu app tenga los permisos necesarios, haz lo siguiente:

  1. Ve a la página de Apps de la API de Slack.
  2. Selecciona tu app.
  3. Selecciona OAuth y permisos en el panel de navegación izquierdo.
  4. En Tokens de OAuth para tu espacio de trabajo, verifica que se muestre un token de OAuth del usuario (comienza con xoxp-).
  5. En Alcances, verifica que auditlogs:read aparezca en Alcances del token del usuario.

Prueba el acceso a la API

  • Prueba tu token antes de continuar con la integración:

    SLACK_TOKEN="xoxp-your-token-here"
    
    curl -H "Authorization: Bearer $SLACK_TOKEN" \
      "https://api.slack.com/audit/v1/logs?limit=1"
    

    Una respuesta correcta contiene un array entries con eventos del registro de auditoría. Si recibes un error invalid_auth o missing_scope, verifica tu token y tus permisos.

Opción 1: Configura la exportación de registros de auditoría de Slack con Google Cloud Run Functions

Esta opción usa Google Cloud Run Functions y Cloud Scheduler de Google Cloud para recopilar registros de auditoría de Slack y transferirlos directamente a Google SecOps con los secuencias de comandos de transferencia de Chronicle.

Antes de comenzar (opción 1)

Asegúrate de cumplir con los siguientes requisitos previos adicionales:

  • Un proyecto de GCP con las siguientes APIs habilitadas:
    • API de Cloud Functions
    • API de Cloud Scheduler
    • API de Secret Manager
  • Permisos para crear Cloud Functions, trabajos de Cloud Scheduler y secretos en Secret Manager
  • Un archivo JSON de una cuenta de servicio de Google SecOps

Obtén la cuenta de servicio de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. Descarga el archivo de autenticación de transferencia.
  4. Guarda el archivo JSON de forma segura. Subirás este archivo como un secreto en Google Secret Manager.

Prepara el código de la función

Descarga los archivos de implementación del repositorio de GitHub de ingestion-scripts de Chronicle:

  1. Desde la carpeta slack, descarga lo siguiente:
    • .env.yml
    • main.py
    • requirements.txt
  2. Desde la raíz del repositorio, descarga todo el directorio common con todos sus archivos.

    Tu directorio de implementación debe tener la siguiente estructura:

    deployment_directory/
    ├── common/
       ├── __init__.py
       ├── auth.py
       ├── env_constants.py
       ├── ingest.py
       ├── status.py
       └── utils.py
    ├── .env.yml
    ├── main.py
    └── requirements.txt
    

Configura secretos en Google Secret Manager

Almacena credenciales sensibles en Secret Manager para que la función de Cloud Run pueda acceder a ellas de forma segura.

Crea un secreto para la cuenta de servicio de Google SecOps

  1. En GCP Console, ve a Seguridad > Secret Manager.
  2. Haz clic en Crear secreto.
  3. Proporciona los siguientes detalles de configuración:
    • Nombre: Ingresa chronicle-service-account.
    • Valor del secreto: Ingresa todo el contenido del archivo JSON de la cuenta de servicio de Google SecOps.
  4. Haz clic en Crear secreto.
  5. Copia el nombre del recurso del secreto. El formato es el siguiente:

    projects/PROJECT_ID/secrets/chronicle-service-account/versions/latest
    

Crea un secreto para el token de Slack

  1. En la página de Secret Manager, haz clic en Crear secreto.
  2. Proporciona los siguientes detalles de configuración:
    • Nombre: Ingresa slack-admin-token.
    • Valor del secreto: Ingresa el token de OAuth del usuario de Slack (comienza con xoxp-).
  3. Haz clic en Crear secreto.
  4. Copia el nombre del recurso del secreto. El formato es el siguiente:

    projects/PROJECT_ID/secrets/slack-admin-token/versions/latest
    

Configure las variables de entorno

  1. Abre el archivo .env.yml en el directorio de implementación y configura las variables de entorno:

    CHRONICLE_CUSTOMER_ID: "<your-chronicle-customer-id>"
    CHRONICLE_REGION: "us"
    CHRONICLE_SERVICE_ACCOUNT: "projects/<PROJECT_ID>/secrets/chronicle-service-account/versions/latest"
    CHRONICLE_NAMESPACE: ""
    POLL_INTERVAL: "5"
    SLACK_ADMIN_TOKEN: "projects/<PROJECT_ID>/secrets/slack-admin-token/versions/latest"
    

    Reemplaza lo siguiente:

    • <your-chronicle-customer-id>: Es tu ID de cliente de Google SecOps.
    • <PROJECT_ID> es el ID del proyecto de Google Cloud.
    • CHRONICLE_REGION: Se establece en tu región de Google SecOps. Valores válidos: us, asia-northeast1, asia-south1, asia-southeast1, australia-southeast1, europe, europe-west2, europe-west3, europe-west6, europe-west9, europe-west12, me-central1, me-central2, me-west1, northamerica-northeast2, southamerica-east1.
    • POLL_INTERVAL: Es el intervalo de frecuencia (en minutos) con el que se ejecuta la función. Esta duración debe ser la misma que el intervalo del trabajo de Cloud Scheduler.
  2. Guarda el archivo .env.yml.

Implementa la Cloud Run function

  1. Abre una terminal o Cloud Shell en la consola de Google Cloud. Navega a tu directorio de implementación y ejecuta el siguiente comando:

    gcloud functions deploy slack-audit-to-chronicle \
      --entry-point main \
      --trigger-http \
      --runtime python312 \
      --env-vars-file .env.yml \
      --timeout 540s \
      --memory 512MB \
      --service-account <SERVICE_ACCOUNT_EMAIL>
    

    Reemplaza <SERVICE_ACCOUNT_EMAIL> por la dirección de correo electrónico de la cuenta de servicio que deseas que use tu función de Cloud Run.

  2. Espera a que se complete la implementación. Una vez que se implemente, anota la URL de la función del resultado.

Configura Cloud Scheduler

  1. En GCP Console, ve a Cloud Scheduler > Crear trabajo.
  2. Proporciona los siguientes detalles de configuración:

    Parámetro de configuración Valor
    Nombre slack-audit-scheduler
    Región Selecciona la misma región en la que implementaste la función de Cloud Run.
    Frecuencia */5 * * * * (cada 5 minutos, coincide con el valor de POLL_INTERVAL)
    Zona horaria Selecciona la zona horaria (se recomienda UTC)
  3. Haz clic en Continuar.

  4. En la sección Configura la ejecución, haz lo siguiente:

    • Tipo de destino: Selecciona HTTP.
    • URL: Ingresa la URL de la función de Cloud Run del resultado de la implementación.
    • Método HTTP: Selecciona POST.
  5. En la sección Encabezado de autorización, haz lo siguiente:

    • Selecciona Agregar token de OIDC.
    • Cuenta de servicio: Selecciona la misma cuenta de servicio que se usó para la función de Cloud Run.
  6. Haz clic en Crear.

Opciones de frecuencia de programación

Elige la frecuencia según el volumen de registros y los requisitos de latencia:

Frecuencia Expresión cron Caso de uso
Cada 5 minutos */5 * * * * Estándar (recomendado)
Cada 15 minutos */15 * * * * Volumen medio
Cada 1 hora 0 * * * * Volumen bajo

Prueba la integración (opción 1)

  1. En la consola de Cloud Scheduler, busca tu trabajo (slack-audit-scheduler).
  2. Haz clic en Ejecutar forzosamente para activar el trabajo de forma manual.
  3. Espera unos segundos.
  4. Ve a Cloud Functions.
  5. Haz clic en el nombre de la función (slack-audit-to-chronicle).
  6. Haz clic en la pestaña Registros.
  7. Verifica que la función se haya ejecutado correctamente. Busca lo siguiente:

    Retrieving the Slack Audit logs since: YYYY-MM-DDTHH:MM:SSZ
    Processing logs...
    Retrieved X audit logs from the API call
    Logs processed successfully.
    

Opción 2: Configura la exportación de registros de auditoría de Slack con AWS S3

Esta opción usa AWS Lambda para recopilar registros de auditoría de Slack y almacenarlos en Amazon S3, y, luego, configura un feed de Google SecOps para transferir los registros.

Antes de comenzar (opción 2)

Asegúrate de cumplir con el siguiente requisito previo adicional:

  • Una cuenta de AWS con permisos para crear buckets de S3, usuarios/roles/políticas de IAM, funciones de Lambda y reglas de EventBridge

Crea un bucket de Amazon S3

  1. Crea un bucket de Amazon S3 siguiendo la guía del usuario Cómo crear un bucket.
  2. Guarda el Nombre y la Región del bucket para consultarlos en el futuro (por ejemplo, slack-audit-logs).

Configura la política y el rol de IAM para las cargas de S3

  1. En la consola de AWS, ve a la pestaña IAM > Políticas > Crear política > JSON.
  2. Ingresa la siguiente política. Reemplaza slack-audit-logs si usaste un nombre de bucket diferente:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AllowPutObjects",
          "Effect": "Allow",
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::slack-audit-logs/*"
        },
        {
          "Sid": "AllowGetStateObject",
          "Effect": "Allow",
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::slack-audit-logs/slack/audit/state.json"
        }
      ]
    }
    
  3. Haz clic en Siguiente.

  4. Ingresa el nombre de la política SlackAuditS3Policy.

  5. Haz clic en Crear política.

  6. Ve a IAM > Roles > Crear rol > Servicio de AWS > Lambda.

  7. Adjunta la política recién creada SlackAuditS3Policy.

  8. Ponle el nombre SlackAuditToS3Role al rol y haz clic en Crear rol.

Crea la función Lambda

  1. En la consola de AWS, ve a Lambda > Functions > Create function.
  2. Haz clic en Author from scratch.
  3. Proporciona los siguientes detalles de configuración:

    Parámetro de configuración Valor
    Nombre slack_audit_to_s3
    Tiempo de ejecución Python 3.13
    Arquitectura x86_64
    Rol de ejecución SlackAuditToS3Role
  4. Haz clic en Crear función.

  5. Después de crear la función, abre la pestaña Code, borra el código auxiliar y, luego, ingresa el siguiente código (slack_audit_to_s3.py):

    #!/usr/bin/env python3
    # Lambda: Pull Slack Audit Logs (Enterprise Grid) to S3 (JSONL format)
    import os, json, time, urllib.parse
    from urllib.request import Request, urlopen
    from urllib.error import HTTPError, URLError
    import boto3
    
    BASE_URL = "https://api.slack.com/audit/v1/logs"
    TOKEN = os.environ["SLACK_AUDIT_TOKEN"]
    BUCKET = os.environ["S3_BUCKET"]
    PREFIX = os.environ.get("S3_PREFIX", "slack/audit/")
    STATE_KEY = os.environ.get("STATE_KEY", "slack/audit/state.json")
    LIMIT = int(os.environ.get("LIMIT", "200"))
    MAX_PAGES = int(os.environ.get("MAX_PAGES", "20"))
    LOOKBACK_SEC = int(os.environ.get("LOOKBACK_SECONDS", "3600"))
    HTTP_TIMEOUT = int(os.environ.get("HTTP_TIMEOUT", "60"))
    HTTP_RETRIES = int(os.environ.get("HTTP_RETRIES", "3"))
    RETRY_AFTER_DEFAULT = int(os.environ.get("RETRY_AFTER_DEFAULT", "2"))
    # Optional server-side filters (comma-separated 'action' values)
    ACTIONS = os.environ.get("ACTIONS", "").strip()
    
    s3 = boto3.client("s3")
    
    def _get_state() -> dict:
        try:
            obj = s3.get_object(Bucket=BUCKET, Key=STATE_KEY)
            st = json.loads(obj["Body"].read() or b"{}")
            return {"cursor": st.get("cursor")}
        except Exception:
            return {"cursor": None}
    
    def _put_state(state: dict) -> None:
        body = json.dumps(state, separators=(",", ":")).encode("utf-8")
        s3.put_object(
            Bucket=BUCKET, Key=STATE_KEY, Body=body, ContentType="application/json"
        )
    
    def _http_get(params: dict) -> dict:
        qs = urllib.parse.urlencode(params, doseq=True)
        url = f"{BASE_URL}?{qs}" if qs else BASE_URL
        req = Request(url, method="GET")
        req.add_header("Authorization", f"Bearer {TOKEN}")
        req.add_header("Accept", "application/json")
        attempt = 0
        while True:
            try:
                with urlopen(req, timeout=HTTP_TIMEOUT) as r:
                    return json.loads(r.read().decode("utf-8"))
            except HTTPError as e:
                # Respect Retry-After on 429/5xx
                if e.code in (429, 500, 502, 503, 504) and attempt < HTTP_RETRIES:
                    retry_after = 0
                    try:
                        retry_after = int(
                            e.headers.get("Retry-After", RETRY_AFTER_DEFAULT)
                        )
                    except Exception:
                        retry_after = RETRY_AFTER_DEFAULT
                    time.sleep(max(1, retry_after))
                    attempt += 1
                    continue
                raise
            except URLError:
                if attempt < HTTP_RETRIES:
                    time.sleep(RETRY_AFTER_DEFAULT)
                    attempt += 1
                    continue
                raise
    
    def _write_page(data: dict, page_idx: int) -> str:
        """Extract entries from Slack API response and write as JSONL."""
        entries = data.get("entries") or []
        if not entries:
            return None
        lines = [json.dumps(entry, separators=(",", ":")) for entry in entries]
        body = "\n".join(lines).encode("utf-8")
        ts = time.strftime("%Y/%m/%d/%H%M%S", time.gmtime())
        key = f"{PREFIX}{ts}-slack-audit-p{page_idx:05d}.json"
        s3.put_object(
            Bucket=BUCKET, Key=key, Body=body, ContentType="application/json"
        )
        return key
    
    def lambda_handler(event=None, context=None):
        state = _get_state()
        cursor = state.get("cursor")
        params = {"limit": LIMIT}
        if ACTIONS:
            params["action"] = [a.strip() for a in ACTIONS.split(",") if a.strip()]
        if cursor:
            params["cursor"] = cursor
        else:
            # First run (or reset): fetch a recent window by time
            params["oldest"] = int(time.time()) - LOOKBACK_SEC
        pages = 0
        total = 0
        last_cursor = None
        while pages < MAX_PAGES:
            data = _http_get(params)
            _write_page(data, pages)
            entries = data.get("entries") or []
            total += len(entries)
            # Cursor for next page
            meta = data.get("response_metadata") or {}
            next_cursor = meta.get("next_cursor") or data.get("next_cursor")
            if next_cursor:
                params = {"limit": LIMIT, "cursor": next_cursor}
                if ACTIONS:
                    params["action"] = [
                        a.strip() for a in ACTIONS.split(",") if a.strip()
                    ]
                last_cursor = next_cursor
                pages += 1
                continue
            break
        if last_cursor:
            _put_state({"cursor": last_cursor})
        return {
            "ok": True,
            "pages": pages + (1 if total or last_cursor else 0),
            "entries": total,
            "cursor": last_cursor,
        }
    
    if __name__ == "__main__":
        print(lambda_handler())
    

Configura las variables de entorno de Lambda

  1. Ve a Configuración > Variables de entorno > Editar > Agregar variable de entorno.
  2. Ingresa las siguientes variables de entorno y reemplázalas por tus valores:

    Clave Valor de ejemplo
    SLACK_AUDIT_TOKEN xoxp-... (token de usuario a nivel de la organización con auditlogs:read)
    S3_BUCKET slack-audit-logs
    S3_PREFIX slack/audit/
    STATE_KEY slack/audit/state.json
    LIMIT 200
    MAX_PAGES 20
    LOOKBACK_SECONDS 3600
    HTTP_TIMEOUT 60
    HTTP_RETRIES 3
    RETRY_AFTER_DEFAULT 2
    ACTIONS (opcional, filtro de acción separado por comas)
  3. Haz clic en Guardar.

  4. Selecciona la pestaña Configuración. En el panel Configuración general, haz clic en Editar.

  5. Cambia Tiempo de espera a 5 minutes (300 segundos) y haz clic en Guardar.

Crea una programación de EventBridge

  1. Ve a Amazon EventBridge > Scheduler > Create schedule.
  2. Proporciona los siguientes detalles de configuración:
    • Nombre: Ingresa slack-audit-1h.
    • Recurring schedule: Selecciona Rate-based schedule.
    • Expresión de la tarifa: Ingresa 1 hours.
    • Ventana de tiempo flexible: Selecciona Desactivado.
  3. Haz clic en Siguiente.
  4. Selecciona el objetivo:
    • API de destino: Selecciona AWS Lambda Invoke.
    • Función Lambda: Selecciona slack_audit_to_s3.
  5. Haz clic en Siguiente.
  6. Haz clic en Siguiente (omite la configuración opcional).
  7. Revisa la programación y haz clic en Crear programación.

Opcional: Crea un usuario de IAM con acceso de solo lectura para Google SecOps

  1. Ve a Consola de AWS > IAM > Usuarios > Crear usuario.
  2. Proporciona los siguientes detalles de configuración:
    • Nombre de usuario: Ingresa secops-reader.
    • Tipo de acceso: Selecciona Acceso programático.
  3. Haz clic en Siguiente.
  4. Selecciona Adjuntar políticas directamente.
  5. Haz clic en Crear política. En la pestaña JSON, ingresa lo siguiente:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["s3:GetObject"],
          "Resource": "arn:aws:s3:::slack-audit-logs/*"
        },
        {
          "Effect": "Allow",
          "Action": ["s3:ListBucket"],
          "Resource": "arn:aws:s3:::slack-audit-logs"
        }
      ]
    }
    
  6. Haz clic en Siguiente.

  7. Ingresa el nombre de la política secops-reader-policy.

  8. Haz clic en Crear política.

  9. Vuelve a la página de creación de usuarios, actualiza la lista de políticas y selecciona secops-reader-policy.

  10. Haz clic en Siguiente.

  11. Haz clic en Crear usuario.

  12. Selecciona el usuario creado secops-reader.

  13. Ve a Credenciales de seguridad > Claves de acceso > Crear clave de acceso.

  14. Selecciona Servicio de terceros.

  15. Haz clic en Siguiente.

  16. Haz clic en Crear clave de acceso.

  17. Haz clic en Descargar archivo .csv para guardar las credenciales.

Configura un feed en Google SecOps para transferir registros de auditoría de Slack

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. Haz clic en Configura un feed único.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Slack Audit Logs).
  5. Selecciona Amazon S3 V2 como el Tipo de fuente.
  6. Selecciona Auditoría de Slack como el Tipo de registro.
  7. Haz clic en Siguiente.

    Especifica valores para los siguientes parámetros de entrada:

    • URI de S3: Ingresa el URI del bucket de S3 con la ruta de acceso del prefijo:

      s3://slack-audit-logs/slack/audit/
      

      Reemplaza slack-audit-logs por el nombre real de tu bucket de S3.

    • Opción de eliminación del código fuente: Selecciona la opción de eliminación según tu preferencia.

    • Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días especificada. El valor predeterminado es de 180 días.

    • ID de clave de acceso: Clave de acceso del usuario con acceso al bucket de S3 (del usuario de IAM secops-reader).

    • Clave de acceso secreta: Clave secreta del usuario con acceso al bucket de S3 (del usuario de IAM secops-reader).

    • Espacio de nombres del recurso: Es el espacio de nombres del recurso.

    • Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.

  8. Haz clic en Siguiente.

  9. Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
action metadata.product_event_type Se asigna directamente desde el campo action
actor.type principal.labels Se asigna directamente con la clave actor.type
actor.user.email principal.user.email_addresses Asignado directamente
actor.user.id principal.user.product_object_id Asignado directamente
actor.user.id principal.user.userid Asignado directamente
actor.user.name principal.user.user_display_name Asignado directamente
actor.user.team principal.user.group_identifiers Asignado directamente
context.ip_address principal.ip Asignado directamente
context.location.domain about.resource.attribute.labels Se asigna directamente con la clave context.location.domain
context.location.id about.resource.id Asignado directamente
context.location.name about.resource.name Asignado directamente
context.location.name about.resource.attribute.labels Se asigna directamente con la clave context.location.name
context.location.type about.resource.resource_subtype Asignado directamente
context.session_id network.session_id Asignado directamente
context.ua network.http.user_agent Asignado directamente
context.ua network.http.parsed_user_agent Usuario-agente analizado derivado del campo context.ua
country principal.location.country_or_region Asignado directamente
date_create metadata.event_timestamp.seconds Marca de tiempo de época convertida en objeto de marca de tiempo
details.inviter.email target.user.email_addresses Asignado directamente
details.inviter.id target.user.product_object_id Asignado directamente
details.inviter.name target.user.user_display_name Asignado directamente
details.inviter.team target.user.group_identifiers Asignado directamente
details.reason security_result.description Se asigna directamente; si es un array, se concatena con comas.
details.type about.resource.attribute.labels Se asigna directamente con la clave details.type
details.type security_result.summary Asignado directamente
entity.app.id target.resource.id Asignado directamente
entity.app.name target.resource.name Asignado directamente
entity.channel.id target.resource.id Asignado directamente
entity.channel.name target.resource.name Asignado directamente
entity.channel.privacy target.resource.attribute.labels Se asigna directamente con la clave entity.channel.privacy
entity.file.filetype target.resource.attribute.labels Se asigna directamente con la clave entity.file.filetype
entity.file.id target.resource.id Asignado directamente
entity.file.name target.resource.name Asignado directamente
entity.file.title target.resource.attribute.labels Se asigna directamente con la clave entity.file.title
entity.huddle.date_end about.resource.attribute.labels Se asigna directamente con la clave entity.huddle.date_end
entity.huddle.date_start about.resource.attribute.labels Se asigna directamente con la clave entity.huddle.date_start
entity.huddle.id about.resource.attribute.labels Se asigna directamente con la clave entity.huddle.id
entity.huddle.participants.0 about.resource.attribute.labels Se asigna directamente con la clave entity.huddle.participants.0
entity.huddle.participants.1 about.resource.attribute.labels Se asigna directamente con la clave entity.huddle.participants.1
entity.type target.resource.resource_subtype Asignado directamente
entity.user.email target.user.email_addresses Asignado directamente
entity.user.id target.user.product_object_id Asignado directamente
entity.user.name target.user.user_display_name Asignado directamente
entity.user.team target.user.group_identifiers Asignado directamente
entity.workflow.id target.resource.id Asignado directamente
entity.workflow.name target.resource.name Asignado directamente
id metadata.product_log_id Asignado directamente
ip principal.ip Asignado directamente
user_agent network.http.user_agent Asignado directamente
user_id principal.user.product_object_id Asignado directamente
username principal.user.product_object_id Asignado directamente
metadata.event_type El valor predeterminado es USER_COMMUNICATION. Se establece en USER_CREATION si la acción es user_created, USER_LOGIN si la acción es user_login o user_login_failed, USER_LOGOUT si la acción es user_logout, USER_RESOURCE_ACCESS si la acción coincide con file_, USER_RESOURCE_UPDATE_PERMISSIONS si la acción coincide con app_, private_, public_ o auth_policy_, USER_CHANGE_PERMISSIONS si la acción coincide con pref, legal_hold_, workflow_, channel_, user_deactivated, user_reactivated, role_change_ o user_channel_.
metadata.log_type Codificado como SLACK_AUDIT
metadata.product_name Se establece en Enterprise Grid si existe date_create; de lo contrario, se establece en Audit Logs si existe user_id.
metadata.vendor_name Codificado como Slack
extensions.auth.mechanism Codificado como REMOTE
extensions.auth.type Se establece en SSO si la acción contiene user_login o user_logout; de lo contrario, se establece en MACHINE.
security_result.action El valor predeterminado es ALLOW; se establece en BLOCK si la acción es user_login_failed.
target.application Se establece en Slack si existe date_create; de lo contrario, se establece en SLACK si existe user_id.
details.url_private target.url Se asignó desde el registro de cambios
details.previous_ip_address principal.labels Se asignó desde el registro de cambios
details.previous_ua principal.labels Se asignó desde el registro de cambios

Registro de cambios

Consulta el registro de cambios de este analizador

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.