جب بھی آپ Compose فائل شیئر کرتے ہیں، دو چیزیں موجود ہوتی ہیں: وہ جو آپ نے لکھی اور وہ جو کوئی آلہ متغیرات بدلنے کے بعد رینڈر کرتا ہے۔ دوسری اکثر پہلی سے زیادہ حساس ہوتی ہے، اور لوگ بغیر پڑھے اسی کو مسئلہ رپورٹ میں چسپاں کرتے ہیں۔ اگر آپ صرف سورس فائل کا جائزہ لیں تو غلط دستاویز کا جائزہ لیتے ہیں۔

یہ طے کرنے سے پہلے کہ کیا ہٹانا ہے، موازنہ کریں کہ ہر کاپی میں کیا ہو سکتا ہے۔

رینڈر شدہ ماڈل ایک اور دستاویز ہے

Compose ماحولیاتی متغیرات حل کرتا ہے، اوور رائیڈ فائلیں یکجا کرتا ہے اور ایک مؤثر کنفیگریشن بناتا ہے جسے قاری اب ہاتھ سے لکھی قدروں سے الگ نہیں پہچان سکتا۔ ماخذ میں متغیر کے نام جیسا حوالہ آؤٹ پٹ میں خود اکاؤنٹ کا ٹوکن بن جاتا ہے۔ وہ ڈھانچہ جو فائل کو تشخیص کے لیے مفید بناتا ہے اُس تبدیلی سے بچ جاتا ہے؛ جو کچھ کبھی اس میں نہیں ہونا چاہیے تھا وہ بھی بچ جاتا ہے۔

منسلک کرنے سے پہلے فائل خود رینڈر کریں اور اُس آؤٹ پٹ کو وہی شے سمجھیں جس کا آپ جائزہ لے رہے ہیں۔ اگر آپ اسے رینڈر نہیں کر سکتے تو نہیں جان سکتے کہ کیا شائع کرنے جا رہے ہیں۔

راز کلید کے خانے کے علاوہ بھی کئی جگہوں پر ہوتے ہیں

ظاہر بات سے شروع کریں: نجی کلیدیں، پہلے سے شیئر کی گئی کلیدیں، ٹوکن، پاس ورڈ اور وہ کنکشن URL جن میں اسناد شامل ہوں۔ پھر ہر اُس چیز کو دیکھیں جس کی طرف فائل اشارہ کرتی ہے، کیونکہ حوالہ ہٹانا نہیں ہوتا۔ سروس میں ماؤنٹ شدہ env فائل، ہوسٹ سے بائنڈ شدہ کنفیگریشن فائل، ٹوکن رکھنے والا لیبل اور پاس ورڈ والا کمانڈ آرگیومنٹ، YAML صاف دکھنے پر بھی تعیناتی کے ساتھ جاتے ہیں۔ تسلی بخش نام والے متغیر میں چسپاں کلید بھی کلید ہی ہے۔

ہوسٹ پاتھ اور سروس کے نام دوسری قسم کی معلومات لیک کرتے ہیں۔ گھر کی ڈائریکٹری کا نام، اندرونی ہوسٹ نام یا نیٹ ورک رینج ایک بھی سند کے بغیر کسی شخص یا ادارے کی شناخت کر سکتے ہیں، اور وہ سیاق بھی اسی وجہ سے ہٹانے کے قابل ہے۔

راز کا اعلان خود راز نہیں

Compose کی راز اشیاء اعلان کو مواد سے الگ کرتی ہیں: سروس کو راستہ یا ہدف ملتا ہے اور مواد کہیں اور رہتا ہے۔ مواد بدلتے وقت اعلان رکھنا عام طور پر درست تبادلہ ہے، کیونکہ جائزہ لینے والے کو دیکھنا ہوتا ہے کہ راز موجود ہے اور کیسے ماؤنٹ ہوا ہے۔ بچنا نہیں چاہیے خود مواد۔

لیبل اور تبصرے بھی اسی سلوک کے حقدار ہیں۔ یہ بتانے والا تبصرہ کہ کون سا والٹ پاتھ پروڈکشن کلید رکھتا ہے، حملہ آور کو بتاتا ہے کہ کہاں دیکھنا ہے، اگرچہ اس میں کوئی کلید نہ ہو۔

شکل برقرار رکھیں تاکہ فائل اب بھی تشخیص کر سکے

وہ ریڈیکشن جو نیٹ ورک موڈ، امیج ورژن یا صلاحیت کی ترتیبات ہٹا دے، ایسی فائل بناتا ہے جسے کوئی ڈیبگ نہیں کر سکتا۔ حساس قدریں بدلیں اور تعلقات رکھیں: کون سی سروس کیا ماؤنٹ کرتی ہے، کس نیٹ ورک میں شامل ہوتی ہے، کون سی ڈیوائس درکار ہے۔ یہی وہ حصہ ہے جو قاری گمشدہ راستے یا دستیاب نہ ہونے والی ڈیوائس کی وضاحت کے لیے استعمال کرتا ہے۔ یہی وہ نسخہ بھی ہے جس کا موازنہ ساتھی اپنی چلتی تعیناتی سے کر سکتا ہے۔

docker compose -f compose.yaml config > rendered.yaml
grep -nE 'PRIVATE_KEY|PASSWORD|TOKEN|PSK|PrivateKey|passphrase' rendered.yaml
wc -l rendered.yaml

ریڈیکٹ شدہ کاپی کو ایسے تعینات نہ کریں جیسے وہ چلتی اصل ہو۔ یہ ایک وضاحت ہے، اور محفوظ دکھنے کے لیے ترمیم شدہ وضاحت ایسے طریقوں سے ناکام ہوگی جو کنفیگریشن کی خرابیوں جیسے لگتے ہیں۔

اگر مواد بے نقاب ہوا ہے تو اسے بدلیں

منسلکہ ہٹانا اُن کاپیوں کو نہیں ہٹاتا جو دوسروں نے پہلے ہی بنائی ہیں، اور آئینے اور کیش اپنی کاپیاں رکھتے ہیں۔ جو بھی لیک ہوا اُس کے لیے جاری کنندہ کا منسوخی اور تبدیلی کا عمل استعمال کریں، پھر تعیناتی کو تازہ کریں۔ ترتیب اہم ہے، کیونکہ پہلے تبدیلی اور بعد میں منسوخی دو درست اسناد والی کھڑکی چھوڑ دیتی ہے۔

سپورٹ تھریڈز میں درست خرابی، امیج ورژن، نیٹ ورک موڈ اور ایک اہم غیر راز ترتیب سے شروع کریں۔ یہ امتزاج گمشدہ ڈیوائس یا ٹوٹے راستے کی وضاحت کلید سے کہیں زیادہ بار کرتا ہے۔

متعلقہ مضامین