Red Hat Training

A Red Hat training course is available for RHEL 8

36.3. Uso de un libro de jugadas de Ansible para garantizar el acceso sudo de un usuario de IdM en un cliente de IdM

En la gestión de identidades (IdM), puede asegurarse de que sudo conceda el acceso a un comando específico a una cuenta de usuario IdM en un host IdM específico.

Completa este procedimiento para asegurarte de que existe una regla sudo llamada idm_user_reboot. La regla concede a idm_user el permiso para ejecutar el comando /usr/sbin/reboot en la máquina idmclient.

Requisitos previos

Procedimiento

  1. Cree un archivo de inventario, por ejemplo inventory.file, y defina en él ipaservers:

    [ipaservers]
    server.idm.example.com
  2. Añade uno o más comandos de sudo:

    1. Cree un playbook de Ansible ensure-reboot-sudocmd-is-present.yml que garantice la presencia del comando /usr/sbin/reboot en la base de datos de IdM de los comandos sudo. Para simplificar este paso, puede copiar y modificar el ejemplo en el archivo /usr/share/doc/ansible-freeipa/playbooks/sudocmd/ensure-sudocmd-is-present.yml:

      ---
      - name: Playbook to manage sudo command
        hosts: ipaserver
        become: true
      
        tasks:
        # Ensure sudo command is present
        - ipasudocmd:
            ipaadmin_password: MySecret123
            name: /usr/sbin/reboot
            state: present
    2. Ejecuta el libro de jugadas:

      $ ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-reboot-sudocmd-is-present.yml
  3. Cree una regla sudo que haga referencia a los comandos:

    1. Cree un playbook de Ansible ensure-sudorule-for-idmuser-on-idmclient-is-present.yml que utilice la entrada del comando sudo para asegurar la presencia de una regla sudo. La regla sudo permite a idm_user reiniciar la máquina idmclient. Para simplificar este paso, puede copiar y modificar el ejemplo en el archivo /usr/share/doc/ansible-freeipa/playbooks/sudorule/ensure-sudorule-is-present.yml:

      ---
      - name: Tests
        hosts: ipaserver
        become: true
      
        tasks:
        # Ensure a sudorule is present granting idm_user the permission to run /usr/sbin/reboot on idmclient
        - ipasudorule:
            ipaadmin_password: MySecret123
            name: idm_user_reboot
            description: A test sudo rule.
            allow_sudocmd: /usr/sbin/reboot
            host: idmclient.idm.example.com
            user: idm_user
            state: present
    2. Ejecuta el libro de jugadas:

      $ ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-sudorule-for-idmuser-on-idmclient-is-present.yml

Pasos de verificación

Compruebe que la regla sudo cuya presencia ha asegurado en el servidor IdM funciona en idmclient verificando que idm_user puede reiniciar idmclient utilizando sudo. Tenga en cuenta que los cambios realizados en el servidor pueden tardar unos minutos en surtir efecto en el cliente.

  1. Inicie sesión en idmclient como idm_user.
  2. Reinicie la máquina utilizando sudo. Introduzca la contraseña de idm_user cuando se le solicite:

    $ sudo /usr/sbin/reboot
    [sudo] password for idm_user:

Si sudo está configurado correctamente, la máquina se reinicia.

Materiales adicionales

  • Para obtener más detalles sobre cómo aplicar los comandos, grupos de comandos y reglas de sudo en IdM utilizando un libro de jugadas de Ansible, incluidas las descripciones de las variables del libro de jugadas, consulte los archivos Markdown README-sudocmd.md, README-sudocmdgroup.md y README-sudorule.md disponibles en el directorio /usr/share/doc/ansible-freeipa/.