Está en la página 1de 37

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.

También podría gustarte