लॉन्चर उत्पाद Bitnami दस्तावेज़imaxe CLI ब्लॉग संपर्क
imaxe secrets सीक्रेट्स v1.0.0

लोकल सीक्रेट्स, डिफ़ॉल्ट रूप से सुरक्षित

एक CSPRNG और 0600 अनुमतियों के साथ इंस्टेंस के सीक्रेट्स (पासवर्ड, passphrases, कुंजियाँ) जनरेट करें, पढ़ें और रोटेट करें। सीरीज़ में बनी AMIs पर idempotent: generate सीक्रेट को केवल तभी बनाता है जब वह मौजूद न हो, और get pipe के लिए साफ़ आउटपुट देता है।

$ imaxe secrets generate mariadb --len 32 --format password
संस्करण
v1.0.0
सबकमांड
4
कॉन्फ़िग
/etc/imaxe/secrets.yml
root आवश्यक
हाँ
अनुमतियाँ
0600

यह मॉड्यूल क्या करता है #

आपके इंस्टेंस की लगभग हर सेवा को एक सीक्रेट की ज़रूरत होती है: डेटाबेस का पासवर्ड, किसी इंटीग्रिटी टूल की passphrase, एक API कुंजी… इन्हें हाथ से सहेजना —या इससे भी बुरा, डिफ़ॉल्ट पर छोड़ देना— किसी मशीन के समझौता होने के सबसे आम तरीकों में से एक है।

secrets मॉड्यूल इस जीवन-चक्र को लोकल स्तर पर संभालता है: प्रत्येक सीक्रेट को एक क्रिप्टोग्राफ़िक रूप से सुरक्षित जनरेटर (CSPRNG) से जनरेट करता है, उसे 0600 अनुमतियों के साथ सहेजता है (केवल root ही उसे पढ़ सकता है), उसे pipe में जोड़ने के लिए तैयार साफ़ आउटपुट के साथ लौटाता है, और ज़रूरत पड़ने पर उसे रोटेट करता है। सब कुछ डोमेन के अनुसार व्यवस्थित होता है (उदाहरण के लिए mariadb या tripwire), और प्रत्येक डोमेन में कई फ़ील्ड हो सकते हैं।

सीरीज़ में बनी AMIs पर डिफ़ॉल्ट रूप से सुरक्षित

generate idempotent है: यदि किसी डोमेन का सीक्रेट पहले से मौजूद है, तो वह उसे नहीं छूता। इस तरह, एक ही इमेज प्रत्येक इंस्टेंस के पहले बूट पर अपने सीक्रेट बना सकती है, बिना इसके कि दो मशीनें एक ही पासवर्ड साझा करें। मान कभी भी लॉग नहीं होते और list में नहीं दिखते।

त्वरित गाइडचरण-दर-चरण कार्य

सामान्य कार्य #

चुनें कि आप क्या करना चाहते हैं। प्रत्येक रेसिपी में कमांड पहले से लिखा हुआ आता है — बस डोमेन को अपने डोमेन से बदलें और कॉपी करें दबाएँ।

1

किसी सेवा का सीक्रेट जनरेट करें

किसी डोमेन के लिए एक मज़बूत पासवर्ड बनाएँ, केवल तभी जब वह अभी तक मौजूद न हो।

अपने सर्वर से ubuntu उपयोगकर्ता के साथ SSH द्वारा कनेक्ट करें।

mariadb डोमेन का सीक्रेट जनरेट करें। idempotent होने के कारण, आप इसे जितनी बार चाहें चला सकते हैं, ओवरराइट होने के डर के बिना:

terminal
$ sudo imaxe secrets generate mariadb

क्या आपको किसी अन्य टूल के लिए और किसी विशेष फ़ील्ड में एक लंबी passphrase चाहिए? --format, --len और --field को समायोजित करें:

terminal
$ sudo imaxe secrets generate tripwire --field local.passphrase --format passphrase --len 40
सीक्रेट 0600 अनुमतियों के साथ सहेज लिया जाता है। यदि वह पहले से मौजूद था, तो उसे बदला नहीं गया है — कमांड फिर भी सफलतापूर्वक समाप्त होता है।
2

