Red Hat Training

A Red Hat training course is available for RHEL 8

56.3. Almacenamiento de un secreto de servicio IdM en una bóveda asimétrica mediante Ansible

Esta sección muestra cómo un administrador de Gestión de Identidades (IdM) puede utilizar un libro de jugadas de Ansible para almacenar un secreto en una bóveda de servicio para que pueda ser recuperado posteriormente por el servicio. En el ejemplo utilizado en el procedimiento siguiente, el administrador almacena un archivo PEM con el secreto en una bóveda asimétrica llamada secret_vault. Esto asegura que el servicio tendrá que autenticarse usando una clave privada para poder recuperar el secreto de la bóveda. Los miembros de la bóveda podrán recuperar el archivo desde cualquier cliente IdM.

Requisitos previos

  • Ha instalado el paquete ansible-freeipa en el controlador de Ansible. Este es el host en el que se ejecutan los pasos del procedimiento.
  • Ya conoces la contraseña de IdM administrator.
  • Ha creado una bóveda asimétrica para almacenar el secreto de servicio.
  • El secreto se almacena localmente en el controlador Ansible, por ejemplo en el archivo /usr/share/doc/ansible-freeipa/playbooks/vault/private-key-to-an-externally-signed-certificate.pem.

Procedimiento

  1. Navegue hasta el directorio /usr/share/doc/ansible-freeipa/playbooks/vault:

    $ cd /usr/share/doc/ansible-freeipa/playbooks/vault
  2. Opcional: Crear un archivo de inventario si no existe, por ejemplo inventory.file:

    $ touch inventory.file
  3. Abra su archivo de inventario y defina el servidor IdM que desea configurar en la sección [ipaserver]. Por ejemplo, para indicar a Ansible que configure server.idm.example.com, introduzca:

    [ipaserver]
    server.idm.example.com
  4. Haga una copia del archivo de playbook de Ansible data-archive-in-asymmetric-vault.yml. Por ejemplo:

    $ cp data-archive-in-asymmetric-vault.yml data-archive-in-asymmetric-vault-copy.yml
  5. Abra el archivo data-archive-in-asymmetric-vault-copy.yml para editarlo.
  6. Modifique el archivo estableciendo las siguientes variables en la sección de tareas ipavault:

    • Establezca la variable ipaadmin_password con la contraseña del administrador de IdM.
    • Establezca la variable name con el nombre de la bóveda, por ejemplo secret_vault.
    • Establezca la variable service con el propietario del servicio de la bóveda, por ejemplo HTTP/webserver1.idm.example.com.
    • Establezca la variable in en "{{ lookup('file', 'private-key-to-an-externally-signed-certificate.pem') | b64encode }}". Esto garantiza que Ansible recupere el archivo con la clave privada del directorio de trabajo en el controlador de Ansible y no del servidor de IdM.
    • Establezca la variable action en member.

      Este es el archivo de Ansible playbook modificado para el ejemplo actual:

    ---
    - name: Tests
      hosts: ipaserver
      become: true
      gather_facts: false
    
      tasks:
      - ipavault:
          ipaadmin_password: Secret123
          name: secret_vault
          service: HTTP/webserver1.idm.example.com
          in: "{{ lookup('file', 'private-key-to-an-externally-signed-certificate.pem') | b64encode }}"
          action: member
  7. Guarda el archivo.
  8. Ejecuta el libro de jugadas:

    $ ansible-playbook -v -i inventory.file data-archive-in-asymmetric-vault-copy.yml