XenServer: Seguridad y RBAC

  RBAC (Role Based Access Control) en XenServer nos permite hacer algo muy importante en un sistema de virtualización empresarial, como es asignar los permisos adecuados a cada usuario en función de las tareas que deba realizar. Esto se aplica tanto a los usuarios finales como a los administradores de sistemas, operadores, gestores, etc…

MA icono manual(ACCEDE AQUÍ AL INDICE DEL MANUAL DE CITRIX XENSERVER)

CONTENIDO DE LA LECCION

  • Caso práctico
  • ¿Qué es RBAC?
  • Unión de un resource pool a un Directorio Activo
  • Asignación de roles a grupos de Directorio Activo

Caso práctico

   Para realizar las prácticas de los cursos que se desarrollan en nuestra empresa ficticia “L023 Formación”, los alumnos utilizan los equipos físicos L023AXXXX (por ejemplo, el equipo de la mesa 1 del Aula 01 será L023A0101) que se encuentran en las aulas Aula 01 y Aula 02. En estos equipos está instalado XenCenter. Utilizando un usuario propio aXmX de cada alumno (por ejemplo, el alumno de la mesa 1 del Aula 01 usará el usuario a1m1), los usuarios accederán mediante XenCenter a las máquinas virtuales de los cursos VIRTXXX (en este ejemplo un hipotético curso de Windows 8.1).

   Para poder realizar los cursos, los usuarios Windows (del directorio activo l023.local) de los alumnos deberán tener permisos únicamente para encender y utilizar las máquinas virtuales de los cursos, y no deberían poder ninguna tarea de administración o configuración en el entorno XenServer de la empresa.

   Por otra parte, los técnicos de sistemas de L023 Formación, Geralt de Rivia (gdrivia) y Cirilla de Cintra (ccintra), sí deberán tener permisos de administración y configuración del entorno de virtualización.

   NOTA: existen maneras muchos más adecuadas para impartir un curso a través de máquinas virtuales (como por ejemplo una infraestructura VDI), pero para el caso que no ocupa creo que es más didáctico el enfoque que he planteado.

¿Qué es RBAC?

   RBAC (Role Based Access Control) permite configurar el nivel de privilegios que tiene cada usuario que se conecta a un entorno XenServer. Esto se consigue haciendo un mapeo de usuarios o grupos de usuarios de un directorio activo de Windows a uno de los roles preestablecidos en XenServer.

   ¿Cuales son los roles existentes en XenServer?. Utilizaremos el comando xe role-list para obtener la información:

[root@l023xse01 ~]# xe role-list
uuid ( RO)           : 7955168d-7bec-10ed-105f-c6a7e6e63249
name ( RO): vm-power-admin
description ( RO): The VM Power Administrator role has full access to VM and template management and can choose where to start VMs and use the dynamic memory control and VM snapshot features

uuid ( RO)           : aaa00ab5-7340-bfbc-0d1b-7cf342639a6e
name ( RO): vm-admin
description ( RO): The VM Administrator role can manage VMs and templates

uuid ( RO)           : fb8d4ff9-310c-a959-0613-54101535d3d5
name ( RO): vm-operator
description ( RO): The VM Operator role can use VMs and interact with VM consoles

uuid ( RO)           : 7233b8e3-eacb-d7da-2c95-f2e581cdbf4e
name ( RO): read-only
description ( RO): The Read-Only role can log in with basic read-only access

uuid ( RO)           : 0165f154-ba3e-034e-6b27-5d271af109ba
name ( RO): pool-admin
description ( RO): The Pool Administrator role has full access to all features and settings, including accessing Dom0 and managing subjects, roles and external authentication

uuid ( RO)           : b9ce9791-0604-50cd-0649-09b3284c7dfd
name ( RO): pool-operator
description ( RO): The Pool Operator role manages host- and pool-wide resources, including setting up storage, creating resource pools and managing patches and high availability (HA)

   Ordenando de mayor a menor nivel de privilegios y traduciendo, tenemos:

  • Pool Admin: tiene acceso completo a todas las funciones y ajustes, incluyendo el acceso a Dom0 y la gestión de subjects, roles y autenticación externa.
  • Pool Operator: gestiona recursos de host y pool, incluyendo la configuración del almacenamiento, la creación de resource pools y la gestión de actualizaciones y de alta disponibilidad (HA).
  • VM Power Admin: tiene acceso completo a la gestión de máquinas virtuales y plantillas y puede elegir en qué servidor iniciar las máquinas vituales, gestionar el control de memoria dinámica y la característica de snapshots de máquinas virtuales.
  • VM Admin: puede gestionar máquinas virtuales y plantillas.
  • VM Operator: puede usar máquinas virtuales e interactuar con las consolas VM.
  • Read Only: puede iniciar sesión con el acceso básico de sólo lectura.

 

NOTA: para una lista completa de los permisos incluidos en cada rol, consultar http://support.citrix.com/article/CTX126442

 

   RBAC funciona básicamente del siguiente modo: los hosts XenServer se unen a un dominio de directorio activo. Una vez hecho esto, se pueden elegir usuarios o grupos (preferentemente grupos, ya que la administración posterior es más sencilla) y se añaden como entidades a XenServer. Estas entidades se denominan subjects cuando se utiliza el comando xe y users cuando se utiliza XenCenter. Posteriormente se asigna a uno de estos subjects el rol XenServer que sea más conveniente.

   Hasta este punto del manual, sólo hemos utilizado el superusuario root de los servidores XenServer. Este usuario seguirá existiendo, naturalmente, con el mayor nivel de permisos, de manera que siempre sea posible gestionar los hosts XenServer aunque estén aislados por algún problema.

