Que sont les domaines OpenStack?
Les domaines dans Keystone sont des ressources abstraites introduites dans la version 3 de l’API Keystone. Un domaine est un ensemble d’utilisateurs et de projets existant dans l’environnement OpenStack. Pour comprendre ce que cela signifie réellement, il est essentiel de comprendre comment les choses fonctionnent sans domaines.
Traditionnellement, la cartographie des ressources pouvait être résumée en disant qu ‘«un utilisateur joue un rôle dans un projet». L’utilisateur est généralement un individu qui communique avec les services de cloud computing, soumettant des demandes de fourniture et de destruction d’infrastructure. Un rôle est un bit arbitraire de métadonnées utilisé pour influencer l’autorité de cet utilisateur au sein de l’environnement. Le projet est un conteneur utilisé pour regrouper et isoler les ressources les unes des autres. Avec le modèle de mappage d’origine, lorsque le rôle d’administrateur était appliqué à un utilisateur, celui-ci deviendrait un administrateur de cloud, plutôt qu’un administrateur de projet, comme prévu.
Avec les domaines, le mappage des ressources peut être résumé en disant qu’un “domaine est composé d’utilisateurs et de projets, les utilisateurs pouvant avoir des rôles au niveau du projet et du domaine”. Avec ce modèle, il est maintenant possible d’avoir un utilisateur admin pour un domaine entier, permettant à cet utilisateur de gérer des ressources telles que des utilisateurs et des projets pour ce domaine particulier, mais un utilisateur peut également se voir appliquer un rôle uniquement pour un projet particulier, qui se comporte de la même manière que dans le modèle précédent.
L’utilisation des domaines présente certains avantages:
- Fonctions de contrôle d’accès basé sur les rôles (RBAC) plus détaillées
- Créer des administrateurs de cloud avec la possibilité de déléguer des tâches à des utilisateurs
- Prise en charge des noms de ressources qui se chevauchent, tels que les noms d’utilisateur
- La possibilité pour des organisations séparées d’exploiter différents serveurs. Par exemple, l’un peut être basé sur SQL, tandis que l’autre peut être basé sur LDAP.
Comment utilisez-vous les domaines OpenStack Keystone?
Dans la version Liberty d’OpenStack, le package python-keystoneclient
était formellement obsolète au profit du python-openstackclient
unifié, capable d’exécuter des opérations d’API pour tirer parti des domaines. Dans ce qui suit, des commandes (ou étapes) qui ont été faites dans un article précédent sur l’intégration de Heat dans OpenStack (ou DevStack). Vous pourrez consulter l’article en cliquant ici.
Vous pouvez créer un domaine :
$ openstack domain create <domain_name>
Vous pouvez lister des domaines :
$ openstack domain list <domain_name>
Une fois vos domaines créés, vous pouvez créer un utilisateur dans un domaine existant :
$ openstack domain list <domain_name>
Une fois vos domaines créés, vous pouvez créer un utilisateur dans un domaine existant :
$ openstack user create --domain <domain_name> --email <email> --password <pass> <username>
Vous pouvez également créer un projet dans un domaine :
$ openstack project create --domain <domain_name> –-description <description> <project_name>
Pour contrôler l’accès, vous pouvez attribuer un rôle à un utilisateur dans un projet :
$ openstack role add –-project-domain <name> -–project <project_name> –-user <username>
Enfin, vous pouvez supprimer un domaine et toutes les ressources qui lui appartiennent :
$ openstack domain set –-disable <name> $ openstack domain delete <name>
Pour résumer
Les domaines Keystone offrent aux déployeurs OpenStack une plus grande flexibilité lors de la division de leur environnement en partitions logiques qui seront utilisées par les membres de différents départements d’une organisation ou d’organisations complètement différentes. La granularité qui en résulte dans le modèle d’autorisation offre une grande variété de fonctionnalités en libre-service, tout en assurant l’isolation entre les utilisateurs et leurs projets.
Saif Al-Qazweny, Khalil Hamani, Abdelhaq Ouattari