Informe Técnico: Configuración de Monitorización VDO vía IdM/Sudo

Proyecto:

Infraestructura del Hipervisor Rocky Linux

Rol:

Ingeniero de Documentación Técnica

Fecha:

2026-02-16

Estado:

Verificado y Operativo

Objetivo Técnico

El objetivo principal de esta configuración fue resolver la denegación de permisos al ejecutar el comando vdostats dentro de un entorno de virtualización. El problema central residía en que el usuario de gestión de infraestructura, raul-ipa, carecía de privilegios para comunicarse con el controlador kernel device-mapper (/dev/mapper/control), resultando en fallos de comunicación con la libdevmapper.

Se requería una solución que permitiera a raul-ipa realizar tareas de monitorización sin necesidad de login como root ni la introducción manual de contraseñas, todo gestionado de forma centralizada a través de Identity Management (IdM).

Procedimiento

1. Registro de Comandos en IdM

Se procedió a dar de alta el binario de monitorización en la base de datos de comandos autorizados de FreeIPA:

ipa sudocmd-add /usr/bin/vdostats --desc="Allow monitoring VDO stats"

2. Creación de la Regla de Sudo Centralizada

Se configuró la regla virtual-admin-monitor-storage para definir el flujo de privilegios. Esta regla vincula al usuario de sistema con los privilegios de superusuario para el comando específico.

# Creación de la regla principal
ipa sudorule-add virtual-admin-monitor-storage --desc="Allow raul-ipa to monitor VDO status as root."

# Asociación del usuario ejecutor (identificado como External User en logs)
ipa sudorule-add-user virtual-admin-monitor-storage --users=raul-ipa

# Definición del contexto de ejecución (RunAs)
ipa sudorule-add-runasuser virtual-admin-monitor-storage --users=root

# Asociación del comando autorizado
ipa sudorule-add-allow-command virtual-admin-monitor-storage --sudocmds=/usr/bin/vdostats

3. Configuración de Acceso sin Contraseña (NOPASSWD)

Dado que IdM no utiliza el flag --nopasswd en la línea de comandos de modificación de reglas, se inyectó la opción de sudo pertinente:

ipa sudorule-add-option virtual-admin-monitor-storage --sudooption='!authenticate'

4. Ajuste del Entorno de Usuario y Prompt

Se modificó el archivo ~/.bashrc del usuario de red raul-ipa para corregir la función de acceso vwork(), eliminando la referencia incorrecta a “virt-storage” y estableciendo el entorno operativo real.

vwork() {
    sudo -u raul-ipa /usr/bin/bash -c "
        export LIBVIRT_DEFAULT_URI='qemu:///system'
        cd /var/lib/virt_storage/
        exec /usr/bin/bash --rcfile <(echo \"
            alias vdostats='sudo /usr/bin/vdostats'
            _ps_git() {
                local b=\\\$(git rev-parse --abbrev-ref HEAD 2>/dev/null);
                [ -n \\\"\\\$b\\\" ] && echo -e \\\" \033[0;33m(\\\$b)\033[0m\\\";
            }
            export PS1=\\\"\[\033[0;36m\]raul-ipa\[\033[0m\]\\\$( _ps_git) > \\\"
        \")
    "
}

Justificación

  • Gestión de Identidad: Se identificó que la infraestructura es gestionada por el usuario de sistema raul-ipa. Mantener este contexto es vital para la seguridad y auditoría del hipervisor.

  • !authenticate: Se utilizó esta opción de sudo para permitir que la monitorización sea fluida y automatizable, eliminando la fricción de entrada de credenciales en tareas de supervisión recurrente.

  • Encadenamiento de Alias: La inyección de alias vdostats='sudo /usr/bin/vdostats' permite al operario ejecutar la herramienta como si fuera un comando nativo del usuario, mientras que por detrás el sistema valida la regla de IdM.

  • Consistencia de Nomenclatura: Se corrigió el prompt de virt-storage a raul-ipa para que la documentación técnica, las reglas de IdM y el entorno de shell coincidan al 100%, evitando errores humanos durante incidentes.

Verificación

La configuración se validó satisfactoriamente tras recargar el entorno (reload-bash) y ejecutar el acceso al entorno de trabajo (vwork).

Resultado de la prueba de ejecución:

raul-ipa > vdostats --hu
Device                  Size      Used Available Use% Space saving%
infra_dev-vpool0-vpool  900.0G     29.7G    870.3G   3%           25%

La salida confirma que el usuario raul-ipa ha obtenido acceso exitoso al pool de virtualización de 900.0G, visualizando correctamente el ahorro de espacio del 25% sin solicitudes de contraseña adicionales.