Proteja seus segredos com o Ansible Vault



Este blog do Ansible vault explica como os dados confidenciais (senhas / chave secreta / arquivos cert) são armazenados em arquivos criptografados e incorporados aos Playbooks Ansible.

Quanto maior o uso de tecnologia, maior a possível ameaça à segurança. Uma configuração típica do Ansible requer que você insira “Segredos”. Esses segredos podem ser literalmente qualquer coisa, senhas, tokens de API, chaves SSH públicas ou privadas, certificados SSL, etc. Como mantemos esses segredos seguros? O Ansible fornece um recurso chamado Ansible Vault.

Neste blog, vou demonstrar como usar o Ansible Vault e explorar algumas das práticas recomendadas para manter os dados seguros.





Tópicos abordados neste blog:

Se você deseja dominar DevOps, ' o curso seria sua opção preferida.



O que é o Ansible Vault?

Ter a infraestrutura como código pode representar a ameaça de expor seus dados confidenciais para o mundo, levando a problemas de segurança indesejados. O Ansible Vault é um recurso que permite manter todos os seus segredos protegidos. Ele pode criptografar arquivos inteiros, playbooks inteiros de YAML ou até mesmo algumas variáveis. Ele fornece um recurso onde você pode não apenas criptografar dados confidenciais, mas também integrá-los em seus manuais.

O Vault é implementado com granularidade de nível de arquivo, em que os arquivos são totalmente criptografados ou totalmente não criptografados. Ele usa a mesma senha para criptografar, bem como para descriptografar arquivos, o que torna o uso do Ansible Vault muito amigável.

Por que usar o Ansible Vault?

Como o Ansible está sendo usado para automação, há uma grande possibilidade de que os manuais contenham certas credenciais, certificados SSL ou outros dados confidenciais. Salvar dados confidenciais como texto simples é uma má ideia. Um compromisso incorreto com o GitHub ou roubo de laptop pode causar uma grande perda para a organização. É aqui que o cofre de Ansible entra em cena. É uma ótima maneira de ter a infraestrutura como código, sem comprometer a segurança.



Suponha que temos um manual que provisiona sua instância EC2 na AWS. Você precisa fornecer seu ID de chave de acesso da AWS e chave secreta da AWS no manual. Você não compartilha essas chaves com outras pessoas por motivos óbvios. Como você os mantém não expostos? Existem duas maneiras - criptografar essas duas variáveis ​​e incorporá-las ao manual ou criptografar todo o manual.

Este foi apenas um dos cenários em que a abóbada de ansible pode ser usada. Podemos criptografar arquivos inteiros ou apenas criptografar algumas variáveis ​​que podem conter dados confidenciais e então o Ansible os descriptografa automaticamente durante o tempo de execução. Agora podemos comprometer esses valores com segurança no GitHub.

Criação de arquivo criptografado

Para criar um arquivo criptografado, use o ansible-vault criar comando e passe o nome do arquivo.

$ ansible-vault create filename.yaml

Será solicitado que você crie uma senha e confirme-a digitando-a novamente.

criação de cofre ansible - Cofre Ansible - Edureka

Assim que sua senha for confirmada, um novo arquivo será criado e uma janela de edição será aberta. Por padrão, o editor do Ansible Vault é o vi. Você pode adicionar dados, salvar e sair.

E seu arquivo está criptografado.

Editando arquivos criptografados

Se você quiser editar um arquivo criptografado, pode editá-lo usando edição do ansible-vault comando.

$ ansible-vault edit secrets.txt

Onde secrets.txt é um arquivo criptografado já criado.

Você será solicitado a inserir a senha do cofre. O arquivo (versão descriptografada) será aberto em um editor vi e então você poderá fazer as alterações necessárias.

Se você verificar a saída, verá que seu texto será criptografado automaticamente quando você salvar e fechar.

Visualizando Arquivo Criptografado

Se você deseja apenas ver um arquivo criptografado, você pode usar o vista da abóbada ansible comando.

$ ansible-vault view filename.yml

Novamente, você será solicitado a fornecer uma senha.

