Wyszukiwanie w witrynie

Jak używać Ansible Vault w podręcznikach do ochrony poufnych danych — część 10


Podczas korzystania z Ansible może być konieczne wprowadzenie poufnych lub tajnych informacji do podręczników. Obejmuje to klucze prywatne i publiczne SSH, hasła i certyfikaty SSL, żeby wymienić tylko kilka. Jak już wiemy, z oczywistych powodów złą praktyką jest zapisywanie poufnych informacji w postaci zwykłego tekstu. Informacje te należy trzymać pod kluczem, ponieważ możemy sobie tylko wyobrazić, co by się stało, gdyby przejęli je hakerzy lub nieautoryzowani użytkownicy.

Na szczęście Ansible udostępnia nam przydatną funkcję znaną jako Ansible Vault. Jak sama nazwa wskazuje, Ansible Vault pomaga zabezpieczyć ważne tajne informacje, o czym mówiliśmy wcześniej. Ansible Vault może szyfrować zmienne, a nawet całe pliki i podręczniki YAML, jak to później zademonstrujemy. Jest to bardzo przydatne i przyjazne dla użytkownika narzędzie, które wymaga tego samego hasła podczas szyfrowania i deszyfrowania plików.

Przyjrzyjmy się teraz bliżej i przejrzyjmy różne operacje, które można wykonać przy użyciu sejfu Ansible.

Jak utworzyć zaszyfrowany plik w Ansible

Jeśli chcesz utworzyć zaszyfrowany plik Playbook, po prostu użyj polecenia ansible-vault create i podaj nazwę pliku, jak pokazano.

ansible-vault create filename

Na przykład, aby utworzyć zaszyfrowany plik mysecrets.yml, wykonaj polecenie.

ansible-vault create mysecrets.yml

Następnie zostaniesz poproszony o podanie hasła, a po jego potwierdzeniu otworzy się nowe okno edytora vi, w którym możesz rozpocząć pisanie swoich sztuk.

Poniżej próbka niektórych informacji. Gdy skończysz, po prostu zapisz i wyjdź z podręcznika. I to wszystko w przypadku tworzenia zaszyfrowanego pliku.

Aby zweryfikować szyfrowanie pliku, użyj polecenia cat, jak pokazano.

cat mysecrets.yml

Jak wyświetlić zaszyfrowany plik w Ansible

Jeśli chcesz wyświetlić zaszyfrowany plik, po prostu przekaż polecenie ansible-vault view, jak pokazano poniżej.

ansible-vault view mysecrets.yml

Po raz kolejny zostaniesz poproszony o podanie hasła. Po raz kolejny będziesz mieć dostęp do swoich informacji.

Jak edytować zaszyfrowany plik w Ansible

Aby wprowadzić zmiany w zaszyfrowanym pliku, użyj polecenia ansible-vault edit, jak pokazano.

ansible-vault edit mysecrets.yml

Jak zawsze podaj hasło, a następnie przystąp do edycji pliku.

Po zakończeniu edycji zapisz i wyjdź z edytora vima.

Jak zmienić hasło do skarbca Ansible

Jeśli poczujesz potrzebę zmiany hasła do skarbca Ansible, możesz to łatwo zrobić za pomocą polecenia ansible-vault rekey, jak pokazano poniżej.

ansible-vault rekey mysecrets.yml

Spowoduje to monit o podanie hasła do skarbca, a później żądanie wprowadzenia nowego hasła i późniejszego potwierdzenia.

Jak zaszyfrować niezaszyfrowany plik w Ansible

Załóżmy, że chcesz zaszyfrować niezaszyfrowany plik, możesz to zrobić, uruchamiając polecenie ansible-vault encrypt, jak pokazano.

ansible-vault encrypt classified.txt

Możesz później wyświetlić plik za pomocą polecenia cat, jak wskazano poniżej.

Jak odszyfrować zaszyfrowany plik

Aby wyświetlić zawartość zaszyfrowanego pliku, po prostu odszyfruj plik za pomocą ansible-vault encrypt, jak pokazano w przykładzie poniżej.

ansible-vault decrypt classified.txt

Jak zaszyfrować określone zmienne w Ansible

Dodatkowo skarbiec Ansible umożliwia szyfrowanie niektórych zmiennych. Odbywa się to za pomocą polecenia ansible-vault encrypt_string, jak pokazano.

ansible-vault encrypt_string 

Skarbiec Ansible poprosi Cię o podanie hasła, a później będzie wymagał jego potwierdzenia. Następnie wpisz wartość ciągu, którą chcesz zaszyfrować. Na koniec naciśnij ctrl+d. Następnie możesz rozpocząć przypisywanie zaszyfrowanej wartości w podręczniku.

Można to osiągnąć w jednej linii, jak pokazano poniżej.

ansible-vault encrypt_string 'string' --name 'variable_name'

Jak odszyfrować plik podręcznika w czasie wykonywania

Jeśli masz plik podręcznika i chcesz go odszyfrować w czasie wykonywania, użyj opcji --ask-vault-pass, jak pokazano.

ansible-playbook deploy.yml --ask-vault-pass

Spowoduje to odszyfrowanie wszystkich plików używanych w podręczniku, pod warunkiem, że zostały zaszyfrowane przy użyciu tego samego hasła.

Monity o hasło mogą czasami być denerwujące. Te monity sprawiają, że automatyzacja jest niemożliwa, zwłaszcza gdy automatyzacja jest kluczowa. Aby usprawnić proces odszyfrowywania podręczników w czasie wykonywania, zaleca się posiadanie osobnego pliku haseł zawierającego hasło do skarbca Ansible. Plik ten można następnie przekazać w czasie wykonywania, jak pokazano.

ansible-playbook deploy.yml --vault-password-file  /home/tecmint/vault_pass.txt

To prowadzi nas do podsumowania tego tematu i serii automatyzacji Ansible. Mamy nadzieję, że tutoriale dostarczyły przydatnej wiedzy na temat automatyzacji zadań na wielu serwerach z jednego systemu centralnego.