23.3. Récupérer un secret à partir d'un coffre-fort d'utilisateur standard dans IdM en utilisant Ansible

Cette section montre comment un utilisateur de la gestion des identités (IdM) peut utiliser un playbook Ansible pour récupérer un secret dans le coffre-fort personnel de l'utilisateur. Dans l'exemple utilisé dans la procédure ci-dessous, l'utilisateur idm_user récupère un fichier contenant des données sensibles à partir d'un coffre-fort de type standard nommé my_vault sur un client IdM nommé host01. idm_user n'a pas besoin de s'authentifier pour accéder au fichier. idm_user peut utiliser Ansible pour récupérer le fichier à partir de n'importe quel client IdM sur lequel Ansible est installé.

Conditions préalables

  • Vous avez configuré votre nœud de contrôle Ansible pour qu'il réponde aux exigences suivantes :

    • Vous utilisez la version 2.8 ou ultérieure d'Ansible.
    • Vous avez installé le paquetage ansible-freeipa sur le contrôleur Ansible.
    • L'exemple suppose que dans le répertoire ~/MyPlaybooks/ vous avez créé un fichier d'inventaire Ansible avec le nom de domaine complet (FQDN) du serveur IdM.
    • L'exemple suppose que le coffre-fort secret.yml Ansible stocke votre ipaadmin_password.
  • Vous connaissez le mot de passe de idm_user.
  • idm_user est le propriétaire de my_vault.
  • idm_user a stocké un secret dans my_vault.
  • Ansible peut écrire dans le répertoire de l'hôte IdM dans lequel vous souhaitez récupérer le secret.
  • idm_user peut lire le répertoire de l'hôte IdM dans lequel vous souhaitez récupérer le secret.

Procédure

  1. Naviguez jusqu'au répertoire /usr/share/doc/ansible-freeipa/playbooks/vault:

    $ cd /usr/share/doc/ansible-freeipa/playbooks/vault
  2. Ouvrez votre fichier d'inventaire et mentionnez, dans une section clairement définie, le client IdM sur lequel vous souhaitez récupérer le secret. Par exemple, pour demander à Ansible de récupérer le secret sur host01.idm.example.com, entrez :

    [ipahost]
    host01.idm.example.com
  3. Effectuez une copie du fichier retrive-data-symmetric-vault.yml Ansible playbook. Remplacez "symétrique" par "standard". Par exemple :

    $ cp retrive-data-symmetric-vault.yml retrieve-data-standard-vault.yml-copy.yml
  4. Ouvrez le fichier retrieve-data-standard-vault.yml-copy.yml pour le modifier.
  5. Adapter le fichier en fixant la variable hosts à ipahost.
  6. Adaptez le fichier en définissant les variables suivantes dans la section ipavault task :

    • Fixer la variable ipaadmin_principal à idm_user.
    • Définissez la variable ipaadmin_password avec le mot de passe de idm_user.
    • Fixer la variable user à idm_user.
    • Fixer la variable name à my_vault.
    • Définissez la variable out avec le chemin complet du fichier dans lequel vous souhaitez exporter le secret.
    • Fixer la variable state à retrieved.

      Il s'agit du fichier playbook Ansible modifié pour l'exemple actuel :

    ---
    - name: Tests
      hosts: ipahost
      gather_facts: false
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - ipavault:
          ipaadmin_principal: idm_user
          ipaadmin_password: idm_user_password
          user: idm_user
          name: my_vault
          out: /tmp/password_exported.txt
          state: retrieved
  7. Enregistrer le fichier.
  8. Exécutez le manuel de jeu :

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file retrieve-data-standard-vault.yml-copy.yml

Verification steps

  1. SSH à host01 comme user01:

    $ ssh user01@host01.idm.example.com
  2. Afficher le fichier spécifié par la variable out dans le fichier playbook Ansible :

    $ vim /tmp/password_exported.txt

Vous pouvez maintenant voir le secret exporté.

  • Pour plus d'informations sur l'utilisation d'Ansible pour gérer les coffres-forts IdM et les secrets d'utilisateur, ainsi que sur les variables des playbooks, consultez le fichier README-vault.md Markdown disponible dans le répertoire /usr/share/doc/ansible-freeipa/ et les exemples de playbooks disponibles dans le répertoire /usr/share/doc/ansible-freeipa/playbooks/vault/.