Azure Native Qumulo ahora disponible en la UE, el Reino Unido y Canadá: Más información

Registro de auditoría de Qumulo: Obteniendo información sobre el uso del clúster por parte del hombre y la máquina

Escrito por:

Para proporcionar más visibilidad sobre la forma en que se usan y administran los clústeres de Qumulo, recientemente presentamos un registro de auditoría. Todo lo que necesita para usarlo es un servidor que ejecute un syslog remoto, que muchas plataformas de monitoreo y alerta tienen listo para usar. Una vez apuntado a un servidor de registro, cada nodo envía registros de todo lo que sucede, como quién hizo qué y si funcionó o no. Cuando los usuarios interactúan con el clúster directamente, como a través de la API, el registro simplemente informa cada acción del usuario.

Las consultas a la mayoría de los puntos finales API escribirán entradas simples y simples en el registro de auditoría. Por ejemplo, si usara nuestra CLI para ejecutar qq restart_cluster, el registro de auditoría mostraría esto:

[box]2019-11-08T15:31:40 Blog-1 qumulo ::1,”Colin”,api,cluster_restart,ok,,””,””[/box]

Analicemos eso.

[box]2019-11-08T15:31:40 Blog-1 qumulo[/box]

Los primeros tres campos son el encabezado syslog estándar. Incluyen el momento en que se completó la operación, el nombre del nodo que realizó la operación (Blog-1) y "qumulo". El formato de estos puede ser cambiado fácilmente por el programa que recibe sus registros, para hacer que todo el registro de auditoría sea CSV, por ejemplo. Se quedarán fuera de aquí en adelante.

[caja]::1,”Colin”[/caja]

Luego viene el usuario que realizó la operación. "Colin" es mi nombre de usuario local, y ":: 1" es mi IP. Es la versión IPv6 de localhost, porque estoy usando un "simcluster" para las pruebas. Más sobre eso aquí:

[cuadro]api,cluster_restart,ok,,””,””[/cuadro]

La última es la operación que se ejecutó. Las herramientas de Qumulo CLI se basan en la API, por lo que esta operación está etiquetada con "api". Otras operaciones podrían tener "smb2" o "nfs3" en ese lugar. "Cluster_restart" es el comando que ejecuté. Si la operación hubiera fallado, "ok" en su lugar mostraría el error como "api_permission_denied_error". El resto son campos en blanco utilizados por operaciones que necesitan más detalles.

Ejemplos de sistema de archivos

La misma acción del sistema de archivos sobre cualquier protocolo debería verse casi idéntica en el registro de auditoría. Por ejemplo, este es el registro de mí creando un archivo sobre NFS y otro sobre SMB:

… "1001",nfs3,fs_create_file,ok,3,"/nfs_file",""
… "1001",nfs3,fs_write_metadata,ok,3,"/nfs_file",""
… "Colin",smb2,fs_create_file,ok,4,"/smb_file",""
… "Colin",smb2,fs_write_metadata,ok,4,"/smb_file",""

Las únicas diferencias son el archivo, el protocolo y el usuario, que muestra 1001 porque a través de NFS las únicas identidades de usuario son UID. Ambas veces escribe metadatos por separado. La ventaja de este enfoque es que buscar en el registro no requiere conocer el protocolo de la operación que está buscando. Para encontrar las eliminaciones, simplemente busque "eliminar", no necesita saber que SMB lo llama "desvincular".

Buceando en

Hasta aquí todo bien. Si vuelvo a montar la exportación NFS "/", ¿qué operaciones se registrarán?

… "0",nfs3,nfs_mount,ok,,"",""
… "0",nfs3,fs_read_metadata,ok,2,"/",""
… "1001",nfs3,fs_read_metadata,ok,2,"/",""
… "1001",nfs3,fs_read_metadata,fs_no_such_entry_error,,"/.Trash",""
… "1001",nfs3,fs_read_metadata,fs_no_such_entry_error,,"/.Trash-1001",""

