25.6. Utilisation d'un playbook Ansible pour permettre aux utilisateurs, groupes, hôtes ou groupes d'hôtes IdM de récupérer 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 à un 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 IdM, vous pouvez autoriser d'autres utilisateurs à récupérer ou même à créer un keytab pour un service fonctionnant dans IdM.
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 à récupérer un keytab pour le service HTTP s'exécutant sur un client IdM. En particulier, elle décrit comment autoriser l'utilisateur IdM user01 à récupérer le keytab du service HTTP fonctionnant sur 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.
- Les utilisateurs et groupes d'utilisateurs de l'IdM que vous souhaitez autoriser à récupérer la base de données de clés existent dans l'IdM.
- Les hôtes et groupes d'hôtes IdM que vous souhaitez autoriser à récupérer le fichier clé existent dans IdM.
Procédure
Créer un fichier d'inventaire, par exemple
inventory.file
:touche 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_retrieve_keytab-present.yml
Ansible playbook. Par exemple :$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present-copy.yml
-
Ouvrez le fichier copié,
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present-copy.yml
, pour le modifier : Adapter le dossier :
-
Définissez la variable
ipaadmin_password
avec votre mot de passe d'administrateur IdM. -
Définissez la variable
name
de la tâcheipaservice
comme étant le principal du service HTTP. Dans l'exemple actuel, il s'agit de HTTP/client.idm.example.com -
Spécifiez les noms des utilisateurs IdM dans la section
allow_retrieve_keytab_group:
. Dans l'exemple actuel, il s'agit de user01. -
Spécifiez les noms des groupes d'utilisateurs IdM dans la section
allow_retrieve_keytab_group:
. -
Spécifiez les noms des hôtes IdM dans la section
allow_retrieve_keytab_group:
. -
Spécifiez les noms des groupes d'hôtes IdM dans la section
allow_retrieve_keytab_group:
. Spécifiez le nom de la tâche en utilisant 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_retrieve_keytab present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Service HTTP/client.idm.example.com members allow_retrieve_keytab present for user01 ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com allow_retrieve_keytab_user: - user01 action: member
-
Définissez 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_retrieve_keytab-present-copy.yml
Verification steps
SSH à un serveur IdM en tant qu'utilisateur IdM avec le privilège de récupérer un keytab pour le service HTTP :
$ ssh user01@server.idm.example.com Password:
Utilisez la commande
ipa-getkeytab
avec l'option-r
pour récupérer le fichier de clés :$ ipa-getkeytab -r -s server.idm.example.com -p HTTP/client.idm.example.com -k /etc/httpd/conf/krb5.keytab
L'option
-s
spécifie un serveur Key Distribution Center (KDC) à partir duquel vous souhaitez récupérer le keytab.L'option
-p
spécifie le principal dont vous souhaitez récupérer le keytab.L'option
-k
indique le fichier keytab auquel vous souhaitez ajouter la clé récupérée. Le fichier sera créé s'il n'existe pas.
Si la commande n'entraîne pas d'erreur, vous avez réussi à récupérer un fichier clé de HTTP/client.idm.example.com sous la forme user01.