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
passlib
n'é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 Pythonpasslib
né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
passlib
pour 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
passlib
empêche le hashage des mots de passe. - L'absence de
pip3
empê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