لانچر مصنوعات Bitnami دستاویزاتimaxe CLI بلاگ رابطہ
imaxe secrets راز v1.0.0

مقامی راز، بطورِ طے شدہ محفوظ

انسٹینس کے رازوں (پاس ورڈز، passphrases، کلیدیں) کو ایک CSPRNG اور 0600 اجازتوں کے ساتھ تیار، پڑھتا اور بدلتا ہے۔ سلسلہ وار AMIs میں آئیڈیمپوٹنٹ: generate راز صرف اسی صورت بناتا ہے جب وہ موجود نہ ہو، اور get pipe کے لیے صاف نتیجہ دیتا ہے۔

$ imaxe secrets generate mariadb --len 32 --format password
ورژن
v1.0.0
ذیلی کمانڈز
4
Config
/etc/imaxe/secrets.yml
root درکار
ہاں
اجازتیں
0600

یہ ماڈیول کیا کرتا ہے #

آپ کے انسٹینس کی تقریباً ہر سروس کو ایک راز درکار ہوتا ہے: ڈیٹابیس کا پاس ورڈ، کسی انٹیگریٹی ٹول کی passphrase، کوئی API کلید… انہیں ہاتھ سے محفوظ کرنا —یا اس سے بھی بدتر، طے شدہ چھوڑ دینا— ان سب سے عام طریقوں میں سے ایک ہے جن سے کوئی مشین آخرکار سمجھوتہ شدہ ہو جاتی ہے۔

secrets ماڈیول اس زندگی کے دور کو مقامی طور پر سنبھالتا ہے: ہر راز کو ایک خفیہ نگاری کے لحاظ سے محفوظ جنریٹر (CSPRNG) کے ساتھ تیار کرتا ہے، اسے 0600 اجازتوں کے ساتھ محفوظ کرتا ہے (صرف root اسے پڑھ سکتا ہے)، اسے ایک صاف نتیجے کے ساتھ واپس دیتا ہے جو pipe میں جوڑنے کے لیے تیار ہوتا ہے، اور جب آپ کو ضرورت ہو تو اسے بدل دیتا ہے۔ سب کچھ ڈومینز کے حساب سے منظم ہوتا ہے (مثلاً mariadb یا tripwire)، اور ہر ڈومین کے کئی فیلڈز ہو سکتے ہیں۔

سلسلہ وار AMIs میں بطورِ طے شدہ محفوظ

generate آئیڈیمپوٹنٹ ہے: اگر کسی ڈومین کا راز پہلے سے موجود ہو تو اسے نہیں چھیڑتا۔ یوں، ایک ہی امیج اپنے راز ہر انسٹینس کے پہلے بوٹ پر بنا سکتی ہے، بغیر اس کے کہ دو مشینیں ایک ہی پاس ورڈ شیئر کریں۔ اقدار کبھی درج نہیں کی جاتیں اور نہ ہی list میں دکھائی جاتی ہیں۔

فوری گائیڈمرحلہ وار کام

عام کام #

جو کرنا چاہتے ہیں وہ منتخب کریں۔ ہر نسخہ پہلے سے لکھی کمانڈ لاتا ہے — بس ڈومین کو اپنے ڈومین سے بدلیں اور کاپی کریں دبائیں۔

1

کسی سروس کا راز تیار کریں

کسی ڈومین کے لیے مضبوط پاس ورڈ بنائیں، صرف اسی صورت جب ابھی موجود نہ ہو۔

SSH کے ذریعے ubuntu صارف کے ساتھ اپنے سرور سے جڑیں۔

mariadb ڈومین کا راز تیار کریں۔ آئیڈیمپوٹنٹ ہونے کے باعث، آپ اسے جتنی بار چاہیں چلا سکتے ہیں، اووررائٹ ہونے کے خوف کے بغیر:

ٹرمینل
$ sudo imaxe secrets generate mariadb

کیا آپ کو کسی اور ٹول کے لیے اور ایک مخصوص فیلڈ میں لمبی passphrase چاہیے؟ --format، --len اور --field ایڈجسٹ کریں:

ٹرمینل
$ sudo imaxe secrets generate tripwire --field local.passphrase --format passphrase --len 40
راز 0600 اجازتوں کے ساتھ محفوظ ہو جاتا ہے۔ اگر پہلے سے موجود تھا تو اسے تبدیل نہیں کیا گیا — کمانڈ پھر بھی کامیابی سے مکمل ہوتی ہے۔
2

