8.11. Utilisation d'un playbook Ansible pour garantir l'accès sudo à un utilisateur IdM sur un client IdM
Dans la gestion des identités (IdM), vous pouvez vous assurer que l'accès sudo
à une commande spécifique est accordé à un compte d'utilisateur IdM sur un hôte IdM spécifique.
Effectuez cette procédure pour vous assurer qu'une règle sudo
nommée idm_user_reboot existe. La règle accorde à idm_user la permission d'exécuter la commande /usr/sbin/reboot
sur la machine idmclient.
Conditions préalables
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 vous êtes assuré de la présence d'un compte utilisateur pour idm_user dans IdM et vous avez déverrouillé le compte en créant un mot de passe pour l'utilisateur. Pour plus de détails sur l'ajout d'un nouvel utilisateur IdM à l'aide de l'interface de ligne de commande, voir le lien : Ajouter des utilisateurs à l'aide de la ligne de commande.
-
Aucun compte local idm_user n'existe sur idmclient. L'utilisateur idm_user n'est pas listé dans le fichier
/etc/passwd
sur idmclient.
Procédure
Créez un fichier d'inventaire, par exemple
inventory.file
, et définissez-yipaservers
:[ipaservers] server.idm.example.com
Ajouter une ou plusieurs commandes
sudo
:Créer un playbook Ansible
ensure-reboot-sudocmd-is-present.yml
qui assure la présence de la commande/usr/sbin/reboot
dans la base de données IdM des commandessudo
. Pour simplifier cette étape, vous pouvez copier et modifier l'exemple dans le fichier/usr/share/doc/ansible-freeipa/playbooks/sudocmd/ensure-sudocmd-is-present.yml
:--- - name: Playbook to manage sudo command hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure sudo command is present - ipasudocmd: ipaadmin_password: "{{ ipaadmin_password }}" name: /usr/sbin/reboot state: present
Exécutez le manuel de jeu :
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-reboot-sudocmd-is-present.yml
Créez une règle
sudo
qui fait référence aux commandes :Créez un playbook Ansible
ensure-sudorule-for-idmuser-on-idmclient-is-present.yml
qui utilise l'entrée de commandesudo
pour s'assurer de la présence d'une règle sudo. La règle sudo permet à idm_user de redémarrer la machine idmclient. Pour simplifier cette étape, vous pouvez copier et modifier l'exemple dans le fichier/usr/share/doc/ansible-freeipa/playbooks/sudorule/ensure-sudorule-is-present.yml
:--- - name: Tests hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure a sudorule is present granting idm_user the permission to run /usr/sbin/reboot on idmclient - ipasudorule: ipaadmin_password: "{{ ipaadmin_password }}" name: idm_user_reboot description: A test sudo rule. allow_sudocmd: /usr/sbin/reboot host: idmclient.idm.example.com user: idm_user state: present
Exécutez le manuel de jeu :
$ ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-sudorule-for-idmuser-on-idmclient-is-present.yml
Verification steps
Testez que la règle sudo
dont vous avez assuré la présence sur le serveur IdM fonctionne sur idmclient en vérifiant que idm_user peut redémarrer idmclient à l'aide de sudo
. Notez qu'il peut s'écouler quelques minutes avant que les changements effectués sur le serveur ne prennent effet sur le client.
- Connectez-vous à idmclient en tant que idm_user.
Redémarrez la machine en utilisant
sudo
. Saisissez le mot de passe de idm_user lorsque vous y êtes invité :$ sudo /usr/sbin/reboot [sudo] password for idm_user:
Si sudo
est configuré correctement, la machine redémarre.
Ressources supplémentaires
-
Voir les fichiers
README-sudocmd.md
,README-sudocmdgroup.md
, etREADME-sudorule.md
dans le répertoire/usr/share/doc/ansible-freeipa/
.