e você verá uma saída semelhante.

Rekeying Vault Password

Claro, há momentos em que você deseja alterar a senha do cofre. Você pode usar o rekey do ansible-vault comando.

$ ansible-vault rekey secrets.txt

Você será solicitado com a senha atual do cofre e, em seguida, a nova senha e, finalmente, confirmado a nova senha.

Criptografando arquivos não criptografados

Suponha que você tenha um arquivo que deseja criptografar, você pode usar o criptografar ansible-vault comando.

$ ansible-vault encrypt filename.txt

Você será solicitado a inserir e confirmar a senha e seu arquivo está criptografado.

Agora que você viu o conteúdo do arquivo, está tudo criptografado.

Descriptografando arquivos criptografados

Se você deseja descriptografar um arquivo criptografado, você pode usar Ansible-Vault descriptografar comando.

$ ansible-vault decrypt filename.txt

Como de costume, ele solicitará que você insira e confirme a senha do cofre.

Criptografando variáveis ​​específicas

A prática recomendada ao usar o Ansible Vault é criptografar apenas os dados confidenciais. No exemplo explicado acima, a equipe de desenvolvimento não deseja compartilhar sua senha com a equipe de produção e de teste, mas pode precisar de acesso a certos dados para realizar suas próprias tarefas. Nesses casos, você deve criptografar apenas os dados que não deseja compartilhar com outras pessoas, deixando o resto como está.

O Ansible Vault permite criptografar apenas variáveis ​​específicas. Você pode usar o ansible-vault encrypt_string comando para isso.

$ ansible-vault encrypt_string

Você será solicitado a inserir e confirmar a senha do cofre. Você pode então começar a inserir o valor da string que deseja criptografar. Pressione ctrl-d para encerrar a entrada. Agora você pode atribuir este criptografadovalora uma corda no manual.

Você também pode conseguir a mesma coisa em uma única linha.

$ ansible-vault encrypt_string 'string' --nome 'nome_variável'

Descriptografando arquivos criptografados durante o tempo de execução

Se você deseja descriptografar um arquivo durante o tempo de execução, você pode usar –Ask-vault-pass bandeira.

$ ansible-playbook launch.yml --ask-vault-pass

Isso irá descriptografar todos os arquivos criptografados usados ​​para a execução deste manual launch.yml. Além disso, isso só é possível se todos os arquivos forem criptografados com a mesma senha.

As solicitações de senha podem ser irritantes. O objetivo da automação torna-se inútil. Como podemos tornar isso melhor? O Ansible possui um recurso denominado “arquivo de senha” que se refere a um arquivo que contém a senha. Você pode simplesmente passar esse arquivo de senha durante o tempo de execução para automatizá-lo.

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.txt

Também é possível ter um script separado que especifica as senhas. Você precisa se certificar de que o arquivo de script é executável e a senha impressa na saída padrão para que funcione sem erros irritantes.

como usar a classe scanner em java
$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.py

Usando o ID do Vault

A ID do Vault é uma forma de fornecer um identificador para uma senha específica do Vault. O Vault ID ajuda a criptografar arquivos diferentes com senhas diferentes para serem referenciados em um manual. Esse recurso do Ansible foi lançado com o lançamento do Ansible 2.4. Antes deste lançamento, apenas uma senha do cofre podia ser usada em cada execução do manual ansible.

Então, agora, se você deseja executar um manual do Ansible que usa vários arquivos criptografados com senhas diferentes, você pode usar a ID do Vault.

$ ansible-playbook --vault-id vault-pass1 --vault-id vault-pass2 filename.yml

Com isso, chegamos ao fim deste blog do Ansible Vault. É incrível atualizar-se com a tecnologia e aproveitá-la ao máximo, mas sem comprometer a segurança. Esta é uma das melhores maneiras de ter Infraestrutura como código (IaC).

Se você achar este artigo útil, verifique o ' oferecido por Edureka. Abrange todas as ferramentas que tornaram o setor de TI mais inteligente.

Tem alguma questão para nós? Por favor, poste em e entraremos em contato com você.