في Azure، يعبر التدفّق الوارد مجموعتي NSG: مجموعة الشبكة الفرعية، ثم مجموعة بطاقة الشبكة. ويجب أن تسمح به الاثنتان. وفي كل NSG، تُقرأ القواعد حسب الأولوية تصاعديًا وأول قاعدة مطابقة هي التي تقرّر.
أضاف سكربت التدقيق Deny-Internet-Audit (الأولوية 100، المصدر Internet، كل المنافذ) في
nsg-snet-web. وهي تمرّ قبل Allow-HTTPS-Internet (200): يُرمى التدفّق قبل أن يبلغ حتى
بطاقة الشبكة. ومن هنا انتهاء المهلة (NSG لا يُرجع رفضًا، بل يتجاهل الحزمة).
المسارات الأخرى خاطئة: NSG البطاقة يسمح فعلًا بـ 443، و run-command يُظهر nginx نشطًا
ويستمع، و DNS ما زال يشير إلى عنوان IP الثابت 20.199.48.73.
تمّ حلّ الحادث
التحليل والإصلاح
التصحيح: تضييق القاعدة الخاطئة على ما كان التدقيق يريد حجبه فعلًا (الإدارة)،
az network nsg rule update -g rg-zitouna-prod --nsg-name nsg-snet-web -n Deny-Internet-Audit --destination-port-ranges 22 3389،
أو حذفها بالأمر az network nsg rule delete.
التحقق: يُرجع az network watcher test-ip-flow … النتيجة Allow (القاعدة Allow-HTTPS-Internet)،
ثم يجيب curl -I https://api.zitouna-express.ma/health بـ 200.
حتى لا يتكرر ذلك:
- تشغيل سكربتات التدقيق في وضع التقرير (Azure Policy بالأثر
Audit) قبل أي وضعDeny؛ - وصف مجموعات NSG على شكل بنية تحتية كشيفرة (Bicep/Terraform) تُراجَع في مراجعة؛
- تشغيل
test-ip-flowعلى التدفّقات الحرجة بعد كل تغيير في الشبكة؛ - تنبيه Azure Monitor على
securityRules/writeفي مجموعات الإنتاج.