Zabezpiecz swoje sekrety dzięki Ansible Vault



Ten blog Ansible Vault wyjaśnia, w jaki sposób poufne dane (hasła / tajny klucz / pliki certyfikatów) są przechowywane w zaszyfrowanych plikach i osadzane w Ansible Playbooks.

Większe wykorzystanie technologii, większe potencjalne zagrożenie dla bezpieczeństwa. Typowa konfiguracja Ansible wymaga podania „Sekretów”. Tymi sekretami mogą być dosłownie wszystko, hasła, tokeny API, klucze publiczne lub prywatne SSH, certyfikaty SSL itp. Jak zapewniamy bezpieczeństwo tych tajemnic? Ansible udostępnia funkcję o nazwie Ansible Vault.

Na tym blogu pokażę, jak korzystać z Ansible Vault i poznaję sprawdzone metody zapewniania bezpieczeństwa danych.





Tematy poruszane na tym blogu:

Jeśli chcesz opanować DevOps, ' Oczywiście byłaby twoją opcją.



Co to jest Ansible Vault?

Posiadanie infrastruktury jako kodu może stanowić zagrożenie ujawnienia wrażliwych danych światu, prowadząc do niepożądanych problemów z bezpieczeństwem. Ansible Vault to funkcja, która pozwala zachować wszystkie swoje sekrety. Może szyfrować całe pliki, całe playbooki YAML lub nawet kilka zmiennych. Zapewnia narzędzie, w którym można nie tylko szyfrować poufne dane, ale także integrować je ze swoimi playbookami.

Vault jest zaimplementowany z szczegółowością na poziomie plików, gdzie pliki są całkowicie zaszyfrowane lub całkowicie niezaszyfrowane. Używa tego samego hasła do szyfrowania i odszyfrowywania plików, co sprawia, że ​​korzystanie z Ansible Vault jest bardzo przyjazne dla użytkownika.

Dlaczego warto korzystać z Ansible Vault?

Ponieważ Ansible jest używany do automatyzacji, istnieje duże prawdopodobieństwo, że podręczniki zawierają określone poświadczenia, certyfikaty SSL lub inne poufne dane. Zapisywanie tak wrażliwych danych jako zwykłego tekstu to zły pomysł. Jedno błędne popełnienie kradzieży GitHub lub laptopa może spowodować ogromną stratę dla organizacji. Tutaj pojawia się skarbiec Ansible. To świetny sposób na posiadanie infrastruktury w postaci kodu, bez narażania bezpieczeństwa.



Załóżmy, że mamy Playbook, który obsługuje Twoją instancję EC2 w AWS. Musisz podać identyfikator klucza dostępu AWS i tajny klucz AWS w podręczniku. Nie udostępniasz tych kluczy innym osobom z oczywistych powodów. Jak utrzymujesz je w stanie niewidocznym? Istnieją dwa sposoby - zaszyfruj te dwie zmienne i umieść je w playbooku lub zaszyfruj cały playbook.

To był tylko jeden ze scenariuszy, w których można użyć skarbca ansibla. Możemy zaszyfrować całe pliki lub po prostu zaszyfrować kilka zmiennych, które mogą zawierać poufne dane, a następnie Ansible automatycznie odszyfrowuje je podczas działania. Teraz możemy bezpiecznie przekazać te wartości do GitHub.

Tworzenie zaszyfrowanego pliku

Aby utworzyć zaszyfrowany plik, użyj rozszerzenia tworzenie skarbca ansibla polecenie i przekaż nazwę pliku.

$ ansible-vault create filename.yaml

Zostaniesz poproszony o utworzenie hasła, a następnie potwierdź je, wpisując je ponownie.

Tworzenie skarbca ansibla - Ansible Vault - Edureka

Po potwierdzeniu hasła zostanie utworzony nowy plik i otworzy się okno edycji. Domyślnym edytorem Ansible Vault jest vi. Możesz dodać dane, zapisać i wyjść.

do czego służy nauka o danych

Twój plik jest zaszyfrowany.

Edycja zaszyfrowanych plików

Jeśli chcesz edytować zaszyfrowany plik, możesz go edytować za pomocą edytuj sklepienie ansibli Komenda.

$ ansible-vault edytuj secrets.txt

Gdzie secrets.txt to już utworzony, zaszyfrowany plik.

Zostaniesz poproszony o wpisanie hasła do skarbca. Plik (wersja odszyfrowana) otworzy się w edytorze vi i wtedy będziesz mógł wprowadzić wymagane zmiany.

Jeśli sprawdzisz dane wyjściowe, zobaczysz, że tekst zostanie zaszyfrowany automatycznie po zapisaniu i zamknięciu.

Przeglądanie zaszyfrowanego pliku

Jeśli chcesz po prostu wyświetlić zaszyfrowany plik, możesz użyć rozszerzenia widok skarbca ansibla Komenda.

