La app Miro para Splunk habilita el acceso a los registros de auditoría de Miro desde Splunk, facilitando la supervisión centralizada, las alertas oportunas y las sólidas capacidades de visualización de datos. Al aprovechar esta configuración, obtienes una visión global y más profunda de los registros de auditoría de Miro, incluida la información sobre la actividad de los usuarios y los eventos de seguridad, lo que ayuda a agilizar los procesos de supervisión y análisis. Esto no sólo simplifica la gestión de los registros, sino que también mejora el proceso de toma de decisiones con información más fundamentada basada en datos.
Disponible para: plan Enterprise
Configurado por: admins de empresa
Configuración de Miro
Generar token de acceso
1. En tu página de configuración de Miro Empresa, ve a Apps e integraciones > Integraciones de empresa.
Habilitar SIEM en la consola de admins de la empresa
2. Haz clic para activar el conmutador SIEM.
Cuando habilites el botón de alternar, puedes copiar el token de acceso o generar uno nuevo.
⚠️ La integración está vinculada al equipo con el mayor número de usuarios. Aquí no es posible elegir un equipo diferente, pero ten en cuenta que la integración funciona para todos los equipos de tu plan Enterprise y que los eventos relevantes para la integración se muestran para todo el plan en tus registros de auditoría.
Si otro admin habilitó el conmutador, no podrás copiar el token de acceso. Sin embargo, aún puedes desactivar la integración.
Figura 3: Mensaje que aparece si el conmutador ya está habilitado
Configuración de Splunk
Instalar la aplicación de Miro
1. Desde tu panel de Splunk, ve a Gestionar apps haciendo clic en el icono de configuración/gestionar apps (Figura 4).
Figura 4: Icono de Ajustes/Gestión de apps
2. En la página Apps, haz clic en Examinar más apps.
Figura 5: Botón Buscar más aplicaciones/span>/em>
3. Busca Miro App para Splunk, y luego procede a la instalación haciendo clic en Instalar.
Figura 6: Instalar la aplicación de Miro para Splunk/span>/em>
4. Introduce tus credenciales, haz clic en la casilla de verificación para aceptar los Términos y Condiciones y, a continuación, haz clic en Iniciar sesión e instalar.
Figura 7: Iniciar sesión e instalar
5. Una vez instalada la app, es posible que tengas que reiniciar Splunk. Haz clic en Reiniciar ahora.
Configurar la aplicación de Miro
Una vez instalada la app Miro, podrás verla en el panel de control de Splunk. Para configurar la app, haz clic en Miro App para Splunk (Figura 8).
Figura 8: Aplicación de Miro para Splunk
Ve a Configuración > Registro > Nivel de registro y establece el nivel de registro en INFO (Figura 9).
Figura 2: Nivel de registro/span> /em>
A partir de la versión 3.0.0, también puedes configurar un proxy para la app Miro Splunk accediendo a Configuración > Proxy.
Figura 10: Configurar un proxy
Crea una nueva Entrada para tu conector navegando hasta la pestaña Entradas y haciendo clic en Crear nueva entrada.
Crear nueva entrada
Introduce un Nombre representativo para tu nueva Entrada, define el Intervalo en el que quieres que Splunk obtenga datos de Miro (recomendamos cada 60 segundos), añade el Token de acceso que copiaste de la app Miro y, a continuación, haz clic en Añadir:
Figura 11: Añadir registros de auditoría de Miro
Asegúrate de que la Entrada está Habilitada. A partir de este momento Splunk empieza a recibir registros de auditoría de Miro.
Figura 12: Consultar el estado/span>/em>
Cómo usar la función de búsqueda
Si estás interesado en los eventos que se envían a Splunk o quieres verificar los registros, puedes ir a la pestaña Search (Buscar):
- Para los eventos de registros de auditoría, puedes filtrar por source="miro_audit_logs" y verás una lista de los registros de auditoría que se obtuvieron de Miro en el intervalo de tiempo especificado:
time_slot.jpg
Figura 13: Miro Registros de auditoría en Splunk - Para Logs, puedes filtrar por index="_internal" sourcetype="miroappforsplunk:log" y verás la lista de logs en la franja horaria especificada para la app Miro:
filter_logs.jpg
Figura 14: Registros de Miro en Splunk
Visualización de datos
La app Miro Splunk puede enriquecerse con dos visualizaciones de datos predefinidas que muestran una visión general de tus datos. Puedes crear paneles pegando el código XML que se proporciona a continuación para las visualizaciones en tu propia configuración de Splunk, siguiendo estos pasos:
- Haz clic en la sección Visualiza tus datos de la página principal de Splunk Admin.
Figura 15: Visualiza tus datos
-
Haz clic en Crear nuevo panel y rellena los datos como creas conveniente.
Figura 16: Crear nuevo panel
Figura 17: Crear nuevo panel
-
En la nueva vista del panel, haz clic en Fuente y pega el código XML.
Haz clic para ver el código XML de las visualizaciones de las Actividades de los usuarios.<tema del panel="light" version="1.1">
<label>Actividad del usuario Miro</label>
<descripción>Resumen de los eventos de usuario en tu cuenta de Miro.</descripción>
<búsqueda id="basesearch">
<query>source=miro_audit_logs | fields * | eval context.team.name = if(isnull('context.team'), 'context.team.name', "None") | search context.organization.name = "$form.organization$" context.team.name = "$form.team$"</query>
<principio>$time.earliest$</principio>
<latest>$time.latest$</latest>
Buscar
<fieldset submitButton="false">
<input type="hora" token="hora">
<label>Rango temporal</label>
Predeterminada
<antiguo>-30d@d</antiguo>
<latest>ahora</latest>
Predeterminada
Input
<input type="desplegable" token="organización">
<label>Organización</label>
<fieldForLabel>contexto.organización.nombre</fieldForLabel>
<fieldForValue>contexto.organización.nombre</fieldForValue>
<búsqueda base="basesearch">
<consulta>| tabla contexto.organización.nombre | dedup contexto.organización.nombre</consulta>
Buscar
<opción value="*">Todos</opción>
<por defecto>*</por defecto>
<initialValue>*</initialValue>
Input
<input type="desplegable" token="equipo">
<label>Equipo</label>
<opción value="*">Todos</opción>
<por defecto>*</por defecto>
<initialValue>*</initialValue>
<fieldForLabel>contexto.equipo.nombre</fieldForLabel>
<fieldForValue>contexto.equipo.nombre</fieldForValue>
<búsqueda base="basesearch">
<consulta>| tabla contexto.nombre.equipo | dedup contexto.nombre.equipo</consulta>
Buscar
Input
</fieldset>
<fila>
<panel>
<simple>
<title>Total de eventos</title>
<búsqueda base="basesearch">
<consulta>| estadísticas recuento</consulta>
Buscar
<opción name="desglose">ninguno</opción>
</single>
</panel>
</row>
<fila>
<panel>
gráfico
<title>Eventos por fecha</title>
<búsqueda base="basesearch">
<consulta>| tabla de tiempo count as Eventos</consulta>
Buscar
<opción name="charting.axisTitleX.visibility">colapsado</opción>
<opción name="charting.axisTitleY.visibility">visible</opción>
<opción name="charting.axisY2.habilitado">0</opción>
<opción name="charting.chart">área</opción>
<opción name="charting.chart.nullValueMode">gaps</opción>
<opción name="charting.chart.stackMode">apilado</opción>
<opción name="charting.drilldown">ninguna</opción>
<opción name="charting.layout.splitSeries">0</opción>
<opción name="modo.leyenda.gráfico">estándar</opción>
<opción name="charting.legend.placement">ninguna</opción>
<opción name="actualizar.pantalla">barra de progreso</opción>
gráfico
</panel>
<panel>
gráfico
<title>Eventos por equipos</title>
<búsqueda base="basesearch">
<consulta>| renombrar context.team.name como Equipo | recuento de estadísticas como "Eventos" por Equipo | ordenar - "Eventos"</consulta>
Buscar
<opción name="charting.chart">pie</opción>
<opción name="charting.chart.sliceCollapsingThreshold">0,03</opción>
<opción name="charting.drilldown">todos</opción>
<opción name="actualizar.pantalla">barra de progreso</opción>
<desglose>
<set token="formulario.equipo">$clic.valor$</set>
</desglose>
gráfico
</panel>
</row>
<fila>
<panel>
<simple>
<title>Eventos del tablero</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = tablero_* | estadísticas recuento</consulta>
Buscar
<opción name="desglose">ninguno</opción>
</single>
</panel>
<panel>
<simple>
<title>Tableros creados</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = tablero_creado | estadísticas recuento</consulta>
Buscar
<opción name="desglose">ninguno</opción>
</single>
</panel>
<panel>
<simple>
<title>Tableros abiertos</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = tablero_abierto | estadísticas recuento</consulta>
Buscar
<opción name="desglose">ninguno</opción>
</single>
</panel>
</row>
<fila>
<panel>
gráfico
<title>Tableros abiertos o creados</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = tablero_creado OR evento = tablero_abierto | timechart count as "Tableros creados" by evento</consulta>
Buscar
<opción name="charting.axisTitleX.visibility">colapsado</opción>
<opción name="charting.axisTitleY.visibility">visible</opción>
<opción name="charting.chart">columna</opción>
<opción name="charting.chart.stackMode">apilado</opción>
<opción name="charting.drilldown">ninguna</opción>
<opción name="charting.layout.splitSeries">0</opción>
<opción name="charting.legend.placement">derecha</opción>
<opción name="actualizar.pantalla">barra de progreso</opción>
gráfico
</panel>
</row>
panel
Haz clic para ver el código XML de las visualizaciones de Actividades de Seguridad.<tema del panel="light" version="1.1">
<label>Actividad de Seguridad de Miro</label>
<descripción>Resumen de los eventos de seguridad en tu cuenta de Miro.</descripción>
<búsqueda id="basesearch">
<query>source=miro_audit_logs | fields * | search context.organization.name = "$form.organization$"</query>
<principio>$time.earliest$</principio>
<latest>$time.latest$</latest>
Buscar
<fieldset submitButton="false">
<input type="hora" token="hora">
<label>Rango temporal</label>
Predeterminada
<antiguo>-30d@d</antiguo>
<latest>ahora</latest>
Predeterminada
Input
<input type="desplegable" token="organización">
<label>Organización</label>
<fieldForLabel>contexto.organización.nombre</fieldForLabel>
<fieldForValue>contexto.organización.nombre</fieldForValue>
<búsqueda base="basesearch">
<consulta>| tabla contexto.organización.nombre | dedup contexto.organización.nombre</consulta>
Buscar
<opción value="*">Todos</opción>
<por defecto>*</por defecto>
<initialValue>*</initialValue>
Input
<input type="desplegable" token="equipo">
<label>Equipo</label>
<opción value="*">Todos</opción>
<por defecto>*</por defecto>
<initialValue>*</initialValue>
<fieldForLabel>contexto.equipo.nombre</fieldForLabel>
<fieldForValue>contexto.equipo.nombre</fieldForValue>
<búsqueda base="basesearch">
<consulta>| tabla contexto.nombre.equipo | dedup contexto.nombre.equipo</consulta>
Buscar
Input
</fieldset>
<fila>
<panel>
<simple>
<title>Inicios de sesión correctos</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = fichar_superado | estadísticas recuento</consulta>
Buscar
<opción name="desglose">ninguno</opción>
</single>
</panel>
<panel>
<simple>
<title>Inicios de sesión fallidos</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = registro_in_fallido | estadísticas recuento</consulta>
Buscar
<opción name="desglose">ninguno</opción>
</single>
</panel>
</row>
<fila>
<panel>
gráfico
<title>Inicios de sesión por método de autenticación</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = fichar_en_* | timechart count as Eventos by detalles.authTipo</consulta>
Buscar
<opción name="charting.axisTitleX.visibility">colapsado</opción>
<opción name="charting.axisTitleY.visibility">visible</opción>
<opción name="charting.axisY2.habilitado">0</opción>
<opción name="charting.chart">columna</opción>
<opción name="charting.chart.nullValueMode">gaps</opción>
<opción name="charting.chart.stackMode">apilado</opción>
<opción name="charting.drilldown">ninguna</opción>
<opción name="charting.layout.splitSeries">0</opción>
<opción name="modo.leyenda.gráfico">estándar</opción>
<opción name="charting.legend.placement">derecha</opción>
<opción name="actualizar.pantalla">barra de progreso</opción>
gráfico
</panel>
</row>
<fila>
<panel>
tabla
<title>Compartir eventos</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = *enlace_público* O evento = *compartir* | renombrar context.team.name como Equipo createdBy.name como Usuario object.name como Tablero details.role como Detalles event como Evento | tabla id _time Evento Equipo Usuario Tablero Details</consulta>
Buscar
<opción name="count">10</opción>
<opción name="desglose">celda</opción>
<opción name="actualizar.pantalla">barra de progreso</opción>
tabla
</panel>
</row>
<fila>
<panel>
tabla
<title>Eventos de archivo</title>
<búsqueda base="basesearch">
<consulta>| busca evento = tablero_exportado O evento = archivo_* | renombra contexto.equipo.nombre como Equipo creadoPor.nombre como Usuario objeto.nombre como Tablero detalles.tipo como Tipo detalles.objeto como Objeto evento como Evento | tabla id _time Evento Equipo Usuario Tablero Tipo Objeto</consulta>
Buscar
<opción name="count">10</opción>
<opción name="desglose">celda</opción>
<opción name="actualizar.pantalla">barra de progreso</opción>
tabla
</panel>
</row>
panel
Figura 18: Editar panel de control
Actividades de los usuarios
La primera visualización es Actividad del usuario, donde puedes encontrar una visión general de los eventos de tu usuario en Miro. Estos son:
- El número de eventos a lo largo del tiempo, por equipos y en total.
- Eventos del tablero: tableros creados, tableros abiertos y total.
user_activity.jpg
Figura 19: Actividad de los usuarios
<tema del panel="light" version="1.1">
<label>Actividad del usuario Miro</label>
<descripción>Resumen de los eventos de usuario en tu cuenta de Miro.</descripción>
<búsqueda id="basesearch">
<query>source=miro_audit_logs | fields * | eval context.team.name = if(isnull('context.team'), 'context.team.name', "None") | search context.organization.name = "$form.organization$" context.team.name = "$form.team$"</query>
<principio>$time.earliest$</principio>
<latest>$time.latest$</latest>
Buscar
<fieldset submitButton="false">
<input type="hora" token="hora">
<label>Rango temporal</label>
Predeterminada
<antiguo>-30d@d</antiguo>
<latest>ahora</latest>
Predeterminada
Input
<input type="desplegable" token="organización">
<label>Organización</label>
<fieldForLabel>contexto.organización.nombre</fieldForLabel>
<fieldForValue>contexto.organización.nombre</fieldForValue>
<búsqueda base="basesearch">
<consulta>| tabla contexto.organización.nombre | dedup contexto.organización.nombre</consulta>
Buscar
<opción value="*">Todos</opción>
<por defecto>*</por defecto>
<initialValue>*</initialValue>
Input
<input type="desplegable" token="equipo">
<label>Equipo</label>
<opción value="*">Todos</opción>
<por defecto>*</por defecto>
<initialValue>*</initialValue>
<fieldForLabel>contexto.equipo.nombre</fieldForLabel>
<fieldForValue>contexto.equipo.nombre</fieldForValue>
<búsqueda base="basesearch">
<consulta>| tabla contexto.nombre.equipo | dedup contexto.nombre.equipo</consulta>
Buscar
Input
</fieldset>
<fila>
<panel>
<simple>
<title>Total de eventos</title>
<búsqueda base="basesearch">
<consulta>| estadísticas recuento</consulta>
Buscar
<opción name="desglose">ninguno</opción>
</single>
</panel>
</row>
<fila>
<panel>
gráfico
<title>Eventos por fecha</title>
<búsqueda base="basesearch">
<consulta>| tabla de tiempo count as Eventos</consulta>
Buscar
<opción name="charting.axisTitleX.visibility">colapsado</opción>
<opción name="charting.axisTitleY.visibility">visible</opción>
<opción name="charting.axisY2.habilitado">0</opción>
<opción name="charting.chart">área</opción>
<opción name="charting.chart.nullValueMode">gaps</opción>
<opción name="charting.chart.stackMode">apilado</opción>
<opción name="charting.drilldown">ninguna</opción>
<opción name="charting.layout.splitSeries">0</opción>
<opción name="modo.leyenda.gráfico">estándar</opción>
<opción name="charting.legend.placement">ninguna</opción>
<opción name="actualizar.pantalla">barra de progreso</opción>
gráfico
</panel>
<panel>
gráfico
<title>Eventos por equipos</title>
<búsqueda base="basesearch">
<consulta>| renombrar context.team.name como Equipo | recuento de estadísticas como "Eventos" por Equipo | ordenar - "Eventos"</consulta>
Buscar
<opción name="charting.chart">pie</opción>
<opción name="charting.chart.sliceCollapsingThreshold">0,03</opción>
<opción name="charting.drilldown">todos</opción>
<opción name="actualizar.pantalla">barra de progreso</opción>
<desglose>
<set token="formulario.equipo">$clic.valor$</set>
</desglose>
gráfico
</panel>
</row>
<fila>
<panel>
<simple>
<title>Eventos del tablero</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = tablero_* | estadísticas recuento</consulta>
Buscar
<opción name="desglose">ninguno</opción>
</single>
</panel>
<panel>
<simple>
<title>Tableros creados</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = tablero_creado | estadísticas recuento</consulta>
Buscar
<opción name="desglose">ninguno</opción>
</single>
</panel>
<panel>
<simple>
<title>Tableros abiertos</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = tablero_abierto | estadísticas recuento</consulta>
Buscar
<opción name="desglose">ninguno</opción>
</single>
</panel>
</row>
<fila>
<panel>
gráfico
<title>Tableros abiertos o creados</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = tablero_creado OR evento = tablero_abierto | timechart count as "Tableros creados" by evento</consulta>
Buscar
<opción name="charting.axisTitleX.visibility">colapsado</opción>
<opción name="charting.axisTitleY.visibility">visible</opción>
<opción name="charting.chart">columna</opción>
<opción name="charting.chart.stackMode">apilado</opción>
<opción name="charting.drilldown">ninguna</opción>
<opción name="charting.layout.splitSeries">0</opción>
<opción name="charting.legend.placement">derecha</opción>
<opción name="actualizar.pantalla">barra de progreso</opción>
gráfico
</panel>
</row>
panel
Actividad de Seguridad
La segunda visualización es Actividad de Seguridad, donde puedes encontrar una visión general de los eventos de tus usuarios en Miro. Estos son:
- Login activity (Actividad de inicio de sesión): la cantidad de inicios de sesión exitosos y fallidos.
-
Eventos compartidos: lista de eventos de usuarios al compartir tableros.
Figura 20: Actividad de seguridad
<tema del panel="light" version="1.1">
<label>Actividad de Seguridad de Miro</label>
<descripción>Resumen de los eventos de seguridad en tu cuenta de Miro.</descripción>
<búsqueda id="basesearch">
<query>source=miro_audit_logs | fields * | search context.organization.name = "$form.organization$"</query>
<principio>$time.earliest$</principio>
<latest>$time.latest$</latest>
Buscar
<fieldset submitButton="false">
<input type="hora" token="hora">
<label>Rango temporal</label>
Predeterminada
<antiguo>-30d@d</antiguo>
<latest>ahora</latest>
Predeterminada
Input
<input type="desplegable" token="organización">
<label>Organización</label>
<fieldForLabel>contexto.organización.nombre</fieldForLabel>
<fieldForValue>contexto.organización.nombre</fieldForValue>
<búsqueda base="basesearch">
<consulta>| tabla contexto.organización.nombre | dedup contexto.organización.nombre</consulta>
Buscar
<opción value="*">Todos</opción>
<por defecto>*</por defecto>
<initialValue>*</initialValue>
Input
<input type="desplegable" token="equipo">
<label>Equipo</label>
<opción value="*">Todos</opción>
<por defecto>*</por defecto>
<initialValue>*</initialValue>
<fieldForLabel>contexto.equipo.nombre</fieldForLabel>
<fieldForValue>contexto.equipo.nombre</fieldForValue>
<búsqueda base="basesearch">
<consulta>| tabla contexto.nombre.equipo | dedup contexto.nombre.equipo</consulta>
Buscar
Input
</fieldset>
<fila>
<panel>
<simple>
<title>Inicios de sesión correctos</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = fichar_superado | estadísticas recuento</consulta>
Buscar
<opción name="desglose">ninguno</opción>
</single>
</panel>
<panel>
<simple>
<title>Inicios de sesión fallidos</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = registro_in_fallido | estadísticas recuento</consulta>
Buscar
<opción name="desglose">ninguno</opción>
</single>
</panel>
</row>
<fila>
<panel>
gráfico
<title>Inicios de sesión por método de autenticación</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = fichar_en_* | timechart count as Eventos by detalles.authTipo</consulta>
Buscar
<opción name="charting.axisTitleX.visibility">colapsado</opción>
<opción name="charting.axisTitleY.visibility">visible</opción>
<opción name="charting.axisY2.habilitado">0</opción>
<opción name="charting.chart">columna</opción>
<opción name="charting.chart.nullValueMode">gaps</opción>
<opción name="charting.chart.stackMode">apilado</opción>
<opción name="charting.drilldown">ninguna</opción>
<opción name="charting.layout.splitSeries">0</opción>
<opción name="modo.leyenda.gráfico">estándar</opción>
<opción name="charting.legend.placement">derecha</opción>
<opción name="actualizar.pantalla">barra de progreso</opción>
gráfico
</panel>
</row>
<fila>
<panel>
tabla
<title>Compartir eventos</title>
<búsqueda base="basesearch">
<consulta>| buscar evento = *enlace_público* O evento = *compartir* | renombrar context.team.name como Equipo createdBy.name como Usuario object.name como Tablero details.role como Detalles event como Evento | tabla id _time Evento Equipo Usuario Tablero Details</consulta>
Buscar
<opción name="count">10</opción>
<opción name="desglose">celda</opción>
<opción name="actualizar.pantalla">barra de progreso</opción>
tabla
</panel>
</row>
<fila>
<panel>
tabla
<title>Eventos de archivo</title>
<búsqueda base="basesearch">
<consulta>| busca evento = tablero_exportado O evento = archivo_* | renombra contexto.equipo.nombre como Equipo creadoPor.nombre como Usuario objeto.nombre como Tablero detalles.tipo como Tipo detalles.objeto como Objeto evento como Evento | tabla id _time Evento Equipo Usuario Tablero Tipo Objeto</consulta>
Buscar
<opción name="count">10</opción>
<opción name="desglose">celda</opción>
<opción name="actualizar.pantalla">barra de progreso</opción>
tabla
</panel>
</row>
panel