راز کو استعمال کے لیے پڑھیں

خام قدر حاصل کریں، کسی اور کمانڈ میں جوڑنے کے لیے تیار۔

get صرف قدر ہی چھاپتا ہے، بغیر کسی سجاوٹ یا اضافی وقفے کے، تاکہ آپ اسے pipe کے ذریعے کسی اور عمل کو دے سکیں:

ٹرمینل
$ sudo imaxe secrets get mariadb

کیا راز ڈومین کے کسی مخصوص فیلڈ میں ہے؟ اسے --field سے بتائیں:

ٹرمینل
$ sudo imaxe secrets get tripwire --field local.passphrase
نتیجہ صاف ہوتا ہے: آپ PASS="$(sudo imaxe secrets get mariadb)" کر سکتے ہیں اور اسے براہِ راست اپنی اسکرپٹ میں استعمال کر سکتے ہیں۔
3

کوئی راز بدلیں

قدر کو نئی قدر سے بدل دیں اور ڈومین کو بدلا ہوا نشان زد کریں۔

ڈومین کے لیے نئی قدر تیار کریں۔ generate کے برعکس، rotate موجودہ راز کو ضرور بدل دیتا ہے:

ٹرمینل
$ sudo imaxe secrets rotate mariadb
ڈومین بدلا ہوا نشان زد ہو جاتا ہے (آپ کو list میں تاریخ نظر آئے گی)۔ یاد رکھیں کہ اس راز کو استعمال کرنے والی سروس کو get کی نئی قدر سے اپ ڈیٹ کریں۔
4

دیکھیں کون سے ڈومینز موجود ہیں

کوئی قدر ظاہر کیے بغیر میٹا ڈیٹا دیکھیں۔

ڈومینز کو ان کے میٹا ڈیٹا کے ساتھ فہرست کریں (کب بنے اور کب بدلے گئے)۔ راز خود کبھی نہیں دکھاتا:

ٹرمینل
$ sudo imaxe secrets list

کیا آپ کو یہ کسی اسکرپٹ یا خودکار جانچ کے لیے چاہیے؟ نتیجہ JSON میں طلب کریں:

ٹرمینل
$ 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کسی ڈومین کا راز بناتا ہے اگر موجود نہ ہو (آئیڈیمپوٹنٹ، CSPRNG)۔ ڈومین کے بغیر، generate_on_first_boot والے تیار کرتا ہے۔--len, --format, --field
getکسی راز کی قدر صاف نتیجے کے ساتھ واپس دیتا ہے، pipe کے لیے موزوں۔--field
rotateنیا راز تیار کرتا ہے اور ڈومین کو بدلا ہوا نشان زد کرتا ہے۔--field
listڈومینز اور میٹا ڈیٹا فہرست کرتا ہے (بنایا گیا، بدلا گیا)۔ اقدار کبھی نہیں دکھاتا۔--json

آرگیومنٹس اور فلیگز #

فلیگقسمطے شدہتفصیل
<dominio>stringراز کا ڈومین (مثلاً mariadb، tripwireget اور 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عمل مکمل ہوا (بغیر تبدیلی کے آئیڈیمپوٹنٹ کیس سمیت)۔
1ERRعام غیر درجہ بند خرابی۔ اجازتیں اور config فائل جانچیں۔
2USAGEغلط یا نامکمل آرگیومنٹس (مثلاً ڈومین کے بغیر get
3NOTFOUNDطلب کردہ ڈومین یا فیلڈ موجود نہیں۔

کسی اسکرپٹ میں عام استعمال، get کے صاف نتیجے سے فائدہ اٹھاتے ہوئے:

ٹرمینل
$ 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 بطورِ ڈیزائن آئیڈیمپوٹنٹ ہے۔اگر آپ کو نئی قدر چاہیے تو secrets rotate <dominio> استعمال کریں۔
پڑھتے وقت Permission deniedفائل 0600 ہے اور آپ نے اسے مراعات کے بغیر چلایا۔کمانڈ کو sudo کے ساتھ چلائیں؛ صرف root راز تک رسائی رکھتا ہے۔

کیا راز ماڈیول کے ساتھ اٹک گئے ہیں؟

«imaxe <module> status --json» کے آؤٹ پٹ کے ساتھ ہمیں لکھیں اور ہم فوراً جواب دیں گے۔

سپورٹ سے رابطہ کریں