¡Eso es sorprendente! Solo monté la exportación, no toqué ninguno de esos otros archivos. Tiene algún sentido que el sistema operativo quiera verificar los permisos en el directorio que acabamos de montar, y en la segunda y tercera líneas lo hacemos primero como root (UID 0), luego con mi UID, 1001. El 2, ”/” Al final de la línea significa que miramos el directorio raíz, que tiene el ID de archivo 2. Las dos últimas líneas son más sorprendentes, pero resulta que son una comprobación de un tipo de papelera recuperable Unix-y, uno para todos y uno para mi UID específicamente. https://specifications.freedesktop.org/trash-spec/trashspec-1.0.html

Hay todo tipo de peculiaridades como esta que revela el registro de auditoría. Aquí hay un montaje SMB del recurso compartido predeterminado "Archivos" de macOS 10.

… "Colin", smb2, smb_login, ok ,, "", ""… "Colin", smb2, share_connect, ok, 2, "\\ Blog-1 \ ​​FILES", ""… "Colin", smb2, fs_fsstat , ok, 2, "/", "" ... "Colin", smb2, fs_read_metadata, ok, 2, "/", "" ... "Colin", smb2, fs_list_directory, ok, 2, "/", "" ... "Colin", smb2, share_connect, ok, 0, "\\ Blog-1 \ ​​IPC $", ""… "Colin", smb2, fs_open, fs_no_such_entry_error ,, "/. Hidden", ""

Bien, iniciamos sesión, nos conectamos al recurso compartido, observamos su uso del espacio (fsstat), luego verificamos los permisos y el contenido del directorio, está bien. Pero luego trata de montar una participación que ni siquiera tengo, "IPC $".

¡Y tiene éxito! Encontré algunos documentación, pero tuve que revisar las notas de la versión anterior para descubrir que se trata de un recurso compartido oculto especial para que los programas se comuniquen a través de canalizaciones con nombre. Por último, no puede abrir el archivo "/.hidden", aparentemente "una de las tres formas en que un archivo puede hacerse invisible en OS X. Este archivo es semi-obsoleto". (Fuente: http://www.westwind.com/reference/OS-X/invisibles.html)

Deduplicación

En realidad, hay incluso más de estas extrañas operaciones de las que muestra el registro de auditoría. Por ejemplo, si creo dos directorios usando mkdir en el recurso compartido SMB ...

… "Colin",smb2,fs_read_metadata,ok,2,"/",""
… "Colin",smb2,fs_list_directory,ok,2,"/",""
… "Colin",smb2,fs_create_directory,ok,5,"/dir1/",""
… "Colin",smb2,fs_open,fs_no_such_entry_error,,"/",""
… "Colin",smb2,fs_create_directory,ok,6,"/dir2/",""

Cuando hago el primer directorio, parece que el sistema operativo verifica proactivamente que no estamos sobrescribiendo nada, pero no parece hacer eso para el segundo directorio. De hecho, el registro de auditoría desduplica operaciones idénticas del sistema de archivos en un minuto, por lo que todavía están sucediendo, simplemente no las estamos viendo. Esto tiene el mayor beneficio al leer y escribir archivos grandes, que generalmente se leen y escriben en fragmentos de aproximadamente un megabyte. Esto no solo hace que el registro sea significativamente más pequeño para el almacenamiento, sino que también libera el ancho de banda de la red para cosas más importantes.

Todos estos son ejemplos simples; Intenté auditar el proceso de abrir un proyecto en mi IDE y da como resultado páginas de lectura fallida y acciones abiertas en archivos de configuración de los que nunca he oído hablar. Para el usuario final, esto es rápido y simplemente funciona. Pero el clúster de Qumulo no puede determinar cuál es la acción subyacente que el usuario está intentando realizar, por lo que todo termina en el registro de auditoría. Y esa es la razón por la que el registro de auditoría es tan ruidoso: registra lo que hace la computadora, no el usuario.

Te dejaré con un misterio final. La penúltima línea en el último ejemplo:

[cuadro]… “Colin”,smb2,fs_open,fs_no_such_entry_error,,”/”,””[/cuadro]

No puede abrir el directorio que acabamos de agregar, así que supongo que debe estar abriéndolo como un archivo o enlace simbólico o algo así. ¿Pero por qué? ¿No es obviamente todavía un directorio?

A menos que alguien quiera pasar por capas de código OS X, el mundo nunca lo sabrá.

Artículos Relacionados

Ir al Inicio