Unión de un resource pool a un Directorio Activo

   El requisito fundamental para poder establecer la seguridad en XenServer en relación a usuarios y grupos de un directorio activo es que los servidores XenServer estén unidos a él.

   En nuestro caso, uniremos todo el resource pool l023pool01 (que contiene los servidores l032xse01, l023xse02 y l032xse03) al dominio l023.local de la empresa.

   Para ello, seleccionamos en el panel izquierdo de XenCenter el resource pool y vamos a la pestaña “Users” del panel derecho. Haciendo clic en el botón “Join Domain” se abre una ventana en la que debemos de introducir el nombre del dominio al que queremos unir los servidores y un usuario y contraseña de un usuario del dominio con suficientes privilegios para unir equipos a él. En nuestro caso, el nombre del dominio es l023.local y el usuario será el administrador del dominio.

 

   Concluida la unión al dominio, se activará el panel inferior “Users and Groups with Access” de la pestaña “Users”. En él, por ahora, solo aparece el superusuario “root”, el cual siempre tiene privilegios totales sobre el sistema.

   Si consultamos la consola “Usuarios y Equipos de Active Directory” en el controlador de dominio L023DOM01, podemos comprobar que se han creado las cuentas de equipo para los tres servidores XenServer.

 

 

Asignación de roles a grupos de Directorio Activo

   Comenzaremos por crear dos grupos en el directorio activo de la empresa:

  • l023_alumnos: contiene los usuarios que van a utilizar los alumnos de los cursos. Los usuarios de los alumnos son a1m1, a1m2, a1m3, a1m4, a2m1, a2m2, a2m3 y a2m4. Este grupo en XenServer deberá tener suficientes privilegios para encender máquinas virtuales y conectarse a las consolas.
  • gx_XenServAdmins: contiene los usuarios de los técnicos de sistemas de la empresa, que son gdrivia y ccintra.

  En vista de los permisos que necesita cada grupo, se realizarán los siguientes mapeos con roles XenServer:

  • l023_alumnos –> “VM Operator”
  • gx_XenServAdmins –> “Pool Admin”

   Para hacer esto, en la pestaña “Users” del resource pool en XenCenter, hacemos clic en el botón “Add…” situado en la parte inferior. Se abre el cuadro de diálogo “Add Users”, en el que escribimos el nombre del usuario o grupo sobre el que queremos establecer privilegios. Comenzamos por l023_alumnos. Escribimos el nombre y hacemos clic en “Grant Access”. XenCenter realizará una consulta en el directorio activo para resolver el nombre del objeto. Si el resultado es correcto, hacemos clic en “Close”.

 

   El subject L023l023_alumnos aparecerá ahora en el panel “Users and Groups with Access”.

   Pero queda asignar el rol al nuevo subject. Haciendo clic sobre él, elegimos la opción de menú contextual “Change Role…”. Se abre un cuadro con los roles disponibles. Seleccionamos el check correspondiente al rol que queremos asignar. En este caso, “VM Operator”.

   Hacemos clic en “Save”.

   Ahora ya aparece el rol “VM Operator” asociado al subject “L023l023_alumnos”.

   Para la siguiente asignación de rol, la correspondiente al grupo de directorio activo gx_XenServAdmins con el rol Pool Admin, utilizaremos el comando xe. Los pasos a seguir son:

1.- Conectar por ssh como root al pool master, el servidor l023xse01.

2.- Crear un nuevo subject (usuario o grupo importado a XenServer). Ejecutamos el comando xe subject-add:

[root@l023xse01 ~]# xe subject-add subject-name=”l023gx_XenServAdmins”

Resultado:
b1a322cc-3074-cded-ad65-b1d5e9111cad

3.- Asignamos el role pool-admin al subject L023gx_XenServAdmins con el comando  xe subject-role-add:

[root@l023xse01 ~]# xe subject-role-add uuid=b1a322cc-3074-cded-ad65-b1d5e9111cad role-name=pool-admin

   Donde el parámetro role-name debe ser el nombre que utiliza XenServer para cada rol. Este nombre es el que se obtiene al ejecutar el comando xe role-list, que ya ejecutamos en el apartado ¿Qué es RBAC? de esta misma lección.

4.- Comprobamos que todo se ha realizado correctamente con el comando que nos da la información de los subjects existentes y los roles asignados, xe subject-list:

[root@l023xse01 ~]# xe subject-list
uuid ( RO)                  : b1a322cc-3074-cded-ad65-b1d5e9111cad
subject-identifier ( RO): S-1-5-21-3040763878-3982981372-372754067-2120
other-config (MRO): subject-name: L023gx_xenservadmins; subject-gid: 578816072; subject-sid: S-1-5-21-3040763878-3982981372-372754067-2120; subject-is-group: true
roles (SRO): pool-admin

uuid ( RO)                  : 3d48b226-8da0-830b-f8a2-60268503985c
subject-identifier ( RO): S-1-5-21-3040763878-3982981372-372754067-2121
other-config (MRO): subject-name: L023l023_alumnos; subject-gid: 578816073; subject-sid: S-1-5-21-3040763878-3982981372-372754067-2121; subject-is-group: true
roles (SRO): vm-operator

MA icono siguiente Siguiente: Lección 16 – XenServer: Snapshots