Skip to main content

Créer des utilisateurs avec des erreurs

warning

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 Python passlib 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 filtre password_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 de passlib.


🤔 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