Rechercher

Chapitre 24. Utiliser Ansible pour gérer les coffres-forts des services IdM : stocker et récupérer les secrets

download PDF

Cette section montre comment un administrateur peut utiliser le module ansible-freeipa vault pour stocker en toute sécurité un secret de service dans un emplacement centralisé. Le coffre-fort utilisé dans l'exemple est asymétrique, ce qui signifie que pour l'utiliser, l'administrateur doit effectuer les étapes suivantes :

  1. Générez une clé privée en utilisant, par exemple, l'utilitaire openssl.
  2. Générer une clé publique à partir de la clé privée.

Le secret de service est crypté avec la clé publique lorsqu'un administrateur l'archive dans le coffre-fort. Ensuite, une instance de service hébergée sur une machine spécifique du domaine récupère le secret à l'aide de la clé privée. Seuls le service et l'administrateur sont autorisés à accéder au secret.

Si le secret est compromis, l'administrateur peut le remplacer dans le coffre-fort du service, puis le redistribuer aux instances de service individuelles qui n'ont pas été compromises.

Conditions préalables

Cette section comprend ces procédures :

Dans les procédures :

  • admin est l'administrateur qui gère le mot de passe du service.
  • private-key-to-an-externally-signed-certificate.pem est le fichier contenant le secret du service, dans ce cas une clé privée d'un certificat signé en externe. Ne confondez pas cette clé privée avec la clé privée utilisée pour récupérer le secret dans le coffre-fort.
  • secret_vault est le coffre-fort créé pour stocker le secret de service.
  • HTTP/webserver1.idm.example.com est le service propriétaire de la chambre forte.
  • HTTP/webserver2.idm.example.com et HTTP/webserver3.idm.example.com sont les services aux membres de la voûte.
  • service-public.pem est la clé publique du service utilisée pour crypter le mot de passe stocké dans password_vault.
  • service-private.pem est la clé privée du service utilisée pour décrypter le mot de passe stocké dans secret_vault.

24.1. Assurer la présence d'un coffre-fort de service asymétrique dans IdM à l'aide d'Ansible

Cette section montre comment un administrateur de gestion des identités (IdM) peut utiliser un playbook Ansible pour créer un conteneur de coffre-fort de service avec un ou plusieurs coffres-forts privés pour stocker en toute sécurité des informations sensibles. Dans l'exemple utilisé dans la procédure ci-dessous, l'administrateur crée un coffre-fort asymétrique nommé secret_vault. Cela garantit que les membres de l'espace de stockage doivent s'authentifier à l'aide d'une clé privée pour récupérer le secret dans l'espace de stockage. Les membres du coffre-fort pourront récupérer le fichier à partir de n'importe quel client IdM.

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

Procédure

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

    $ cd /usr/share/doc/ansible-freeipa/playbooks/vault
  2. Obtenir la clé publique de l'instance de service. Par exemple, en utilisant l'utilitaire openssl:

    1. Générer la clé privée service-private.pem.

      $ openssl genrsa -out service-private.pem 2048
      Generating RSA private key, 2048 bit long modulus
      .+++
      ...........................................+++
      e is 65537 (0x10001)
    2. Générer la clé publique service-public.pem à partir de la clé privée.

      $ openssl rsa -in service-private.pem -out service-public.pem -pubout
      writing RSA key
  3. Facultatif : Créez un fichier d'inventaire s'il n'existe pas, par exemple inventory.file:

    $ touch inventory.file
  4. Ouvrez votre fichier d'inventaire et définissez le serveur IdM que vous souhaitez configurer dans la section [ipaserver]. Par exemple, pour demander à Ansible de configurer server.idm.example.com, entrez :

    [ipaserver]
    server.idm.example.com
  5. Faites une copie du fichier ensure-asymmetric-vault-is-present.yml Ansible playbook. Par exemple :

    $ cp ensure-asymmetric-vault-is-present.yml ensure-asymmetric-service-vault-is-present-copy.yml
  6. Ouvrez le fichier ensure-asymmetric-vault-is-present-copy.yml pour le modifier.
  7. Ajoutez une tâche qui copie la clé publique service-public.pem du contrôleur Ansible vers le serveur server.idm.example.com.
  8. Modifiez le reste du fichier en définissant les variables suivantes dans la section ipavault task :

    • Fixer la variable ipaadmin_password au mot de passe de l'administrateur de l'IdM.
    • Définissez le nom de la chambre forte à l'aide de la variable name, par exemple secret_vault.
    • Fixer la variable vault_type à asymmetric.
    • Définissez la variable service comme étant le principal du service propriétaire de la chambre forte, par exemple HTTP/webserver1.idm.example.com.
    • Réglez l'adresse public_key_file sur l'emplacement de votre clé publique.

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

    ---
    - name: Tests
      hosts: ipaserver
      gather_facts: false
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Copy public key to ipaserver.
        copy:
          src: /path/to/service-public.pem
          dest: /usr/share/doc/ansible-freeipa/playbooks/vault/service-public.pem
          mode: 0600
      - name: Add data to vault, from a LOCAL file.
        ipavault:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: secret_vault
          vault_type: asymmetric
          service: HTTP/webserver1.idm.example.com
          public_key_file: /usr/share/doc/ansible-freeipa/playbooks/vault/service-public.pem
  9. Enregistrer le fichier.
  10. Exécutez le manuel de jeu :

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-asymmetric-service-vault-is-present-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.