INTRODUCTION À LA CONFIGURATION D'OPENSTACK SUR PLANETHOSTER

Quatrième partie : Configuration de Keystone dans OpenStack pour la gestion des comptes utilisateurs

Jean-Philippe Méthot

Dans la troisième partie de cette série, nous avons procédé à l’installation de Keystone, composante permettant l’authentification dans le cloud Openstack. Nous allons maintenant poursuivre l’installation d’Openstack avec la configuration et test des comptes utilisateurs dans Keystone. Nous allons donc commencer par la création des projets et utilisateurs de Keystone, les tests de fonctionnement de Keystone, pour ensuite terminer avec la création d’un script simplifiant l’authentification en lignes de commandes.

Commentez

- Titre : INTRODUCTION À LA CONFIGURATION D'OPENSTACK SUR PLANETHOSTER

- Auteur : Jean-Philippe Méthot

- Parution : 26 mai 2018

- Mise à jour : 2 juin 2018

- Licence : Copyright ® 2018 Jean-Philippe Méthot. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Création de projets et d’utilisateurs

- II. Test d’acquisition de jeton Keystone

I - Création de projets et d’utilisateurs

Keystone utilise les trois concepts suivants pour contrôler les accès à Openstack : le projet, l’utilisateur et le rôle. Le projet Openstack est un espace dans lequel on peut créer des éléments, par exemple des VM, des réseaux virtuels et des routeurs. Chacun de ces éléments est assigné au projet dans lequel il est créé et est invisible à tout utilisateur n’ayant pas les autorisations nécessaires pour le voir. Il est présentement impossible de changer un élément d’un projet à l’autre, si on se limite au fonctionnement normal d’Openstack. Il est donc fortement recommandé de planifier l’utilisation des projets avant la création de ceux-ci.

L’utilisateur est le compte avec lequel un client va se connecter à l’infrastructure. Chaque utilisateur appartient à un ou plusieurs projets et a un rôle défini dans chacun d’eux. En ce sens, l’utilisateur n’est simplement qu’un nom d’utilisateur, un mot de passe et un rôle associé dans la base de données d’Openstack.

Le rôle est une série de règles d’accès définies selon le fichier policy de chaque composante Openstack. Quelques rôles sont mis en place par défaut dans Openstack, tels que le rôle admin. Vous pouvez aussi créer de nouveaux rôles qui auront le minimum des permissions d’accès. Ceci dit, si vous désirez modifier les permissions d’accès pour certains rôles, vous devrez aller modifier le fichier /etc/COMPOSANTE/policy.json. Remplacez COMPOSANTE par le nom du service Openstack (nova, neutron, etc.) pour avoir le bon chemin vers le fichier.

Nous allons mettre en place des projets, utilisateurs et rôles de base permettant l’opération de votre cloud Openstack. Commençons par créer un projet service. Chaque composante rajoutée à Openstack aura un utilisateur dans ce projet. Ils pourront donc s’authentifier dans Keystone avec cet utilisateur. La commande pour l’ajout du projet est la suivante :

openstack project create --domain default --description "Service Project" service

Remarquez que l’on spécifie un domaine « default ». Keystone supporte la séparation par domaine, un peu comme Active directory. Toutefois, nous ne ferons pas de séparation de domaine ici et utiliserons le domaine par défaut « default ».

La documentation d’installation d’Openstack suggère aussi de faire un projet avec des utilisateurs non privilégiés pour fin de test. Nous ferons de même, pour tester et montrer comment effectuer l’ajout de nouveaux utilisateurs et rôles.

openstack project create --domain default --description "Demo Project" demo

On crée ici un projet demo dans lequel nous pourrons créer notre utilisateur.

openstack user create --domain default --password-prompt demo

On crée l’utilisateur demo avec l’option password-prompt, nous permettant d’entrer par la suite le mot de passe pour l’utilisateur.

openstack role create user

On crée un rôle user pour notre utilisateur demo. Il est à noter que nous n’aurons pas à modifier le fichier policy.json puisque par défaut, les nouveaux rôles ont le niveau minimal d’autorisation pour les projets qui leur sont associés.

openstack role add --project demo --user demo user

L’utilisateur demo a maintenant le rôle user dans le projet demo. Vous avez maintenant tous les outils nécessaires pour créer des projets, utilisateurs et rôles dans Keystone. Nous allons donc pouvoir tester le fonctionnement de Keystone.

II - Test d’acquisition de jeton Keystone

Keystone possède deux API pouvant fournir des jetons : une API admin et une API publique. Nous allons tester ces deux API à l’aide du client openstack. Vous aurez besoin du mot de passe qui a été attribué au compte administrateur lors de la configuration de Keystone ainsi que du mot de passe de notre compte demo.

unset OS_AUTH_URL OS_PASSWORD

Nous voulons enlever toute variable d’environnement restante de la configuration de keystone à l’aide de la commande unset.

openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name admin --os-username admin token issue

Cette commande contacte Keystone sur l’API admin au port 35357. Elle ne peut donc être utilisée que par un utilisateur administrateur. Une fois cette commande entrée, inscrivez le mot de passe admin. Vous recevrez un jeton d’authentification sous forme de table.

+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2018-05-24T21:10:07.078019Z                  |
| id         | gAAAAABWvi7_B8kKQD9wdXac8MoUhQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
|            | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
|            | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws       |
| project_id | 379da54985068ea096806dfaefa9afdc                                |
| user_id    | bf327763314940129689743897fea876                                |
+------------+-----------------------------------------------------------------+

openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name demo --os-username demo token issue

Cette commande est pratiquement identique à la précédente, à la différence que l’on interroge Keystone sur le port 5000. Il s’agit de l’API publique de Keystone, ouverte à tous. Le jeton résultant sera sous format semblable à celui montré ci-haut.

Si vous avez reçu des jetons dans les deux cas, alors votre Keystone est totalement fonctionnel. Toutefois, devoir utiliser ces commandes chaque fois que l’on désire obtenir un jeton d’authentification est désagréable. Heureusement, nous pouvons mettre en place un script qui nous permettra de facilement garder les informations de connexion sous forme de variables d’environnement, nous permettant de ne pas avoir à demander un jeton pour chaque commande Openstack.

Créez le fichier admin-openrc.sh et inscrivez-y les lignes suivantes :

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

Remplacez ADMIN_PASS par le mot de passe administrateur. Configurez le fichier pour être exécutable en utilisant la commande chmod u+x. Vous pourrez exécuter le script avec sh admin-openrc.sh. Une fois cette commande exécutée, vos informations de connexion seront stockées dans les variables d’environnement de votre session et aucune commande d’Openstack ne vous demandera de vous authentifier.

Ainsi, vous avez maintenant la possibilité de créer des projets et utilisateurs dans Keystone et de passer des commandes aux différents utilitaires Openstack sans authentification. Notre prochain sujet sera Glance, l’utilitaire gérant les images de machines virtuelles.