Rechercher

28.7. Utiliser Ansible pour configurer une console web afin de permettre à un utilisateur authentifié par une carte à puce de se connecter en SSH à un hôte distant sans avoir à s'authentifier à nouveau

download PDF

Après vous être connecté à un compte d'utilisateur sur la console web RHEL, en tant qu'administrateur du système de gestion des identités (IdM), vous pouvez avoir besoin de vous connecter à des machines distantes en utilisant le protocole SSH. Vous pouvez utiliser la fonction de délégation restreinte pour utiliser SSH sans devoir vous authentifier à nouveau.

Cette procédure décrit comment utiliser les modules servicedelegationrule et servicedelegationtarget ansible-freeipa pour configurer une console web afin d'utiliser la délégation contrainte. Dans l'exemple ci-dessous, la session de la console web s'exécute sur l'hôte myhost.idm.example.com et est configurée pour accéder à l'hôte remote.idm.example.com en utilisant SSH au nom de l'utilisateur authentifié.

Conditions préalables

  • Le mot de passe de l'IdM admin.
  • root accès à remote.idm.example.com.
  • Le service de console web est présent dans l'IdM.
  • L'hôte remote.idm.example.com est présent dans l'IdM.
  • La console web a créé un ticket S4U2Proxy Kerberos dans la session de l'utilisateur. Pour vérifier que c'est bien le cas, connectez-vous à la console web en tant qu'utilisateur IdM, ouvrez la page Terminal et entrez :

    $ klist
    Ticket cache: FILE:/run/user/1894000001/cockpit-session-3692.ccache
    Default principal: user@IDM.EXAMPLE.COM
    
    Valid starting     Expires            Service principal
    07/30/21 09:19:06 07/31/21 09:19:06 HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
    07/30/21 09:19:06  07/31/21 09:19:06  krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
            for client HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
  • 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.

Procédure

  1. Naviguez jusqu'à votre répertoire ~/MyPlaybooks/ répertoire :

    $ cd ~/MyPlaybooks/
  2. Créez un playbook web-console-smart-card-ssh.yml avec le contenu suivant :

    1. Créer une tâche qui assure la présence d'une cible de délégation :

      ---
      - name: Playbook to create a constrained delegation target
        hosts: ipaserver
      
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
        - name: Ensure servicedelegationtarget web-console-delegation-target is present
          ipaservicedelegationtarget:
            ipaadmin_password: "{{ ipaadmin_password }}"
            name: web-console-delegation-target
    2. Ajouter une tâche qui ajoute l'hôte cible à la cible de délégation :

        - name: Ensure servicedelegationtarget web-console-delegation-target member principal host/remote.idm.example.com@IDM.EXAMPLE.COM is present
          ipaservicedelegationtarget:
            ipaadmin_password: "{{ ipaadmin_password }}"
            name: web-console-delegation-target
            principal: host/remote.idm.example.com@IDM.EXAMPLE.COM
            action: member
    3. Ajouter une tâche qui assure la présence d'une règle de délégation :

        - name: Ensure servicedelegationrule delegation-rule is present
          ipaservicedelegationrule:
            ipaadmin_password: "{{ ipaadmin_password }}"
            name: web-console-delegation-rule
    4. Ajoutez une tâche qui garantit que le principal Kerberos du service client de la console Web est un membre de la règle de délégation contrainte :

        - name: Ensure the Kerberos principal of the web console client service is added to the servicedelegationrule web-console-delegation-rule
          ipaservicedelegationrule:
            ipaadmin_password: "{{ ipaadmin_password }}"
            name: web-console-delegation-rule
            principal: HTTP/myhost.idm.example.com
            action: member
    5. Ajouter une tâche qui garantit que la règle de délégation contrainte est associée à la cible de délégation web-console-delegation-target :

        - name: Ensure a constrained delegation rule is associated with a specific delegation target
          ipaservicedelegationrule:
            ipaadmin_password: "{{ ipaadmin_password }}"
            name: web-console-delegation-rule
            target: web-console-delegation-target
            action: member
  3. Enregistrer le fichier.
  4. Exécutez le playbook Ansible. Spécifiez le fichier du livre de jeu, le fichier contenant le mot de passe protégeant le fichier secret.yml et le fichier d'inventaire :

    $ ansible-playbook --vault-password-file=password_file -v -i inventory web-console-smart-card-ssh.yml
  5. Activer l'authentification Kerberos sur remote.idm.example.com:

    1. SSH à remote.idm.example.com comme root.
    2. Ouvrez le fichier /etc/ssh/sshd_config pour le modifier.
    3. Activez GSSAPIAuthentication en décommentant la ligne GSSAPIAuthentication no et en la remplaçant par GSSAPIAuthentication yes.

Ressources supplémentaires

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.