Académique Documents
Professionnel Documents
Culture Documents
1. Introduction
Keystone (la clé de voûte) est le service de gestion des identités et des autorisations d’accès, c’est-à-dire
qu’il fournit tout le mécanisme pour gérer les utilisateurs, les tokens et le catalogue de droits pour tous les
composants d’OpenStack.
Ce module est sollicité par exemple lorsqu’un utilisateur souhaite se connecter sur le portail, lorsqu’un
utilisateur souhaite provisionner une machine virtuelle... C’est de loin le module le plus utilisé d’OpenStack.
Keystone fonctionne avec un jeton d’autorisation qui est utilisé pour l’accès aux ressources et services
d’OpenStack.
2. Concept
Lorsqu’un utilisateur se connecte via Horizon, ce dernier envoie une requête HTTP à Keystone pour lui
demander s’il peut autoriser la connexion ; Keystone valide les points suivants :
ˇ
L’authentification : est-ce que les credentials (droits) sont valides ?
ˇ
Le contrôle d’accès : l’utilisateur existe-t-il ? Fait-il partie d’un tenant (projet) ? Dispose-t-il d’un
rôle ?
ˇ
L’autorisation : quels sont les droits d’accès de l’utilisateur ?
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -1-
kokou Agbedanou
3. Architecture
a. Modèle de données
Le modèle de données de Keystone est défini dans la base de données d’OpenStack installée sur le
serveur contrôleur. La base Keystone comprend 18 tables dont les principales sont :
ˇ
user : personne, système ou service, disposant de droits (credentials) ; un user est associé à un
projet.
ˇ
group : groupe d’utilisateurs. Un group est associé à un projet ou domaine.
ˇ
project (tenant) : conteneur d’un ou plusieurs utilisateurs ou services.
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -2-
kokou Agbedanou
ˇ
domain : objet contenant des utilisateurs, des groupes et des projets.
ˇ
role : objet comprenant des droits et privilèges.
ˇ
token : identifiant des droits associés à un utilisateur ou à un utilisateur et un projet.
ˇ
policy (règles) : description des besoins nécessaires d’une action.
ˇ
endpoint : point d’entrée vers les services (interface publique).
# mysql -u root -p
> use keystone;
> show tables;
| Tables_in_keystone |
+-----------------------+
| assignment |
| credential |
| domain |
| endpoint |
| group |
| id_mapping |
| migrate_version |
| policy |
| project |
| region |
| revocation_event |
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -3-
kokou Agbedanou
| role |
| service |
| token |
| trust |
| trust_role |
| user |
| user_group_membership |
+-----------------------+
b. Services internes
ˇ
Token (Token back-end) : le service token valide et gère les tokens (jetons) utilisés pour valider
les requêtes après qu’un utilisateur ou un projet a validé ses droits.
ˇ
Catalogue (Catalog back-end) : le catalogue de service fournit des points d’entrée. Un endpoint
est une adresse réseau (URL) permettant l’accès à un service.
ˇ
Policy (Policy back-end) : c’est le moteur d’autorisation basé sur les règles.
ˇ
Identity (Identity back-end) : le service d’identité gère la validation des droits (credentials) pour
les utilisateurs, les groupes, les projets (tenant), les domaines, les rôles et tout type de
metadata. Les credentials sont en fait des droits classiques de type CRUD (Create-Read-
Update-Delete) qui sont associés à une donnée.
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -4-
kokou Agbedanou
c. Services de back-ends
Chaque service interne peut être paramétré pour utiliser des back-ends de différents types :
ˇ
KVS : une interface de back-end vers d’autres back-ends supportant des requêtes sur clés.
ˇ
SQL : back-end basé sur les drivers SQLAlchemy pour garder les données persistantes.
ˇ
PAM : back-end qui utilise les services PAM (Pluggable Authentication Module) pour
authentifier.
ˇ
LDAP : permet de stocker des utilisateurs et projets dans des arborescences dissociées.
ˇ
Template : template en dur pour configurer Keystone.
Le back-end SQL
Le peuplement de la base de données Keystone est possible via des scripts déjà
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -5-
kokou Agbedanou
Exemple :
Avant de pouvoir instancier une première machine virtuelle, il faut respecter quelques règles :
Ces manipulations peuvent être effectuées depuis le dashboard ou en ligne de commande directement
sous Linux.
Exemples
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -6-
kokou Agbedanou
| id | fb727529fd32488ea7a68d3ed6b3c588 |
| name | project_one |
+-------------+----------------------------------+
# keystone role-list
+ ----------------------------------+----------------------+
| id | name |
+ ----------------------------------+----------------------+
| 791c600f5a5044ce8336de43452f6bdb | KeystoneAdmin |
| a5a54ffaf6b04e4ba4024a076ef36aee | KeystoneServiceAdmin |
| 708cea3c4fe540aca301bf64a88a5525 | Member |
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_ |
| 597a35aff9ff4f3a864c26bb67b64d5d | admin |
+ ----------------------------------+----------------------+
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -7-
kokou Agbedanou
La commande suivante permet de lier rôle (member), tenant (project_one) et user (user_one).
5. Commandes Keystone
Arguments optionnels
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -8-
kokou Agbedanou
Les arguments de type --os-XXX sont des informations passées à la commande keystone. S’ils ne sont
pas renseignés dans la commande, leur valeur par défaut est celle de la variable d’environnement ; par
exemple, --os-username prendra la valeur de la variable OS_USERNAME.
Sous-commandes
Il existe 35 sous-commandes de keystone ; les principales portent sur les endpoints d’API, les rôles, les
services, les utilisateurs et les tenants avec, à chaque fois des options de création (create), suppression
(delete), affichage (list), interrogation (get) et mise à jour (update) :
Cette commande fournit la version du programme keystone (--version), affiche le résultat en mode debug
(--debug), utilise l’utilisateur sdeon (--os-username) pour l’authentification à OpenStack et, enfin, affiche la
liste des utilisateurs de la base Keystone (user-list).
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -9-
kokou Agbedanou
user-update Mise à jour des user_id keystone user-update < num> --name NewName
données
utilisateur
[--description
<tenant-description>]
[--enabled <true|false>]
[--name <tenant_name>]
[--description
<tenant-description>]
[--enabled <true|false>]
< tenant>