Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 56. Usando Ansible to manage IdM service vaults: armazenando e recuperando segredos

Esta seção mostra como um administrador pode usar o módulo ansible-freeipa vault para armazenar com segurança um segredo de serviço em um local centralizado. O cofre utilizado no exemplo é assimétrico, o que significa que, para utilizá-lo, o administrador precisa realizar os seguintes passos:

  1. Gerar uma chave privada usando, por exemplo, o utilitário openssl.
  2. Gerar uma chave pública com base na chave privada.

O segredo do serviço é criptografado com a chave pública quando um administrador o arquiva no cofre. Em seguida, uma instância de serviço hospedada em uma máquina específica no domínio recupera o segredo usando a chave privada. Somente o serviço e o administrador têm permissão para acessar o segredo.

Se o segredo for comprometido, o administrador pode substituí-lo no cofre de serviço e depois redistribuí-lo para aquelas instâncias de serviço individuais que não foram comprometidas.

Pré-requisitos

Esta seção inclui estes procedimentos:

Nos procedimentos:

  • admin é o administrador que administra a senha de serviço.
  • private-key-to-an-externally-signed-certificate.pem é o arquivo que contém o segredo do serviço, neste caso uma chave privada para um certificado assinado externamente. Não confunda esta chave privada com a chave privada utilizada para recuperar o segredo do cofre.
  • secret_vault é o cofre criado para armazenar o segredo do serviço.
  • HTTP/webserver1.idm.example.com é o serviço que é o proprietário do cofre.
  • HTTP/webserver2.idm.example.com e HTTP/webserver3.idm.example.com são os serviços dos membros do cofre.
  • service-public.pem é a chave pública de serviço utilizada para criptografar a senha armazenada em password_vault.
  • service-private.pem é a chave privada de serviço utilizada para decifrar a senha armazenada em secret_vault.

56.1. Garantir a presença de um cofre de serviço assimétrico na IdM usando o Ansible

Esta seção mostra como um administrador de Gerenciamento de Identidade (IdM) pode usar um livro de brincadeiras para criar um container de serviço com um ou mais cofres privados para armazenar informações sensíveis com segurança. No exemplo utilizado no procedimento abaixo, o administrador cria um cofre assimétrico chamado secret_vault. Isto assegura que os membros do cofre têm que autenticar usando uma chave privada a fim de recuperar o segredo no 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.

Procedimento

  1. Navegue até o diretório /usr/share/doc/ansible-freeipa/playbooks/vault:

    $ cd /usr/share/doc/ansible-freeipa/playbooks/vault
  2. Obter a chave pública da instância de serviço. Por exemplo, utilizando a utilidade openssl:

    1. Gerar a chave privada service-private.pem.

      $ openssl genrsa -out service-private.pem 2048
      Generating RSA private key, 2048 bit long modulus
      .+++
      ...........................................+++
      e is 65537 (0x10001)
    2. Gerar a chave pública service-public.pem com base na chave privada.

      $ openssl rsa -in service-private.pem -out service-public.pem -pubout
      writing RSA key
  3. Opcional: Criar um arquivo de inventário se ele não existir, por exemplo inventory.file:

    $ touch inventory.file
  4. 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
  5. Faça uma cópia do arquivo do livro de jogo ensure-asymmetric-vault-is-present.yml. Por exemplo:

    $ cp ensure-asymmetric-vault-is-present.yml ensure-asymmetric-service-vault-is-present-copy.yml
  6. Abra o arquivo ensure-asymmetric-vault-is-present-copy.yml para edição.
  7. Adicione uma tarefa que copia a chave pública service-public.pem do controlador Ansible para o servidor server.idm.example.com.
  8. Modifique o restante do 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.
    • Definir o nome do cofre utilizando a variável name, por exemplo secret_vault.
    • Defina a variável vault_type para asymmetric.
    • Defina a variável service para o principal do serviço que possui o cofre, por exemplo HTTP/webserver1.idm.example.com.
    • Defina o public_key_file para a localização de sua chave pública.

      Este é o arquivo Ansible playbook modificado para o exemplo atual:

    ---
    - name: Tests
      hosts: ipaserver
      become: true
      gather_facts: false
      tasks:
      - name: Copy public key to ipaserver.
        copy:
          src: /path/to/service-public.pem
          dest: /usr/share/doc/ansible-freeipa/playbooks/vault/service-public.pem
          mode: 0600
      - name: Add data to vault, from a LOCAL file.
        ipavault:
          ipaadmin_password: Secret123
          name: secret_vault
          vault_type: asymmetric
          service: HTTP/webserver1.idm.example.com
          public_key_file: /usr/share/doc/ansible-freeipa/playbooks/vault/service-public.pem
  9. Salvar o arquivo.
  10. Execute o livro de brincadeiras:

    $ ansible-playbook -v -i inventory.file ensure-asymmetric-service-vault-is-present-copy.yml