$ ansible-vault view filename.yml

Ponownie zostaniesz poproszony o podanie hasła.

i zobaczysz podobne wyniki.

Ponowne wprowadzanie hasła do skarbca

Oczywiście są chwile, w których będziesz chciał zmienić hasło do skarbca. Możesz użyć aktualizacja klucza skarbca ansibla Komenda.

$ ansible-vault rekey secrets.txt

Zostaniesz poproszony o podanie aktualnego hasła skarbca, a następnie nowego hasła i na koniec potwierdzenie nowego hasła.

Szyfrowanie niezaszyfrowanych plików

Załóżmy, że masz plik, który chcesz zaszyfrować, możesz użyć rozszerzenia Szyfrowanie skarbca ansible Komenda.

$ ansible-vault encrypt filename.txt

Zostaniesz poproszony o wpisanie i potwierdzenie hasła, a plik zostanie zaszyfrowany.

Teraz, gdy spojrzysz na zawartość pliku, wszystko jest zaszyfrowane.

Odszyfrowywanie zaszyfrowanych plików

Jeśli chcesz odszyfrować zaszyfrowany plik, możesz użyć odszyfrowanie skarbca ansibla Komenda.

$ ansible-vault decrypt filename.txt

Jak zwykle pojawi się monit o wprowadzenie i potwierdzenie hasła do skarbca.

Szyfrowanie określonych zmiennych

Najlepszą praktyką podczas korzystania z Ansible Vault jest szyfrowanie tylko poufnych danych. W przykładzie wyjaśnionym powyżej zespół programistów nie chce udostępniać swojego hasła zespołowi produkcyjnemu i pomostowemu, ale może potrzebować dostępu do pewnych danych, aby wykonać własne zadanie. W takich przypadkach należy szyfrować tylko te dane, których nie chcesz udostępniać innym, pozostawiając resztę bez zmian.

Ansible Vault umożliwia szyfrowanie tylko określonych zmiennych. Możesz użyć ansible-vault encrypt_string polecenie za to.

$ ansible-vault encrypt_string

Zostaniesz poproszony o wpisanie i potwierdzenie hasła do skarbca. Następnie możesz rozpocząć wstawianie wartości ciągu, którą chcesz zaszyfrować. Naciśnij ctrl-d, aby zakończyć wprowadzanie. Teraz możesz przypisać to zaszyfrowanewartośćdo ciągu w poradniku.

Możesz również osiągnąć to samo w jednej linii.

$ ansible-vault encrypt_string 'string' --name 'nazwa_zmiennej'

Odszyfrowywanie zaszyfrowanych plików w czasie wykonywania

Jeśli chcesz odszyfrować plik w czasie wykonywania, możesz użyć –Ask-vault-pass flaga.

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

Spowoduje to odszyfrowanie wszystkich zaszyfrowanych plików, które są używane do wykonania tego playbooka launch.yml. Jest to również możliwe tylko wtedy, gdy wszystkie pliki są zaszyfrowane tym samym hasłem.

Monity o hasło mogą być denerwujące. Cel automatyzacji staje się bezcelowy. Jak możemy to ulepszyć? Ansible ma funkcję zwaną „plikiem haseł”, która odwołuje się do pliku zawierającego hasło. Następnie możesz po prostu przekazać ten plik z hasłami w czasie wykonywania, aby go zautomatyzować.

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

Możliwe jest również posiadanie oddzielnego skryptu, który określa hasła. Musisz upewnić się, że plik skryptu jest wykonywalny, a hasło jest drukowane na standardowe wyjście, aby działał bez irytujących błędów.

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

Korzystanie z Vault Id

Vault Id to sposób na dostarczenie identyfikatora do określonego hasła skarbca. Vault ID pomaga w szyfrowaniu różnych plików za pomocą różnych haseł, do których można się odwoływać w playbooku. Ta funkcja Ansible pojawiła się wraz z wydaniem Ansible 2.4. Wcześniej w każdym wykonaniu playbooka ansibla można było używać tylko jednego hasła skarbca.

Więc teraz, jeśli chcesz uruchomić Playbook Ansible, który używa wielu plików zaszyfrowanych różnymi hasłami, możesz użyć Vault Id.

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

W ten sposób dochodzimy do końca tego bloga Ansible Vault. Wspaniale jest dogonić technologię i wykorzystać ją w pełni, ale nie rezygnując z bezpieczeństwa. Jest to jeden z najlepszych sposobów posiadania infrastruktury jako kodu (IaC).

Jeśli uznasz ten artykuł za pomocny, zapoznaj się z ' oferowane przez Edureka. Obejmuje wszystkie narzędzia, które uczyniły branżę IT inteligentniejszą.

Masz do nas pytanie? Proszę opublikuj to na a my skontaktujemy się z Tobą.