OpenStack - Keystone
Keystone: Autentificación
Autenticación: Confirmar la identidad de un usuario.
Autorización: Determinar los derechos de acceso para un usuario.
Keystone no da autorización.
Quien maneja los derechos se acceso se define en /etc/glance/policy.json
Keystone: Arquitectura
Autenticación: Confirmar la identidad de un usuario.
Servicio web: Apache
Base de datos: MariaDB
Keystone: Arquitectura
Dominio: Contenedor lógico de alto nivel usado para agrupar usuarios, grupos y
proyectos.
Keystone: Arquitectura
Proyecto: El área donde se crean los recursos considerados, ejemplo, si tu propia
empresa que esta corriendo una nuble publica openstack, cada uno de tus clientes
será configurado en su propio dominio, y dentro de ese dominio puedes permitir a ese
cliente crear múltiples proyectos.
Keystone: Arquitectura
Detalles de usuario: Agrega personas individuales, se encuentran en la base de datos de
Keystone, también puede estar en un servidor de active directory o ldap.
Un dominio puede tener cualquier cantidad de usuarios y un usuario puede pertenecer a
varios proyectos.
Keystone: Arquitectura
Rol: Es una etiqueta que se crea para aplicar a un usuario o grupo. Permite
Autorización. La autorización se ejecuta a través del archivo policy.json. Estos
ficheros podrán determinar que es lo que el usuario puede o no puede hacer.
Keystone: Arquitectura
Grupo: Permite aplicar un rol a multiples usuarios.
Keystone: Arquitectura
Catalog: Un mapa almacenando en keystone que contiene la lista de servicios y sus URL
finales. Es donde los usuarios acceden para ubicar los recursos.
Endpoint. Es una lista como una guía telefónica que proporciona los URL de los servicios
instalados dentro del catalogo.
Dominios en Openstack: Keystone
• Los dominios representan un cliente o una organización en un entorno de
multitenencia.
• Para delegar la administración de dominios, asegúrese de que al menos un usuario
esté asignado al dominio con rol domain_admin.
• Con este rol, el Administrador de nube puede delegar las tareas administrativas del
dominio en el Administrador de dominio que podrán empezar a crear proyectos y
asignar usuarios.
Dominios en Openstack: Keystone
• Por defecto el dominio de la instalación es
“default”
• Por defecto OpenStack Horizon es “single
domain”.
• Si se desea trabajar con Horizon en multiples
dominios debemos de habilitar “multi-
domain support”
Dominios en Openstack: Crear un dominio
• Ingrese al archivo:
/usr/share/openstack-dashboard/openstack_dashboard/local/local_settings.py
Edite las líneas:
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default‘
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "member“
OPENSTACK_KEYSTONE_URL = "http://<ip address>:5000/v3"
Se reinicia el Horizon:
systemctl restart httpd
Dominios en Openstack: Crear un dominio
• Debe aparecer una caja de texto
con la opción de especificar el
dominio.
Dominios en Openstack: Crear un dominio
• Ingrese como administrador de nube
openstack domain create --description "Mi dominio" midominio
Dominios en Openstack: Eliminar dominios
• Deshabilitar el dominio y después eliminarlo:
openstack domain set --disable midominio
openstack domain delete midominio
Dominios en Openstack: Crear administrador de
dominio
• Creamos un proyecto por defecto en el dominio creado
openstack project create --description 'mi proyecto' --domain midominio
miproyecto
Dominios en Openstack: Crear administrador de
dominio
• Por defecto no hay usuarios en un nuevo dominio:
openstack user list --domain midominio
• Creamos un usuario de dominio
openstack user create --description "Admin" --password "123456" --domain midominio
miusuario
Dominios en Openstack: Crear administrador de
dominio
• Damos el rol de administrador al usuario creado
openstack role add --user miusuario --project miproyecto admin
Dominios en Openstack: Crear script de para abrir
consola de comandos para un nuevo dominio
• Sacar una copia de keystone_admin y editarla
cp keystonerc_admin keystonerc_miusuario
Roles en Openstack: Roles por defecto
• Los roles predeterminados son admin, member y reader.
• El admin rol implica el member rol, el member rol implica el reader rol.
• El reader rol proporciona acceso de solo lectura a los recursos dentro del sistema,
un dominio o un proyecto.
• Un usuario con el reader rol en un dominio solo puede listar proyectos dentro de su
dominio.
• En forma limitada reader rol puede crear imágenes, volúmenes, y redes entre
algunas cosas mas.
Roles en Openstack: Crear usuario y asignar rol
reader
• Creamos un usuario de prueba y aseignarle el rol de operador
openstack role create operador
openstack user create --password "123456" --domain midominio operador2
openstack role add --user operador2 --project miproyecto operador
openstack role assignment list --user operador2 --project miproyecto --names
• Verificar en Horizon los privilegios del rol creado
• Verificar que el rol creado es como el rol reader
Roles en Openstack: Roles por defecto
• El member rol puede crear recursos, pero el admin rol para eliminarlos.
• Por ejemplo, los usuarios con reader rol proyecto pueden enumerar instancias, los
usuarios con member rol proyecto pueden enumerar y crear instancias, y los
usuarios con admin rol proyecto pueden enumerar, crear y eliminar instancias.
• Los desarrolladores de servicios pueden usar el member rol para proporcionar más
flexibilidad entre admin y reader en diferentes ámbitos.
Roles en Openstack: Crear un rol
• Creamos un rol nuevo llamado operador, creamos un usuario operador2 y le
asignamos dicho rol.
openstack role create operador --domain midominio
openstack user create operador2 --domain midominio --password "123456“
openstack role add operador --project miproyecto --user operador2
Roles en Openstack: Crear un rol
• Creamos un rol nuevo llamado operador, creamos un usuario operador2 y le
asignamos dicho rol.
openstack role create operador --domain midominio
openstack user create operador2 --domain midominio --password "123456“
openstack role add operador --project miproyecto --user operador2
Roles en Openstack: Grupos de trabajo
• El grupo permite asignar los mismos roles a un conjunto de usuarios
openstack group create --domain midominio operadores
openstack group add user operadores operador3
Cómo funcionan los permisos de Usuarios y grupos
en Openstack: Keystone
• Los usuarios y los Grupos en Openstack son únicos dentro de cada dominio. Es
decir que no pueden existir usuarios con el mismo nombre dentro del Dominio, pero
si fuera.
• Los usuarios pueden asociarse en grupos o no.
• Cuando se crean estos usuarios o grupos lo único que hay que indicar como
obligatorio es el dominio, aunque si no lo introduces Openstack lo asocia
directamente al dominio “default”.
Cómo funcionan los permisos de Usuarios y grupos
en Openstack: Keystone
• Pasa lo mismo con los Proyectos. Siempre pertenecen a un dominio, y si no lo especifícias
a la hora de crearlo, se crean en el dominio “default”.
• Para poder asociar un usuario o un grupo a un proyecto, es necesario asignarles un rol.
• Es decir que si quieres que el usuario “Pepe” pueda acceder al proyecto “Games”
necesitas decirle que rol tendrá en ese proyecto.
• Esto es así porque el usuario “Pepe” puede tener un rol para el proyecto “Games” pero
además puede formar parte del proyecto “Administración” con otro rol distinto.
Roles por defecto en Openstack
• ResellerAdmin, OperatorSwift, admin, _member_.
• En algunas instalaciones ademas de “_member_” hay otro rol que se llama “member”.
• Así que tal y como hemos dicho, para poder hacer que “Pepe” pertenezca al proyecto “Games”
tenemos que indicarle a Openstack que rol de estos 4 queremos darle, o también podemos crear un
nuevo rol y asignarle permisos específicos.
• Cuando un usuario forma parte de un grupo, absorve los roles que tenga este grupo dentro de este
proyecto y son siempre sumativos.
Roles por defecto en Openstack
• Es decir que si “Pepe” es “admin” en el proyecto “Games” pero además “Pepe”
pertenece al grupo “Operadores”, que a su vez tiene el rol creado “operator” en el
proyecto “Games”; “Pepe es “operator” y “admin” en el proyecto “Games”.
• Puede parecer un poco lioso al leerlo, pero es mucho más sencillo si se ve de manera
visual, así que vamos a ver como se gestiona todo esto desde el Dashboard Horizon de
Openstack.
Keystone: Crear proyectos
Los administradores de nube gestionan los permisos a través de definiciones de
usuario, grupo y proyecto. Es posible asignar usuarios y grupos de usuarios a más de
un proyecto.
Keystone: Crear proyectos
Como crear un proyecto: Logística
Keystone: Crear proyectos
Se escoge administrar miembros.
Keystone: Crear proyectos
Se escoge el miembro del proyecto.
Keystone: Crear proyectos
Escogemos el proyecto Logística
Keystone: Crear usuarios para un
proyecto Un usuario puede pertenecer como máximo a 5000
proyectos.
Keystone: El catalogo de Servicios
Es una lista de URL almacenadas en Keystone.
Muestra las URL de las API o llamadas como ENDPOINTS para los servicios
instalados en el Openstack
Cuando se instala un servicio este se agrega al catalogo para que los
usuarios puedan agregar a los servicios.
Keystone: El catalogo de Servicios
Hay 3 endpoints por cada servicio de catalogos
Public: Usada por los usuarios que acceden extenamente al API
Internal: Servicios para comunicación interne
Admin: Funciones especiales para el admin normalmente es como la
interna.