Co to jest Ansible Vault?

Ansible Vault to wbudowana funkcja Ansible, która szyfruje wrażliwe dane, takie jak hasła, klucze API i certyfikaty, aby mogły być bezpiecznie przechowywane wraz z playbookami i rolami w kontroli wersji. Wykorzystuje symetryczne szyfrowanie AES-256 z derywacją klucza PBKDF2, co oznacza, że jedno hasło jest używane zarówno do szyfrowania, jak i deszyfrowania. Zawartość zaszyfrowana przez Vault jest identyfikowana przez nagłówek $ANSIBLE_VAULT;1.1;AES256 następowany szesnastkowo zakodowanym tekstem zaszyfrowanym.

Ansible Vault rozwiązuje fundamentalne wyzwanie DevOps: jak przechowywać sekrety w tym samym repozytorium co kod infrastruktury bez ich ujawniania. Zamiast zarządzać oddzielnymi magazynami sekretów lub polegać na zmiennych środowiskowych, zespoły mogą zatwierdzać zaszyfrowane pliki bezpośrednio do Git i deszyfrować je w czasie wykonywania podczas uruchamiania playbooków.

Opis narzędzia

To narzędzie szyfruje i deszyfruje zawartość Ansible Vault bezpośrednio w przeglądarce. Wprowadź hasło vault i tekst jawny, aby wygenerować w pełni kompatybilny zaszyfrowany blob vault, lub wklej istniejący blob vault, aby ujawnić oryginalny sekret. Żadne dane nie opuszczają przeglądarki — wszystkie operacje kryptograficzne są wykonywane po stronie klienta.

Przykłady

Szyfrowanie tekstu jawnego:

Wejście (tekst jawny):

db_password: s3cur3P@ss!

Wyjście (zaszyfrowany vault):

$ANSIBLE_VAULT;1.1;AES256
33383239333036363833303565653032383832663162356533343630623030613133623032636566
6536303436646561356461623866386133623462383832620a646363626137626635353462386430
34333937313366383038346135656563316236313139333933383139376333353266666436316536
6335376265313432610a313537363637383264646261303637646631346137393964386432313633
3666

Deszyfrowanie zawartości vault:

Wklej zaszyfrowany blok powyżej z prawidłowym hasłem, aby odzyskać oryginalną wartość db_password: s3cur3P@ss!.

Funkcje

  • Szyfrowanie AES-256 w pełni kompatybilne z formatem Ansible Vault 1.1
  • Tylko po stronie klienta — żadne dane nie są wysyłane na żaden serwer
  • Obsługuje zarówno szyfrowanie, jak i deszyfrowanie za pomocą jednego pola hasła
  • Natychmiastowa konwersja z podglądem na żywo podczas pisania
  • Działa z wieloliniowymi sekretami, fragmentami YAML i dowolnym tekstem

Przypadki użycia

  • Szybkie szyfrowanie nowego sekretu przed zatwierdzeniem go do repozytorium Git zawierającego playbooki Ansible
  • Deszyfrowanie i inspekcja zawartości vault podczas debugowania bez konieczności lokalnej instalacji Ansible
  • Udostępnianie zaszyfrowanych sekretów kolegom z zespołu, którzy mogą je deszyfrować w przeglądarce za pomocą udostępnionego hasła vault

Jak to działa

Ansible Vault 1.1 wykorzystuje następujący proces:

  1. Derywacja klucza — PBKDF2-HMAC-SHA256 derywuje 80-bajtowy klucz z hasła i losowego salt (10 000 iteracji). Klucz jest podzielony na 32-bajtowy klucz szyfrowania, 32-bajtowy klucz HMAC i 16-bajtowy IV.
  2. Szyfrowanie — Tekst jawny jest szyfrowany za pomocą AES-256-CTR przy użyciu pochodnego klucza i IV.
  3. Uwierzytelnianie — HMAC-SHA256 jest obliczany nad tekstem zaszyfrowanym w celu zapewnienia integralności.
  4. Kodowanie — Salt, skrót HMAC i tekst zaszyfrowany są kodowane szesnastkowo i łączone pod nagłówkiem $ANSIBLE_VAULT;1.1;AES256.

Deszyfrowanie odwraca proces: hasło ponownie derywuje te same klucze, weryfikuje HMAC i deszyfruje tekst zaszyfrowany.

Ograniczenia

  • Obsługuje tylko format Ansible Vault 1.1 z szyfrowaniem AES-256
  • Nie obsługuje etykiet vault ID dla konfiguracji wielohasłowych
  • Duże pliki mogą powodować krótkie opóźnienia interfejsu użytkownika ze względu na intensywny obliczeniowo krok derywacji klucza