24.3. Stocker un secret de service IdM dans un coffre-fort asymétrique à l'aide d'Ansible
Cette section montre comment un administrateur de gestion des identités (IdM) peut utiliser un playbook Ansible pour stocker un secret dans un coffre-fort de service afin qu'il puisse être récupéré ultérieurement par le service. Dans l'exemple utilisé dans la procédure ci-dessous, l'administrateur stocke un fichier PEM
avec le secret dans un coffre-fort asymétrique nommé secret_vault. Cela garantit que le service devra s'authentifier à l'aide d'une clé privée pour récupérer le secret dans le coffre-fort. 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.
- Vous avez créé un coffre-fort asymétrique pour stocker le secret de service.
- Le secret est stocké localement sur le contrôleur Ansible, par exemple dans le fichier /usr/share/doc/ansible-freeipa/playbooks/vault/private-key-to-an-externally-signed-certificate.pem.
Procédure
Naviguez jusqu'au répertoire
/usr/share/doc/ansible-freeipa/playbooks/vault
:$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
Facultatif : Créez un fichier d'inventaire s'il n'existe pas, par exemple inventory.file:
$ touch inventory.file
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
Faites une copie du fichier data-archive-in-asymmetric-vault.yml Ansible playbook. Par exemple :
$ cp data-archive-in-asymmetric-vault.yml data-archive-in-asymmetric-vault-copy.yml
- Ouvrez le fichier data-archive-in-asymmetric-vault-copy.yml pour le modifier.
Modifiez le 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. -
Attribuez à la variable
name
le nom de la chambre forte, par exemple secret_vault. -
Définissez la variable
service
comme étant le propriétaire du service de la chambre forte, par exemple HTTP/webserver1.idm.example.com. -
Définissez la variable
in
à "{{ lookup('file', 'private-key-to-an-externally-signed-certificate.pem') | b64encode }}", ce qui garantit qu'Ansible récupère le fichier contenant la clé privée dans le répertoire de travail du contrôleur Ansible plutôt que sur le serveur IdM. Fixer la variable
action
àmember
.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: - ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver1.idm.example.com in: "{{ lookup('file', 'private-key-to-an-externally-signed-certificate.pem') | b64encode }}" action: member
-
Fixer la variable
- Enregistrer le fichier.
Exécutez le manuel de jeu :
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file data-archive-in-asymmetric-vault-copy.yml