25.5. Utilisation d'un playbook Ansible pour permettre aux utilisateurs, groupes, hôtes ou groupes d'hôtes IdM de créer un keytab d'un service
Un fichier keytab est un fichier contenant des paires de mandants Kerberos et de clés cryptées. Les fichiers keytab sont généralement utilisés pour permettre aux scripts de s'authentifier automatiquement à l'aide de Kerberos, sans nécessiter d'interaction humaine ni d'accès au mot de passe stocké dans un fichier en texte clair. Le script est alors en mesure d'utiliser les informations d'identification acquises pour accéder aux fichiers stockés sur un système distant.
En tant qu'administrateur de la gestion des identités (IdM), vous pouvez permettre à d'autres utilisateurs de récupérer ou même de créer un keytab pour un service fonctionnant dans IdM. En autorisant des utilisateurs et des groupes d'utilisateurs spécifiques à créer des keytabs, vous pouvez leur déléguer l'administration du service sans partager le mot de passe de l'administrateur IdM. Cette délégation permet une administration plus fine du système.
Cette section explique comment autoriser des utilisateurs, des groupes d'utilisateurs, des hôtes et des groupes d'hôtes spécifiques de l'IdM à créer un keytab pour le service HTTP exécuté sur un client IdM. En particulier, elle décrit comment vous pouvez autoriser l'utilisateur IdM user01 à créer un keytab pour le service HTTP s'exécutant sur un client IdM nommé client.idm.example.com.
Conditions préalables
- Vous connaissez le mot de passe de l'administrateur IdM.
Vous avez configuré votre nœud de contrôle Ansible pour qu'il réponde aux exigences suivantes :
- Vous utilisez la version 2.8 ou ultérieure d'Ansible.
-
Vous avez installé le paquetage
ansible-freeipa
sur le contrôleur Ansible. - L'exemple suppose que dans le répertoire ~/MyPlaybooks/ vous avez créé un fichier d'inventaire Ansible avec le nom de domaine complet (FQDN) du serveur IdM.
-
L'exemple suppose que le coffre-fort secret.yml Ansible stocke votre
ipaadmin_password
.
- Vous avez inscrit le service HTTP dans IdM.
- Le système qui héberge le service HTTP est un client IdM.
- Les utilisateurs et groupes d'utilisateurs de l'IdM que vous souhaitez autoriser à créer le fichier clé existent dans l'IdM.
- Les hôtes et groupes d'hôtes de l'IdM que vous souhaitez autoriser à créer le fichier clé existent dans l'IdM.
Procédure
Créer un fichier d'inventaire, par exemple
inventory.file
:$ touch inventory.file
Ouvrez le site
inventory.file
et définissez le serveur IdM que vous souhaitez configurer dans la section[ipaserver]
. Par exemple, pour demander à Ansible de configurer server.idm.example.com, entrez :[ipaserver] server.idm.example.com
Faites une copie du fichier
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present.yml
Ansible playbook. Par exemple :$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present-copy.yml
-
Ouvrez le fichier
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present-copy.yml
Ansible playbook pour l'éditer. Adaptez le fichier en modifiant les éléments suivants :
-
Le mot de passe de l'administrateur IdM spécifié par la variable
ipaadmin_password
. - Le nom du client IdM sur lequel le service HTTP est exécuté. Dans l'exemple actuel, il s'agit de HTTP/client.idm.example.com
-
Les noms des utilisateurs IdM répertoriés dans la section
allow_create_keytab_user:
. Dans l'exemple actuel, il s'agit de user01. -
Les noms des groupes d'utilisateurs IdM qui sont répertoriés dans la section
allow_create_keytab_group:
. -
Les noms des hôtes IdM répertoriés dans la section
allow_create_keytab_host:
. -
Les noms des groupes d'hôtes IdM répertoriés dans la section
allow_create_keytab_hostgroup:
. Le nom de la tâche spécifiée par la variable
name
dans la sectiontasks
.Après avoir été adapté à l'exemple présent, le fichier copié se présente comme suit :
--- - name: Service member allow_create_keytab present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Service HTTP/client.idm.example.com members allow_create_keytab present for user01 ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com allow_create_keytab_user: - user01 action: member
-
Le mot de passe de l'administrateur IdM spécifié par la variable
- Enregistrer le fichier.
Exécutez le playbook Ansible. Spécifiez le fichier du livre de jeu, le fichier contenant le mot de passe protégeant le fichier secret.yml et le fichier d'inventaire :
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present-copy.yml
Verification steps
SSH vers un serveur IdM en tant qu'utilisateur IdM ayant le privilège de créer un keytab pour le service HTTP en question :
$ ssh user01@server.idm.example.com Password:
Utilisez la commande
ipa-getkeytab
pour générer le nouveau keytab pour le service HTTP :$ ipa-getkeytab -s server.idm.example.com -p HTTP/client.idm.example.com -k /etc/httpd/conf/krb5.keytab
L'option
-s
spécifie un serveur de centre de distribution de clés (KDC) pour générer le fichier de clés.L'option
-p
spécifie le principal dont vous voulez créer le keytab.L'option
-k
indique le fichier keytab auquel ajouter la nouvelle clé. Le fichier sera créé s'il n'existe pas.
Si la commande ne génère pas d'erreur, vous avez créé avec succès un keytab de HTTP/client.idm.example.com sous le nom de user01.