Ansible Vault क्या है?

Ansible Vault, Ansible की एक built-in सुविधा है जो संवेदनशील डेटा जैसे पासवर्ड, API keys, और प्रमाणपत्रों को एन्क्रिप्ट करती है ताकि उन्हें playbooks और roles के साथ version control में सुरक्षित रूप से संग्रहीत किया जा सके। यह AES-256 सममित एन्क्रिप्शन का उपयोग करता है जिसमें PBKDF2 key derivation होता है, जिसका अर्थ है कि एन्क्रिप्शन और डिक्रिप्शन दोनों के लिए एक ही पासवर्ड का उपयोग किया जाता है। Vault-एन्क्रिप्टेड सामग्री को $ANSIBLE_VAULT;1.1;AES256 हेडर द्वारा पहचाना जाता है जिसके बाद hex-encoded ciphertext आता है।

Ansible Vault एक मौलिक DevOps चुनौती को हल करता है: infrastructure code के समान repository में secrets को कैसे रखा जाए बिना उन्हें expose किए। अलग secret stores को manage करने या environment variables पर निर्भर रहने के बजाय, teams एन्क्रिप्टेड फ़ाइलों को सीधे Git में commit कर सकते हैं और playbook execution के दौरान runtime में उन्हें decrypt कर सकते हैं।

Tool विवरण

यह tool Ansible Vault सामग्री को सीधे browser में एन्क्रिप्ट और डिक्रिप्ट करता है। एक vault पासवर्ड और plaintext दर्ज करें ताकि एक पूरी तरह से compatible एन्क्रिप्टेड vault blob बनाया जा सके, या एक मौजूदा vault blob को paste करें ताकि मूल secret को प्रकट किया जा सके। कोई डेटा browser से बाहर नहीं जाता — सभी cryptographic operations client-side पर चलते हैं।

उदाहरण

Plaintext को एन्क्रिप्ट करना:

Input (plaintext):

db_password: s3cur3P@ss!

Output (एन्क्रिप्टेड vault):

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

Vault सामग्री को डिक्रिप्ट करना:

सही पासवर्ड के साथ ऊपर दिए गए एन्क्रिप्टेड block को paste करें ताकि मूल db_password: s3cur3P@ss! value को recover किया जा सके।

विशेषताएं

  • AES-256 एन्क्रिप्शन जो Ansible Vault 1.1 format के साथ पूरी तरह compatible है
  • केवल client-side — कोई डेटा किसी server को नहीं भेजा जाता
  • एक ही पासवर्ड field के साथ एन्क्रिप्शन और डिक्रिप्शन दोनों को support करता है
  • Live preview के साथ तुरंत conversion जैसे ही आप type करते हैं
  • Multi-line secrets, YAML fragments, और arbitrary text के साथ काम करता है

उपयोग के मामले

  • Git repository में commit करने से पहले एक नया secret को जल्दी से एन्क्रिप्ट करना जिसमें Ansible playbooks हों
  • Debugging के दौरान vault सामग्री को डिक्रिप्ट और inspect करना बिना locally Ansible installed किए
  • एन्क्रिप्टेड secrets को teammates के साथ share करना जो एक shared vault पासवर्ड का उपयोग करके browser में उन्हें decrypt कर सकते हैं

यह कैसे काम करता है

Ansible Vault 1.1 निम्नलिखित प्रक्रिया का उपयोग करता है:

  1. Key derivation — PBKDF2-HMAC-SHA256 पासवर्ड और एक random salt से एक 80-byte key derive करता है (10,000 iterations)। Key को एक 32-byte एन्क्रिप्शन key, एक 32-byte HMAC key, और एक 16-byte IV में विभाजित किया जाता है।
  2. Encryption — Plaintext को AES-256-CTR के साथ derived key और IV का उपयोग करके एन्क्रिप्ट किया जाता है।
  3. Authentication — Ciphertext पर एक HMAC-SHA256 compute किया जाता है ताकि integrity को ensure किया जा सके।
  4. Encoding — Salt, HMAC digest, और ciphertext को hex-encode किया जाता है और $ANSIBLE_VAULT;1.1;AES256 हेडर के तहत combine किया जाता है।

Decryption प्रक्रिया को reverse करता है: पासवर्ड एक ही keys को re-derive करता है, HMAC को verify करता है, और ciphertext को decrypt करता है।

सीमाएं

  • केवल Ansible Vault 1.1 format को AES-256 एन्क्रिप्शन के साथ support करता है
  • Multi-password setups के लिए vault ID labels को support नहीं करता
  • बड़ी फ़ाइलें CPU-intensive key derivation step के कारण brief UI delays का कारण बन सकती हैं