الأمان والعزل
كيف تعزل alawadi.cloud كل مشروع وتُشغّل كل تطبيق دون صلاحيات الجذر (root)، مع فرض ذلك عند القبول، بحيث لا يمكن تشغيل حزمة Docker تعمل بصلاحيات الجذر أو مُمتازة.
عزل المستأجرين
يعمل كل مشروع في مساحة أسماء معزولة خاصة به مع شبكة خاصة. بشكل افتراضي، لا شيء خارج المشروع يمكنه الوصول إلى خدماتك، وخدماتك لا يمكنها الوصول إلى مستأجر آخر. يُنشأ كل مشروع وقد طُبّقت عليه مسبقاً سياسة شبكة بالرفض الافتراضي (default-deny)، وحصص للموارد، ووصول محدود النطاق. لست بحاجة إلى ضبط أي من هذا.
غير مُمتاز بشكل افتراضي
يعمل كل تطبيق Docker في وضع مُقيّد بالكامل. لا تحتاج إلى تفعيل ذلك، ولا يمكنك تعطيله:
- دون صلاحيات الجذر (root) فقط. التطبيق الذي يحاول العمل بصلاحيات الجذر لن يبدأ. أضف
USERغير مُمتاز إلى ملفDockerfileالخاص بك (راجع متطلبات حزمة Docker). - لا وضع مُمتاز ولا تصعيد للصلاحيات.
- لا وصول إلى المضيف. لا شبكة مضيف، ولا host PID، ولا نظام ملفات المضيف، ولا تحميلات
hostPath، ولا مقبس Docker. - إسقاط جميع capabilities في Linux، مع ملف تعريف seccomp بقيمة
RuntimeDefault. - نظام ملفات الجذر للقراءة فقط. اكتب الملفات المؤقتة إلى
/tmp.
هذه هي ضوابط معيار أمان الـ Pod المُقيّد (restricted) في Kubernetes. يُفرَض عند القبول على كل مساحة أسماء للمستأجرين، وتقوم طبقة سياسات مستقلة بإعادة التحقق باستمرار من المعيار نفسه على كل حمل عمل قيد التشغيل. تُرفض أي حزمة Docker تعمل بصلاحيات الجذر أو مُمتازة قبل أن تتمكن من العمل، على أكثر من طبقة.
الدفاع المتعمّق
لا يعتمد الفرض على إعداد واحد. يُطبَّق المعيار المُقيّد لكل مساحة أسماء ويُتحقَّق منه مرة أخرى، بشكل مستقل، عبر جميع أحمال عمل المستأجرين، بحيث لا يمكن لخطأ في إعداد إحدى الطبقات أن يسمح بمرور تطبيق مُمتاز بصمت.
سلسلة توريد الحزم
- تُسحب الحزم من مستودعك الخاص على المنصة.
- تشير عمليات النشر إلى وسم ثابت (immutable) لا يتغيّر (وليس
:latestأبداً)، وتُصرَّح عبر رموز GitHub OIDC قصيرة العمر، بحيث لا توجد أسرار طويلة العمر في خط الإنتاج (pipeline) لديك. راجع النشر من GitHub عبر OIDC. - يُضبط مصدر الحزمة عند القبول، بحيث لا تعمل في مشروعك إلا الحزم التي تملكها ورفعتها عبر خط الإنتاج الخاص بك.
الأسرار والاتصالات
- تُحقَن بيانات اعتماد قاعدة البيانات المُدارة في تطبيقك على هيئة متغيّرات البيئة مدعومة بمراجع أسرار Kubernetes. لا تُعرض كلمة المرور أبداً في لوحة التحكم أو في السجلّات.
- تحصل التطبيقات العامة على شهادة TLS مُدارة تلقائياً على اسم مضيفها
*.alawadi.cloudوعلى أي نطاق مخصّص تضيفه.
ماذا يعني هذا لحزمتك
ابنِ حزمة صغيرة دون صلاحيات الجذر تستمع على المنفذ 8080 وتكتب فقط إلى /tmp. تُنشئ البوابة ملف Dockerfile جاهزاً للإنتاج وسير عمل CI يستوفيان مسبقاً كل قاعدة أعلاه، لذا نادراً ما تضبط هذه الأمور يدوياً. راجع متطلبات حزمة Docker للاطلاع على القائمة الكاملة.