Créer des utilisateurs avec des erreurs
Pour suivre ce tutoriel, vous aurez besoin de l'inventaire et de l'architecture présentés en annexe ou dans la pratique 2.
LIEN A AJOUTER APRES
Introduction
Dans la pratique 5 sur les boucles (loops), nous avons rencontré un problème lors de la création d'utilisateurs avec des mots de passe hashés. Plus précisément, le module Python
passlibn'était pas installé sur les nœuds cibles, ce qui a empêché le hashage sécurisé des mots de passe. Ce module est essentiel car il permet de stocker les mots de passe de manière cryptée plutôt qu'en texte brut, conformément aux bonnes pratiques de sécurité. Cette annexe va nous permettre d'explorer en détail ce problème et ses différentes solutions possibles, en commençant par reproduire volontairement l'erreur pour mieux la comprendre. L'objectif est de démontrer progressivement comment résoudre les erreurs rencontrées lors de la création d'utilisateurs. Dans cette première partie, nous allons volontairement provoquer une erreur courante lors de la création d'utilisateurs : l'absence d'un module Pythonpasslibnécessaire pour le hashage des mots de passe.
Contexte
- Le hashage des mots de passe est une exigence de sécurité pour stocker les mots de passe de manière sécurisée
- Ansible utilise le module Python
passlibpour effectuer ce hashage via le filtrepassword_hash() - Sans ce module, la création d'utilisateurs avec des mots de passe ne sera pas sécurisée.
Problème de hashage des mots de passe (passlib non installé)
Playbook 1 : Observer et comprendre l'erreur liée au hashage
Dans cette première partie, nous allons volontairement provoquer une erreur courante lors de la création d'utilisateurs : l'absence du module Python passlib nécessaire pour le hashage des mots de passe.
🔴 1 - Playbook add-users-error.yml
Création du fichier add-users-error.yml
---
- name: Ajouter Plusieurs Utilisateurs (Avec Erreur)
hosts: database
become: yes
vars:
db_users:
- username: "alice"
password: "password1"
uid: 1001
- username: "bob"
password: "password2"
uid: 1002
- username: "charlie"
password: "password3"
uid: 1003
tasks:
- name: Créer les Utilisateurs (Hashé) ❌
user:
name: "{{ item.username }}"
uid: "{{ item.uid }}"
password: "{{ item.password | password_hash('sha512') }}"
shell: "/bin/bash"
state: present
loop: "{{ db_users }}"
🔴 2 - Exécution
ansible-playbook -i inventory.ini add-users-error.yml
🔴 3 - Erreur attendue
No module named 'passlib'. Unable to encrypt nor hash, passlib must be installed.
🔴 4 - Interprétation
- L'absence du module
passlibempêche le hashage des mots de passe. - L'absence de
pip3empêche l'installation automatique depasslib.
🤔 5 - Question à vous :
Quelle serait votre approche pour résoudre ce problème ?
💡 Une solution simple serait de supprimer le hashage du mot de passe en retirant | password_hash('sha512') de la ligne :
Annexe - rappel de l'inventaire et de l'architecture
Rappel de l'inventaire
Voici le contenu de notre fichier inventory.ini qui définit les différents nœuds et leurs groupes :
root@ansibleDemo1:/home/eleve/pratique2# cat inventory.ini
[node_containers]
node1 ansible_host=172.20.0.2 ansible_user=root ansible_python_interpreter=/usr/bin/python3
node2 ansible_host=172.20.0.3 ansible_user=root ansible_python_interpreter=/usr/bin/python3
node3 ansible_host=172.20.0.4 ansible_user=root ansible_python_interpreter=/usr/bin/python3
node4 ansible_host=172.20.0.5 ansible_user=root ansible_python_interpreter=/usr/bin/python3
node5 ansible_host=172.20.0.6 ansible_user=root ansible_python_interpreter=/usr/bin/python3
node6 ansible_host=172.20.0.7 ansible_user=root ansible_python_interpreter=/usr/bin/python3
[web]
node1
node5
[database]
node2
node3
[mail]
node4
node6