उपयोग के लिए सीक्रेट पढ़ें

कच्चा मान प्राप्त करें, किसी अन्य कमांड में जोड़ने के लिए तैयार।

get केवल मान छापता है, बिना किसी सजावट या अतिरिक्त पंक्ति-विच्छेद के, ताकि आप उसे pipe के ज़रिए किसी अन्य प्रक्रिया को पास कर सकें:

terminal
$ sudo imaxe secrets get mariadb

क्या सीक्रेट डोमेन के किसी विशेष फ़ील्ड में है? उसे --field से बताएँ:

terminal
$ sudo imaxe secrets get tripwire --field local.passphrase
आउटपुट साफ़ है: आप PASS="$(sudo imaxe secrets get mariadb)" कर सकते हैं और इसे सीधे अपनी स्क्रिप्ट में उपयोग कर सकते हैं।
3

कोई सीक्रेट रोटेट करें

मान को एक नए मान से बदलें और डोमेन को रोटेटेड के रूप में चिह्नित करें।

डोमेन के लिए एक नया मान जनरेट करें। generate के विपरीत, rotate मौजूदा सीक्रेट को ज़रूर बदल देता है:

terminal
$ sudo imaxe secrets rotate mariadb
डोमेन रोटेटेड के रूप में चिह्नित हो जाता है (आप list में तारीख देखेंगे)। उस सेवा को get के नए मान के साथ अपडेट करना याद रखें जो उस सीक्रेट का उपयोग करती है।
4

देखें कि कौन-से डोमेन मौजूद हैं

बिना किसी मान को उजागर किए मेटाडेटा देखें।

डोमेन को उनके मेटाडेटा के साथ सूचीबद्ध करें (कब बनाए गए और कब रोटेट किए गए)। यह कभी भी सीक्रेट को स्वयं नहीं दिखाता:

terminal
$ sudo imaxe secrets list

क्या आपको इसे किसी स्क्रिप्ट या स्वचालित जाँच के लिए चाहिए? आउटपुट JSON में माँगें:

terminal
$ sudo imaxe secrets list --json
आप एक नज़र में देख लेते हैं कि इंस्टेंस कौन-से सीक्रेट्स प्रबंधित करता है और किन्हें रोटेट करना उचित है, बिना किसी मान को स्क्रीन या लॉग में लीक किए।
ध्यान दें कि मान कहाँ पहुँचता है

सीक्रेट डिस्क पर रहते हुए केवल root द्वारा ही पढ़ा जा सकता है। जैसे ही आप उसे get से पढ़ते हैं, वह आपके टर्मिनल और आपके shell में चला जाता है: उसे इतिहास (history) में, बेवजह एक्सपोर्ट किए गए एनवायरनमेंट वेरिएबल में, या लॉग में छोड़ने से बचें। "$(sudo imaxe secrets get mariadb)" जैसे सटीक कमांड प्रतिस्थापन को प्राथमिकता दें।

CLI संदर्भकमांड, फ्लैग और फाइलें

सारांश #

उपयोग
imaxe secrets <subcomando> [<dominio>] [--field CLAVE] [flags]

सभी सबकमांड को root विशेषाधिकार चाहिए (sudo का उपयोग करें) क्योंकि वे /etc/imaxe/ के अंतर्गत 0600 फाइलें पढ़ते और लिखते हैं। मशीन द्वारा पढ़ने योग्य आउटपुट के लिए, जो scripting के लिए उपयुक्त है, list में --json जोड़ें। याद रखें: get कच्चा मान बिना किसी सजावट के छापता है, pipe के लिए तैयार।

सबकमांड #

