Aller au contenu principal

Ansible et la sécurité

La sécurité est primordiale dans la gestion de l'infrastructure.

info

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.

astuce

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.

  1. Créez un nouveau fichier de playbook installation_secure.yml.

  2. 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
  1. Pour créer une variable chiffrée avec Ansible Vault, utilisez la commande ansible-vault create.

  2. 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


Quelle commande Ansible utilisez-vous pour créer une variable chiffrée ?


Quel est l'avantage d'utiliser `sudo` dans les playbooks Ansible ?


Quel outil Ansible est utilisé pour chiffrer les données sensibles ?


Comment exécutez-vous un playbook Ansible qui contient des variables chiffrées ?



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

  1. Créez un playbook secure_db_access.yml dans /root/ansible.

  2. Utilisez Ansible Vault pour créer une variable chiffrée qui contiendra le mot de passe de la base de données.

  3. 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.

  4. 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
astuce

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