Ansible et la sécurité
La sécurité est primordiale dans la gestion de l'infrastructure.
Ansible fournit plusieurs mécanismes pour sécuriser vos opérations, notamment :
- en évitant l'utilisation de l'utilisateur
root
directement - et en chiffrant les données sensibles.
Notions théoriques
Utilisation de sudo
Dans Ansible, l'utilisation de sudo
(ou become
dans le langage Ansible)
permet d'exécuter des tâches avec des privilèges élévés
sans être connecté en tant que root
.
Utiliser la commande sudo
à la place de l'utilisateur root
réduit les risques de sécurité en limitant l'utilisation des privilèges root
uniquement aux tâches qui en ont besoin.
Ansible Vault
Ansible Vault est un système de chiffrement qui permet de sécuriser les données sensibles. Avec Vault, vous pouvez chiffrer des variables entières, des fichiers de configuration ou même des fichiers d'inventaire entiers.
Exemple pratique
Créons un playbook qui installe un paquet en utilisant sudo
et stocke un mot de passe dans une variable chiffrée avec Ansible Vault.
-
Créez un nouveau fichier de playbook
installation_secure.yml
. -
Ajoutez le contenu suivant, en utilisant
become: yes
pour élever les privilèges:
---
- name: Installation securisee d'un paquet
hosts: all
become: yes
vars:
mot_de_passe: !vault |
$ANSIBLE_VAULT;1.1;AES256
303162366136653864...
tasks:
- name: Installer un paquet avec sudo
apt:
name: vim
state: latest
-
Pour créer une variable chiffrée avec Ansible Vault, utilisez la commande
ansible-vault create
. -
Pour exécuter le playbook, vous devrez fournir le mot de passe Vault avec l'option
--ask-vault-pass
.
Test de mémorisation/compréhension
TP - Accès sécurisé à la BD
Dans ce TP, vous allez sécuriser la configuration d'accès à une base de données
- en chiffrant le mot de passe
- et en installant le client de base de données avec des privilèges élevés.
Instructions
-
Créez un playbook
secure_db_access.yml
dans/root/ansible
. -
Utilisez Ansible Vault pour créer une variable chiffrée qui contiendra le mot de passe de la base de données.
-
Rédigez le playbook pour installer le client de base de données avec
sudo
, en utilisant votre variable chiffrée pour le mot de passe. -
Exécutez le playbook en fournissant le mot de passe Vault lorsque vous y êtes invité.
Exemple de playbook
---
- name: Configuration sécurisee de l'acces à la base de donnees
hosts: all
become: yes
vars:
db_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
656266386163666564...
tasks:
- name: Installation du client de base de donnees
apt:
name: mariadb-client
state: present
Pour exécuter ce playbook, utilisez la commande suivante :
ansible-playbook --ask-vault-pass -i /root/ansible/mon_inventaire.ini /root/ansible/secure_db_access.yml
N'oubliez pas, la pratique est la clé pour maîtriser une nouvelle compétence. Donc, si vous n'avez pas réussi du premier coup, ne vous découragez pas et essayez à nouveau.
Une solution
Vous devez être connecté pour voir le contenu.