सबकमांडयह क्या करता हैप्रासंगिक फ्लैग
generateकिसी डोमेन का सीक्रेट बनाता है यदि वह मौजूद न हो (idempotent, CSPRNG)। डोमेन के बिना, generate_on_first_boot वाले सीक्रेट जनरेट करता है।--len, --format, --field
getकिसी सीक्रेट का मान साफ़ आउटपुट के साथ लौटाता है, pipe के लिए उपयुक्त।--field
rotateएक नया सीक्रेट जनरेट करता है और डोमेन को रोटेटेड के रूप में चिह्नित करता है।--field
listडोमेन और मेटाडेटा सूचीबद्ध करता है (बनाया गया, रोटेट किया गया)। मान कभी नहीं दिखाता।--json

तर्क और फ्लैग #

फ्लैगप्रकारडिफ़ॉल्टविवरण
<dominio>stringसीक्रेट का डोमेन (उदा. mariadb, tripwire)। get और rotate में अनिवार्य। generate में, खाली = generate_on_first_boot वाले डोमेन।
--fieldstringvalueडोमेन के भीतर का फ़ील्ड। प्रति डोमेन कई सीक्रेट सहेजने की अनुमति देता है (उदा. local.passphrase)।
--lenint32generate में: सीक्रेट की लंबाई वर्णों में।
--formatenumpasswordgenerate में: मान का प्रारूप — password, passphrase या hex
--jsonboolfalselist में, मेटाडेटा को stdout पर संरचित JSON के रूप में देता है।

फाइलें और पथ #

पथसामग्री
/etc/imaxe/secrets.ymlमॉड्यूल की कॉन्फ़िगरेशन: डिफ़ॉल्ट मान (length, format), डोमेन और generate_on_first_boot की सूची। यह 0600 अनुमतियों के साथ सहेजा जाता है।

secrets.yml का उदाहरण:

/etc/imaxe/secrets.yml
defaults:
  length: 32
  format: password
domains: {}
generate_on_first_boot:
  - mariadb
  - tripwire

इस कॉन्फ़िगरेशन के साथ, पहले बूट पर बिना डोमेन के एक sudo imaxe secrets generate mariadb और tripwire के सीक्रेट डिफ़ॉल्ट लंबाई और प्रारूप के साथ बनाता है।

एग्ज़िट कोड और लॉग #

प्रत्येक निष्पादन एक कोड लौटाता है जिसे आप echo $? से जाँच सकते हैं — स्क्रिप्ट में जोड़ने के लिए उपयोगी:

0OKऑपरेशन पूर्ण (बिना बदलाव वाले idempotent मामले सहित)।
1ERRसामान्य अवर्गीकृत त्रुटि। अनुमतियाँ और कॉन्फ़िग फाइल जाँचें।
2USAGEअमान्य या अनुपस्थित तर्क (उदा. डोमेन के बिना get)।
3NOTFOUNDअनुरोधित डोमेन या फ़ील्ड मौजूद नहीं है।

get के साफ़ आउटपुट का लाभ उठाते हुए, किसी स्क्रिप्ट में सामान्य उपयोग:

terminal
$ sudo imaxe secrets generate mariadb \
  && sudo imaxe secrets get mariadb | some-tool --stdin-password \
  || echo "falló con código $?"

समस्या निवारण #

लक्षणसंभावित कारणसमाधान
NOTFOUND आता है (कोड 3)डोमेन या --field अभी तक जनरेट नहीं किया गया है।पहले उसे secrets generate <dominio> से बनाएँ (और वही --field)।
USAGE आता है (कोड 2)get या rotate बिना डोमेन बताए चलाया गया।डोमेन को तर्क के रूप में पास करें; इन सबकमांड में यह अनिवार्य है।
generate मान नहीं बदलतासीक्रेट पहले से मौजूद था: generate डिज़ाइन के अनुसार idempotent है।यदि आप एक नया मान चाहते हैं, तो secrets rotate <dominio> का उपयोग करें।
पढ़ते समय Permission deniedफाइल 0600 है और आपने उसे बिना विशेषाधिकार के चलाया।कमांड को sudo के साथ चलाएँ; केवल root ही सीक्रेट तक पहुँचता है।

सीक्रेट्स मॉड्यूल में अटक गए?

हमें «imaxe <module> status --json» का आउटपुट भेजें और हम आपको जल्दी जवाब देंगे।

सहायता से संपर्क करें