OpenStack #3 : Keystone, service d’authentification
Présentation de Keystone :
Keystone est le service d’authentification d’Openstack.
L’accréditation (possibilité d’envoyer des commandes OpenStack) est basée sur trois éléments :
- Un nom d’utilisateur (et son jeton)
- Un tenant (une entreprise cliente)
- Un rôle
Un utilisateur peut donc avoir tous les droits sur un client (tenant) précis, il ne les a pas forcément sur les autres clients. Le super admin est l’utilisateur admin du tenant admin qui peut créer et supprimer des tenants.
LDAP ou pas LDAP
Le service d’authentification d’OpenStack peut être basé sur d’autres backends, par exemple LDAP.
C’est à éviter, d’une part, parce qu’il n’y a pas de raison pour ça (a priori, nul besoin d’avoir beaucoup d’utilisateurs dans OpenStack, juste un admin par tenant), d’autre part parce que c’est une grosse galère (les attributs LDAP y compris si c’est un AD doivent être modifiés, donc danger).
Si vraiment vous y tenez, la bonne pratique est de présenter un LDAP léger asynchrone et en lecture seule venant du LDAP d’entreprise.
Se connecter avec un user
Avec RedHat RDO
A la fin de l’installation par RDO, un fichier /root/keystonerc_admin a dû être créé avec les variables d’environnement nécessaires.
Il suffit de le sourcer :
. /root/keystonerc_admin
Avec Debian
L’installeur Debian vous demande d’indiquer le mot de passe de l’administrateur pendant l’installation.
On teste :
Pour se connecter, il faut ajouter ces variables d’environnement (remplacer le username, le tenant name et de mot de passe par les votres) :
export OS_USERNAME=admin export OS_TENANT_NAME=admin export OS_PASSWORD=lemotdepassedelamort export OS_AUTH_URL=http://W.X.Y.Z:5000/v2.0/ export OS_REGION_NAME=RegionOne export PS1='[\u@\h \W(ks_admin)]\$ '
keystone token-get
Commandes keystone de base
Lister les users, tenants et roles :
keystone user-list keystone tenant-list keystone role-list
Créer un utilisateur, créer un tenant.
Définir un rôle pour l’utilisateur.
keystone user-create --name=superman keystone tenant-create --name=MONCLIENT keystone user-role-add --user=superman --role=admin --tenant=MONCLIENT
Et pour tout péter :
keystone user-delete superman keystone tenant-delete MONCLIENT