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

تین کردار جو اس وقت سب کچھ مشترک کرتے ہیں

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

تینوں کو یکساں رسائی دینا ہی علامت کو الجھا دیتا ہے، کیونکہ پھر ان میں سے کوئی بھی باقیوں کو متاثر کر سکتا ہے۔ ایسا بلڈ کام جو ہائپر وائزر ساکٹ تک پہنچ سکتا ہے، وہ کام ہے جو VPN روک سکتا ہے۔ سروسز والا مہمان جس کا انتظامی نیٹ ورک تک راستہ ہو، سوئچ کی ترتیب بدل سکتا ہے۔ مسئلہ اختیارات کا ہے، اور عمل کی فہرست صرف وہ جگہ ہے جہاں یہ ظاہر ہوتا ہے۔ پہلے کرداروں کے نام رکھنے سے ہر اختیار کو رہنے کی جگہ ملتی ہے۔

نیچے دیا خاکہ اس تقسیم کا نقطہ آغاز ہے، نہ کہ اعلیٰ دستیابی کا وعدہ۔ اسے جانچنے والا مفروضہ سمجھیں، مکمل ڈیزائن نہیں۔

تین کردار تقسیم کریں، تین عمل نہیں

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

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

host
├─ vpn-gw      10.60.10.2/24   public 51820/udp only
├─ services    10.60.0.10/24   no route to the management network
└─ ci-runner   10.60.20.2/24   outbound only, no host socket

ٹوپولوجی لکھیں اور پھر اسے اُن اوزاروں سے جانچیں جو اس کے مالک ہیں۔ غلط برج پر نظر آنے والا مہمان ایک دریافت ہے، تفصیل نہیں۔ کسی بھی سروس کی ترتیب بدلنے سے پہلے نیٹ ورک درست کریں۔

VPN مہمان کو صرف اپنے دروازے کھولنے دیں

سرنگ کا پورٹ راؤٹر پر شائع کریں اور اس کے سوا کچھ نہیں۔ مہمانوں کے انتظامی پورٹ انتظامی راستے سے تعلق رکھتے ہیں، انٹرنیٹ سے نہیں، اور ہائپر وائزر کا اپنا انٹرفیس بھی وہیں آتا ہے۔

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

virsh net-list --all
virsh net-dumpxml lab-private
sudo nft list ruleset | grep -n -E '51820|10.60'

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

بلڈ کاموں کو مختلف قسم کی حد درکار ہے

CI کام مخزن کے زیرِ کنٹرول کمانڈز چلاتا ہے، اس لیے اس کا اعتماد اس پر منحصر ہے کہ کوڈ کون پش کر سکتا ہے۔ شیل ایگزیکیوٹر وہ کمانڈز ہوسٹ پر رنر کے صارف کے طور پر چلاتا ہے، جو دستیاب سب سے چوڑی حد ہے۔

کنٹینر ایگزیکیوٹر زیادہ تنگ ہیں، اور مراعات یافتہ کنٹینر اُن تنگوں میں سے ایک نہیں۔ رنر کو اپنے مہمان میں اپنے نیٹ ورکی دائرے کے ساتھ رکھیں، اور اسے صرف وہی آرٹیفیکٹ اور تعیناتی رسائی دیں جو کاموں کو درکار ہے۔ ایک بار استعمال ہونے والے کارکن رکھی گئی حالت کم کرتے ہیں؛ وہ رسائی یا رازوں کی نمائش کم نہیں کرتے۔ دونوں کو اب بھی واضح حدود چاہئیں۔

سروسز والا مہمان ڈیٹا کا مالک ہے، اس لیے اس کا بیک اپ منصوبہ ہی کام کرنا چاہیے۔ مخزن، اپ لوڈز اور ڈیٹا بیس کو ایک ہی شیڈول میں رکھیں۔ کام کی حالت پڑھنے کی بجائے بحالی کی جانچ کریں۔

اُس ناکامی کی منصوبہ بندی کریں جو تینوں مشترک کرتے ہیں

ایک ہوسٹ ایک ناکامی کا ڈومین ہے۔ ری بوٹ سرنگ اور ہر نجی سروس کو ایک ہی لمحے میں ہٹا دیتا ہے، اور اندر آنے کا راستہ سب سے زیادہ اہم اُس وقت ہوتا ہے۔

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

virsh list --all
systemctl is-active libvirtd
curl -sS -m 5 -o /dev/null -w '%{http_code}\n' https://10.60.0.10/
ss -ltnp | grep -E ':51820|:443'

عمل کے آغاز کی ترتیب راستوں اور DNS کے بارے میں کچھ ثابت نہیں کرتی، اس لیے یونٹ حالتوں کی بجائے راستے کی جانچ کریں۔ راستہ ہی وہ چیز ہے جس کی دور دراز صارف کو واقعی ضرورت ہے۔

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