Rechercher

5.4. Récupérer un secret de service pour un service IdM en utilisant Ansible

download PDF

Cette section montre comment un utilisateur de la gestion des identités (IdM) peut utiliser un livre de jeu Ansible pour récupérer un secret dans un coffre-fort de service au nom du service. Dans l'exemple utilisé dans la procédure ci-dessous, l'exécution du livre de jeu récupère un fichier PEM avec le secret d'un coffre-fort asymétrique nommé secret_vault, et le stocke à l'emplacement spécifié sur tous les hôtes répertoriés dans le fichier d'inventaire Ansible sous le nom ipaservers.

Les services s'authentifient auprès de l'IdM à l'aide de keytabs, et ils s'authentifient auprès du coffre-fort à l'aide d'une clé privée. Vous pouvez récupérer le fichier au nom du service à partir de n'importe quel client IdM sur lequel ansible-freeipa 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 l'administrateur IdM.
  • Vous avez créé un coffre-fort asymétrique pour stocker le secret de service.
  • Vous avez archivé le secret dans la chambre forte.
  • Vous avez stocké la clé privée utilisée pour récupérer le secret du coffre-fort du service dans l'emplacement spécifié par la variable private_key_file sur le contrôleur Ansible.

Procédure

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

    $ cd /usr/share/doc/ansible-freeipa/playbooks/vault
  2. Facultatif : Créez un fichier d'inventaire s'il n'existe pas, par exemple inventory.file:

    $ touch inventory.file
  3. Ouvrez votre fichier d'inventaire et définissez les hôtes suivants :

    • Définissez votre serveur IdM dans la section [ipaserver].
    • Définissez les hôtes sur lesquels vous souhaitez récupérer le secret dans la section [webservers]. Par exemple, pour demander à Ansible de récupérer le secret sur webserver1.idm.example.com, webserver2.idm.example.com, et webserver3.idm.example.com, entrez :
    [ipaserver]
    server.idm.example.com
    
    [webservers]
    webserver1.idm.example.com
    webserver2.idm.example.com
    webserver3.idm.example.com
  4. Faites une copie du fichier retrieve-data-asymmetric-vault.yml Ansible playbook. Par exemple :

    $ cp retrieve-data-asymmetric-vault.yml retrieve-data-asymmetric-vault-copy.yml
  5. Ouvrez le fichier retrieve-data-asymmetric-vault-copy.yml pour le modifier.
  6. Modifiez le fichier en définissant les variables suivantes dans la section ipavault task :

    • Définissez la variable ipaadmin_password avec votre mot de passe d'administrateur IdM.
    • Attribuez à la variable name le nom de la chambre forte, par exemple secret_vault.
    • Définissez la variable service comme étant le propriétaire du service de la chambre forte, par exemple HTTP/webserver1.idm.example.com.
    • Définissez la variable private_key_file à l'emplacement de la clé privée utilisée pour récupérer le secret du coffre-fort de service.
    • Définissez la variable out à l'emplacement du serveur IdM où vous souhaitez récupérer le secret private-key-to-an-externally-signed-certificate.pem, par exemple le répertoire de travail actuel.
    • Fixer la variable action à member.

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

    ---
    - name: Retrieve data from vault
      hosts: ipaserver
      become: no
      gather_facts: false
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Retrieve data from the service vault
        ipavault:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: secret_vault
          service: HTTP/webserver1.idm.example.com
          vault_type: asymmetric
          private_key: "{{ lookup('file', 'service-private.pem') | b64encode }}"
          out: private-key-to-an-externally-signed-certificate.pem
          state: retrieved
  7. Ajouter une section au playbook qui récupère le fichier de données du serveur IdM vers le contrôleur Ansible :

    ---
    - name: Retrieve data from vault
      hosts: ipaserver
      become: no
      gather_facts: false
      tasks:
    [...]
      - name: Retrieve data file
        fetch:
          src: private-key-to-an-externally-signed-certificate.pem
          dest: ./
          flat: yes
          mode: 0600
  8. Ajoutez une section au playbook qui transfère le fichier private-key-to-an-externally-signed-certificate.pem récupéré depuis le contrôleur Ansible vers les serveurs web répertoriés dans la section webservers du fichier d'inventaire :

    ---
    - name: Send data file to webservers
      become: no
      gather_facts: no
      hosts: webservers
      tasks:
      - name: Send data to webservers
        copy:
          src: private-key-to-an-externally-signed-certificate.pem
          dest: /etc/pki/tls/private/httpd.key
          mode: 0444
  9. Enregistrer le fichier.
  10. Exécutez le manuel de jeu :

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file retrieve-data-asymmetric-vault-copy.yml
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.