Manejo de políticas de acceso con PolicyKit para la administración de Máquinas virtuales de forma remota

Etiquetas: Linux, Seguridad

Necesidad

Administración remota de máquinas virtuales a través de virt-manager (uso del demonio libvirtd).

Un poco de contexto

Para el desarrollo del presente documento fue a consecuencia de la problemática que tuve a la hora de administrar máquinas virtuales de forma remota a través de VNC. Como constantemente estoy realizando pruebas de diversa índole en relación con sistemas operativos y servicios Linux, consideré importante documentar dicha problemática. Esto por dos razones principales, una es para tener mi propia fuente de consulta para pruebas futuras, y dos, para poder desarrollar mi la habilidad de escritura y redacción.

Antes de entrar al grano, quiero comentar que, para mí, la escritura de estos documentos, deben contar con cierto contexto, es decir, el no pasar directamente a la solución de la problemática, sino entender que es lo que está pasando, donde buscar y como solucionarlo. Es por ello por lo que se trata de dar una breve descripción, detalle, interpretación y estructuración de los conceptos relacionados con cierta problemática.

Sin mayor preámbulo, a continuación, desarrollo la solución para la problemática que anteriormente comente.

¿Qué es PolicyKit?

Desde la página de inicio de polkit y de otras tantas, pudimos consultar la definición de PolicyKit, misma que puede sintetizarse de la siguiente forma:

“Polkit es un conjunto de herramientas a nivel de aplicación para definir y manejar la política que permite a los procesos sin privilegios hablar con los procesos privilegiados”,

Y que como bien remata:

en resumen, es un marco para centralizar el proceso de toma de decisiones con respecto al otorgamiento de acceso a operaciones privilegiadas para aplicaciones sin privilegios.”

¿Para qué sirve PolicyKit?

En pocas palabras, PolicyKit se utiliza para lo siguiente:

  • Controlar los privilegios sobre los procesos y aplicaciones de todo el sistema que conlleven privilegios elevados
  • Proporciona una forma organizada para que los procesos sin privilegios se comuniquen con los privilegiados
  • A diferencia de herramientas como sudo, no otorga permiso de root a un proceso completo, sino que permite establecer un nivel de control más granular a través de la definición de políticas sobre los procesos o aplicaciones
  • Contar con un control de acceso más flexible y preciso sobre aplicativos y procesos, que solo otorgar accesos mediante un grupo de Linux.
  • Las organizaciones con requisitos complejos pueden ayudarse con PolicyKit y así poder resolverlas, por ejemplo, para dar acceso a ciertos usuarios a ciertas horas del día (de 9 am a las 5 pm de lunes a viernes).

Las políticas definidas a través de PolicyKit, deben contar con lo siguiente:

  • Se definen en la ruta /etc/polkit-1/localauthority/50-local.d/,
  • Deben contar con un nombre único,
  • El nombre de la política, es decir, nombre del archivo, puede ser el FQDN, con la terminación .pkla

Problemática: Error proceso de autenticación con virt-manager (libvirtd)

En sistemas operativos Linux, con relación al demonio libvirtd (y otros), se cuenta dos acciones relacionadas a su comportamiento y administración a través de PolicyKit.  Una de estas acciones es org.libvirt.unix.manage , que permite un acceso completo a la administración de libvirtd y org.libvirt.unix.monitor,  tener control sobre acciones de lectura.

Un ejemplo de esto es cuando queremos realizar una administración remota de máquinas virtuales a través de VNC mediante un usuario determinado. Sin la definición de políticas que permitan la administración del servicio libvirtd, es probable que contemos con un error como el siguiente:

Solución

Para solventarlo, se tuvo que definir la siguiente política en /etc/polkit-1/localauthority/50-local.d/ como usuario root:

Como puede observarse, el nombre de la política es provider.example.org.pkla y su contenido permite la administración del servicio de libvirt. Lo que nos falta realizar es un reinicio del servicio:

Esto, como consecuencia tiene el siguiente efecto:

Consultas bibliográficas

  1. (abr. 27, 2018). PolicyKit. Consultado el 26 de noviembre del 2018. Recurso recuperado de https://es.wikipedia.org/wiki/PolicyKit
  2. (October 20th, 2018). Polkit. Consultado el 26 de noviembre del 2018. Recurso recuperado de https://wiki.archlinux.org/index.php/Polkit
  3. Navas, Esteban, (nov. 15 de 2012). Polkit: Modificar políticas para permitir al usuario apagar o reiniciar desde gnome. Consultado el 26 de noviembre del 2018. Recurso recuperado de https://enavas.blogspot.com/2012/11/polkit-modificar-politicas-para.html
  4. Libvirt Virtualization API, (June 14th, 2013). Consultado el 26 de noviembre del 2018. Recurso recuperado de https://wiki.libvirt.org/page/SSHPolicyKitSetup
  5. Red Hat, (S.F.). Desktop Migration and Administration Guide – Chapter 4. Consultado el 27 de noviembre del 2018. Recurso recuperado de https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/desktop_migration_and_administration_guide/policykit
  6. Libvirt Virtualization API, (June 14th, 2013). Connection authentication. Consultado el 26 de noviembre del 2018. Recurso recuperado de https://libvirt.org/auth.html

Deja un comentario