En este artículo vamos a aprender a gestionar los roles en Openstack para poder crear permisos específicos a cualquier rol que creemos.
Por defecto en Openstack cuando creamos un rol no podemos asignarle ningún tipo de permiso mediante comandos.
Esto nos limita bastante porque tener un rol sin permisos específicos no sirve de mucho.
Por eso he creado este artículo en el que voy a contarte como podemos darle permisos a un rol en Openstack.
Te recomiendo que antes de seguir eches un ojo a este artículo sobre permisos en Openstack para que entiendas como funcionan los permisos a usuarios y grupos en los distintos proyectos de Openstack.
Ah y como siempre, si quieres puedes seguir este artículo en video
Contenido del artículo
Ver el video Cómo gestionar roles en Openstack de manera avanzada
[sociallocker id=1562]
[/sociallocker]
Cómo editar un rol en Openstack
Para editar un rol en Openstack tenemos que visitar siempre el mismo archivo pero en los distintos servicios.
El archivo en concreto se llama policy.json y está en la siguiente ruta:
/etc/»SERVICIO»/policy.json
Es decir que si queremos editar los permisos de cinder debemos editar la siguiente ruta
/etc/cinder/policy.json
Cuando lo editemos nos mostrará lo siguiente:
Es decir que si queremos utilizar el rol admin u owner, como vemos en la imagen tendríamos que asignarle «default» a cualquier permiso.
En la parte de abajo tenemos los permisos de este servicio. En el ejemplo estos permisos son los de Cinder.
«voume:create»: «rule:default»,
Asignar un permiso a un rol en Openstack
Vamos a crear un nombre y asignarle un rol para después asignar este nombre a un permiso y por lo tanto asignarle ese rol a ese permiso.
Parece un lío pero es bastante sencillo.
Creamos un nombre entre comillas y le asignamos un rol. Por ejemplo vamos a llamarlo «admin_probando» y le voy a dar el rol de admin.
«admin_probando»: «role:admin»,
Ahora voy a asignar esto al permiso crear volumen
«volume:create»: «rule:admin_probando
Quedaría de la siguiente manera:
Esto significa que ahora mismo solo un admin puede crear un volumen.
Por defecto si lo dejas vacío significa que todos pueden crear un volumen.
Para que todo esto surja efecto tenemos que guardar el fichero y reiniciar el servicio.
En el caso de Cinder el servicio que hay que reiniciar es:
openstack-cinder-api.service
systemctl restart openstack-cinder-api.service
Si ahora intentamos crear un volumen con un usuario que no tiene rol admin (ojo, el rol, no el nombre de usuario admin que es distinto) nos dará el siguiente mensaje de error.
Asignar un permiso a varios roles en Openstack
Para asignar un permiso a varios roles en Openstack se hace de la siguiente manera.
Vamos a crear primero el rol «operator» para ver esto con mas profundidad. Desde el CLI puedes utilizar este comando.
openstack role create operator
Ahora vamos a asignar al permiso «crear volumen» a los roles de «admin» y «operator».
Para ello creamos un nombre por ejemplo «admin_y_operador» y le asignamos los roles de la siguiente manera:
«admin_y_operador»: «role:admin or role:operator»,
Como ves la forma correcta es utilizando los dos roles y entre medias un «or».
Ahora solo nos faltaría asignar este nombre al permiso «crear volumen».
«volume:create»: «rule:admin_y_operador»,
Volvemos a reiniciar el servicio y ¡listo!
systemctl restart openstack-cinder-api.service
Ahora sólo los usuarios con el rol de «admin» u «operator» en el proyecto, pueden crear volúmenes.
Esto puedes utilizarlo con cualquier tipo de permiso.
Solo tienes que irte al servicio y editar el permiso que corresponda.
Espero que te haya servido este artículo en el que hemos aprendido como gestionar los roles en Openstack de manera avanzada.
Si te gusta, ¡Comparte!. Gracias por leer y nos vemos en el siguiente artículo.