33.2. Utiliser Ansible pour s'assurer qu'une permission RBAC avec un attribut est présente

En tant qu'administrateur système de la gestion des identités (IdM), vous pouvez personnaliser le contrôle d'accès basé sur les rôles (RBAC) de l'IdM.

La procédure suivante décrit comment utiliser un playbook Ansible pour s'assurer qu'une permission est présente dans IdM afin qu'elle puisse être ajoutée à un privilège. L'exemple décrit comment garantir l'état cible suivant :

  • L'autorisation MyPermission existe.
  • L'autorisation MyPermission ne peut être utilisée que pour ajouter des hôtes.
  • Un utilisateur bénéficiant d'un privilège contenant l'autorisation peut effectuer toutes les opérations suivantes sur une entrée d'hôte :

    • Écrire
    • Lire
    • Recherche
    • Comparer
    • Ajouter
    • Supprimer
  • Les entrées d'hôte créées par un utilisateur bénéficiant d'un privilège contenant l'autorisation MyPermission peuvent avoir une valeur description.
Note

Le type d'attribut que vous pouvez spécifier lors de la création ou de la modification d'une autorisation n'est pas limité par le schéma LDAP de l'IdM. Toutefois, le fait de spécifier, par exemple, attrs: car_licence si object_type est host plus tard entraîne le message d'erreur ipa: ERROR: attribute "car-license" not allowed lorsque vous essayez d'exercer l'autorisation et d'ajouter une valeur de permis de conduire spécifique à un hôte.

Conditions préalables

  • Vous connaissez le mot de passe de l'administrateur IdM.
  • 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'au répertoire ~/MyPlaybooks/ répertoire :

    $ cd ~/MyPlaybooks/
  2. Faites une copie du fichier permission-present.yml situé dans le répertoire /usr/share/doc/ansible-freeipa/playbooks/permission/:

    $ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-present.yml permission-present-with-attribute.yml
  3. Ouvrez le fichier permission-present-with-attribute.yml Ansible playbook pour l'éditer.
  4. Adaptez le fichier en définissant les variables suivantes dans la section ipapermission task :

    • Adaptez le site name de la tâche pour qu'il corresponde à votre cas d'utilisation.
    • Définissez la variable ipaadmin_password avec le mot de passe de l'administrateur IdM.
    • Attribuez à la variable name le nom de l'autorisation.
    • Fixer la variable object_type à host.
    • Fixer la variable right à all.
    • Fixer la variable attrs à description.

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

    ---
    - name: Permission present example
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure that the "MyPermission" permission is present with an attribute
        ipapermission:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: MyPermission
          object_type: host
          right: all
          attrs: description
  5. Enregistrer le fichier.
  6. 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 permission-present-with-attribute.yml

Ressources supplémentaires