Dieser Inhalt ist in der von Ihnen ausgewählten Sprache nicht verfügbar.
Chapter 25. Using Ansible to manage IdM user vaults: storing and retrieving secrets
This chapter describes how to manage user vaults in Identity Management (IdM) using the Ansible vault
module. Specifically, it describes how an IdM user can use Ansible playbooks to perform the following three actions:
The user can do the storing and the retrieving from two different IdM clients.
25.1. Prerequisites Link kopierenLink in die Zwischenablage kopiert!
- The Key Recovery Authority (KRA) Certificate System component has been installed on one or more of the servers in your IdM domain. For details, see Installing the Key Recovery Authority in IdM.
25.2. Ensuring the presence of a standard user vault in IdM using Ansible Link kopierenLink in die Zwischenablage kopiert!
Follow this procedure to use an Ansible playbook to create a vault container with one or more private vaults to securely store sensitive information. In the example used in the procedure below, the idm_user user creates a vault of the standard type named my_vault. The standard vault type ensures that idm_user will not be required to authenticate when accessing the file. idm_user will be able to retrieve the file from any IdM client to which the user is logged in.
Prerequisites
On the control node:
- You are using Ansible version 2.15 or later.
-
You have installed the
freeipa.ansible_freeipa
collection. - The example assumes that in the ~/MyPlaybooks/ directory, you have created an Ansible inventory file with the fully-qualified domain name (FQDN) of the IdM server.
-
The target node, that is the node on which the
freeipa.ansible_freeipa
module is executed, is part of the IdM domain as an IdM client, server or replica. - You know the password of idm_user.
Procedure
Navigate to the ~/MyPlaybooks/ directory:
cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Make a copy of the ensure-standard-vault-is-present.yml Ansible playbook file from the relevant collections directory. For example:
cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/ensure-standard-vault-is-present.yml ensure-standard-vault-is-present-copy.yml
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/ensure-standard-vault-is-present.yml ensure-standard-vault-is-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Open the ensure-standard-vault-is-present-copy.yml file for editing.
Adapt the file by setting the following variables in the
freeipa.ansible_freeipa.ipavault
task section:-
Set the
ipaadmin_principal
variable to idm_user. -
Set the
ipaadmin_password
variable to the password of idm_user. -
Set the
user
variable to idm_user. -
Set the
name
variable to my_vault. Set the
vault_type
variable to standard.This the modified Ansible playbook file for the current example:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Set the
- Save the file.
Run the playbook:
ansible-playbook -v -i inventory ensure-standard-vault-is-present-copy.yml
$ ansible-playbook -v -i inventory ensure-standard-vault-is-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.3. Archiving a secret in a standard user vault in IdM using Ansible Link kopierenLink in die Zwischenablage kopiert!
Follow this procedure to use an Ansible playbook to store sensitive information in a personal vault. In the example used, the idm_user user archives a file with sensitive information named password.txt in a vault named my_vault.
Prerequisites
On the control node:
- You are using Ansible version 2.15 or later.
-
You have installed the
freeipa.ansible_freeipa
collection. - The example assumes that in the ~/MyPlaybooks/ directory, you have created an Ansible inventory file with the fully-qualified domain name (FQDN) of the IdM server.
-
The target node, that is the node on which the
freeipa.ansible_freeipa
module is executed, is part of the IdM domain as an IdM client, server or replica. - You know the password of idm_user.
- idm_user is the owner, or at least a member user of my_vault.
- You have access to password.txt, the secret that you want to archive in my_vault.
Procedure
Navigate to the ~/MyPlaybooks/ directory:
cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Make a copy of the data-archive-in-symmetric-vault.yml Ansible playbook file from the relevant collections directory. For example:
cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/data-archive-in-symmetric-vault.yml data-archive-in-standard-vault-copy.yml
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/data-archive-in-symmetric-vault.yml data-archive-in-standard-vault-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Open the data-archive-in-standard-vault-copy.yml file for editing.
Adapt the file by setting the following variables in the
freeipa.ansible_freeipa.ipavault
task section:-
Set the
ipaadmin_principal
variable to idm_user. -
Set the
ipaadmin_password
variable to the password of idm_user. -
Set the
user
variable to idm_user. -
Set the
name
variable to my_vault. -
Set the
in
variable to the full path to the file with sensitive information. Set the
action
variable to member.This the modified Ansible playbook file for the current example:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Set the
- Save the file.
Run the playbook:
ansible-playbook -v -i inventory data-archive-in-standard-vault-copy.yml
$ ansible-playbook -v -i inventory data-archive-in-standard-vault-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.4. Retrieving a secret from a standard user vault in IdM using Ansible Link kopierenLink in die Zwischenablage kopiert!
Follow this procedure to use an Ansible playbook to retrieve a secret from the user personal vault. In the example used in the procedure below, the idm_user user retrieves a file with sensitive data from a vault of the standard type named my_vault onto an IdM client named host01. idm_user does not have to authenticate when accessing the file. idm_user can use Ansible to retrieve the file from any IdM client on which Ansible is installed.
Prerequisites
You have configured your Ansible control node to meet the following requirements:
- You are using Ansible version 2.15 or later.
-
You have installed the
freeipa.ansible_freeipa
collection. - The example assumes that in the ~/MyPlaybooks/ directory, you have created an Ansible inventory file with the fully-qualified domain name (FQDN) of the IdM server.
-
The target node, that is the node on which the
freeipa.ansible_freeipa
module is executed, is part of the IdM domain as an IdM client, server or replica. - You know the password of idm_user.
- idm_user is the owner of my_vault.
- idm_user has stored a secret in my_vault.
- Ansible can write into the directory on the IdM host into which you want to retrieve the secret.
- idm_user can read from the directory on the IdM host into which you want to retrieve the secret.
Procedure
Navigate to the ~/MyPlaybooks/ directory:
cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Open your inventory file and mention, in a clearly defined section, the IdM client onto which you want to retrieve the secret. For example, to instruct Ansible to retrieve the secret onto host01.idm.example.com, enter:
[ipahost] host01.idm.example.com
[ipahost] host01.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Make a copy of the retrive-data-symmetric-vault.yml Ansible playbook file from the relevant collections directory. Replace "symmetric" with "standard". For example:
cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/retrive-data-symmetric-vault.yml retrieve-data-standard-vault.yml-copy.yml
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/retrive-data-symmetric-vault.yml retrieve-data-standard-vault.yml-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Open the retrieve-data-standard-vault.yml-copy.yml file for editing.
-
Adapt the file by setting the
hosts
variable to ipahost. Adapt the file by setting the following variables in the
freeipa.ansible_freeipa.ipavault
task section:-
Set the
ipaadmin_principal
variable to idm_user. -
Set the
ipaadmin_password
variable to the password of idm_user. -
Set the
user
variable to idm_user. -
Set the
name
variable to my_vault. -
Set the
out
variable to the full path of the file into which you want to export the secret. Set the
state
variable to retrieved.This the modified Ansible playbook file for the current example:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Set the
- Save the file.
Run the playbook:
ansible-playbook -v -i inventory retrieve-data-standard-vault.yml-copy.yml
$ ansible-playbook -v -i inventory retrieve-data-standard-vault.yml-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Verification
SSH
to host01 as user01:ssh user01@host01.idm.example.com
$ ssh user01@host01.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow View the file specified by the
out
variable in the Ansible playbook file:vim /tmp/password_exported.txt
$ vim /tmp/password_exported.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
You can now see the exported secret.
-
For more information about using Ansible to manage IdM vaults and user secrets and about playbook variables, see the README-vault.md Markdown file available in the
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/
directory and the sample playbooks available in the/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/
directory.