56.3. Armazenando um segredo de serviço IdM em um cofre assimétrico usando o Ansible
Esta seção mostra como um administrador de Gerenciamento de Identidade (IdM) pode usar um livro de brincadeira possível para armazenar um segredo em um cofre de serviço para que ele possa ser recuperado posteriormente pelo serviço. No exemplo utilizado no procedimento abaixo, o administrador armazena um arquivo PEM
com o segredo em uma caixa-forte assimétrica chamada secret_vault. Isto assegura que o serviço terá que autenticar usando uma chave privada a fim de recuperar o segredo do cofre. Os membros do cofre poderão recuperar o arquivo a partir de qualquer cliente IdM.
Pré-requisitos
- Você instalou o pacote ansible-freeipa no controlador Ansible. Este é o host no qual você executa as etapas do procedimento.
- Você conhece a senha IdM administrator.
- Você criou um cofre assimétrico para armazenar o segredo do serviço.
- O segredo é armazenado localmente no controlador Ansible, por exemplo, no arquivo /usr/share/doc/ansible-freeipa/playbooks/vault/private-key-to-an-externally-signed-certificate.pem.
Procedimento
Navegue até o diretório
/usr/share/doc/ansible-freeipa/playbooks/vault
:$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
Opcional: Criar um arquivo de inventário se ele não existir, por exemplo inventory.file:
$ touch inventory.file
Abra seu arquivo de inventário e defina o servidor IdM que você deseja configurar na seção
[ipaserver]
. Por exemplo, para instruir o Ansible a configurar server.idm.example.com, entre:[ipaserver] server.idm.example.com
Faça uma cópia do arquivo do livro de jogo data-archive-in-asymmetric-vault.yml. Por exemplo:
$ cp data-archive-in-asymmetric-vault.yml data-archive-in-asymmetric-vault-copy.yml
- Abra o arquivo data-archive-in-asymmetric-vault-copy.yml para edição.
Modifique o arquivo definindo as seguintes variáveis na seção de tarefas
ipavault
:-
Defina a variável
ipaadmin_password
para a senha do administrador da IdM. -
Defina a variável
name
para o nome do cofre, por exemplo secret_vault. -
Defina a variável
service
para o proprietário do serviço do cofre, por exemplo HTTP/webserver1.idm.example.com. -
Defina a variável
in
para "{{ lookup('file', 'private-key-to-an-externally-signed-certificate.pem') | b64encode }}". Isto assegura que o Ansible recupere o arquivo com a chave privada do diretório de trabalho no controlador Ansible em vez de no servidor IdM. Defina a variável
action
paramember
.Este é o arquivo Ansible playbook modificado para o exemplo atual:
--- - name: Tests hosts: ipaserver become: true gather_facts: false tasks: - ipavault: ipaadmin_password: Secret123 name: secret_vault service: HTTP/webserver1.idm.example.com in: "{{ lookup('file', 'private-key-to-an-externally-signed-certificate.pem') | b64encode }}" action: member
-
Defina a variável
- Salvar o arquivo.
Execute o livro de brincadeiras:
$ ansible-playbook -v -i inventory.file data-archive-in-asymmetric-vault-copy.yml