gVisor
gVisor عبارة عن بيئة معزولة مفتوحة المصدر للحاويات، طورتها جوجل، وتركز على الأمان والكفاءة وسهولة الاستخدام. [ 1 ] [ 2 ] توفر gVisor عزلاً مشابهاً للعزل الافتراضي مع الحفاظ على كفاءة استخدام موارد الحاويات القياسية. تعترض gVisor استدعاءات نظام التطبيقات وتنفذ جزءًا كبيرًا من واجهة برمجة تطبيقات نظام لينكس (ABI) في مساحة المستخدم ، مما يوفر أمانًا إضافيًا مقارنةً بالحاويات القياسية التي تعمل مباشرةً فوق نواة لينكس وتعتمد فقط على مساحات الأسماء للعزل . [ 3 ] [ 4 ] على عكس نواة لينكس، كُتبت gVisor بلغة البرمجة Go الآمنة للذاكرة لتجنب الأخطاء الشائعة التي تحدث غالبًا في البرامج المكتوبة بلغة C. [ 5 ] تشمل الميزات الحديثة للمنصة وظائف نقاط التحقق/الاستعادة، وتكامل مراقبة وقت التشغيل (كما هو الحال مع Falco)، وعزل وحدة معالجة الرسومات/CUDA لأحمال عمل الذكاء الاصطناعي/التعلم الآلي. [ 6 ]
بحسب جوجل [ 7 ] وبراد فيتزباتريك [ 8 ]، يُستخدم gVisor على نطاق واسع في بيئة الإنتاج الخاصة بجوجل، بما في ذلك بيئة App Engine القياسية، ووظائف السحابة، و Google Cloud Run [ 9 ] . علاوة على ذلك، يتكامل gVisor مع Google Kubernetes Engine (GKE Sandbox)، مما يسمح للمستخدمين بعزل وحدات Kubernetes الخاصة بهم في بيئات معزولة لحالات استخدام مثل SaaS وتعدد المستأجرين [ 10 ] .
إلى جانب جوجل، تعتمد العديد من المؤسسات gVisor لتأمين بنية الحاويات والتطبيقات الخاصة بها. ومن أبرز هذه المؤسسات DigitalOcean لمنصة تطبيقاتها، وCloudflare لإنشاء صفحات Cloudflare، وشركات الذكاء الاصطناعي مثل OpenAI و Anthropic لتنفيذ التعليمات البرمجية غير الموثوقة أو المهام عالية المخاطر بأمان. بالإضافة إلى ذلك، تعتمد مشاريع مثل Docker (في إصدار سطح المكتب لنظام Mac) و Tailscale على مكتبة حزمة الشبكة الخاصة بـ gVisor لشبكات مساحة المستخدم. [ 11 ]
بنيان
يعمل gVisor كنواة تطبيق، حيث يعترض ويتعامل مع استدعاءات النظام وأخطاء الصفحات من عبء العمل المعزول نفسه، بدلاً من تمريرها إلى نواة لينكس المضيفة . [ 12 ]
- يُعدّ Sentry المكوّن الأساسي لنظام gVisor. وهو نواة تعمل في مساحة المستخدم، مكتوبة بلغة Go ، تُنفّذ مجموعة كبيرة من واجهة استدعاءات نظام Linux ، بالإضافة إلى أنظمة فرعية مثل إدارة العمليات، ومعالجة الإشارات، والشبكات. وتعمل هذه المنطق بالكامل ضمن كود gVisor الآمن للذاكرة، بدلاً من تفويضها إلى نواة النظام المضيف. [ 12 ] [ 13 ]
- يُعدّ Gofer عمليةً جانبيةً منفصلةً ذات صلاحياتٍ أعلى قليلاً، تتوسط الوصول إلى نظام ملفات المضيف. لا يستطيع Sentry فتح ملفات المضيف مباشرةً؛ إذ تُرسَل عمليات الملفات إلى Gofer عبر بروتوكول 9P ، مما يُضيف طبقةً أخرى من العزل بين بيئة الحماية وموارد المضيف. [ 12 ]
لتقليل مساحة الهجوم المعرضة للمضيف، يعمل Sentry تحت مرشح seccomp مقيد وفي مساحات أسماء مستخدمين ووحدات تخزين معزولة ، بحيث تكون حتى مجموعة صغيرة من استدعاءات نظام المضيف التي يمكنه إجراؤها مقيدة بشدة. [ 12 ]
المنصات
يجب على gVisor اعتراض استدعاءات النظام الخاصة بالتطبيق المعزول وإعادة توجيهها إلى Sentry. وهو يُخفي هذه العملية خلف واجهة "منصة"، والتي يتم توفير اثنتين منها حاليًا:
- يستخدم Systrap ميزة النظام الفرعي seccomp
SECCOMP_RET_TRAP-bpf : حيث يقوم استدعاء نظام معزول بتفعيلSIGSYSإشارة تُسلّم التحكم إلى gVisor. لا يتطلب Systrap أي محاكاة افتراضية للأجهزة، ويعمل حتى داخل الأجهزة الافتراضية، مما يجعله الخيار الأكثر قابلية للنقل. حلّ Systrap محل منصة ptrace القديمة كمنصة افتراضية في منتصف عام 2023. [ 14 ]
- تستخدم KVM وظائف KVM الخاصة بنواة النظام ، مما يسمح لـ Sentry بالعمل كنواة ضيف ومراقب للآلة الافتراضية. تُحقق أفضل أداء على الخوادم المادية، لكنها تعاني من ضعف الأداء في ظل المحاكاة الافتراضية المتداخلة، وهي غير متاحة على الأجهزة التي تفتقر إلى ملحقات المحاكاة الافتراضية ذات الصلة. [ 14 ] لا تزال منصة ptrace الأصلية ، المبنية على
PTRACE_SYSEMU[اسم المنصة]، موجودة في قاعدة التعليمات البرمجية، لكنها لم تعد مدعومة. [ 14 ]
أداء
نظرًا لأن Sentry يعترض ويعيد تشغيل استدعاءات النظام، فإن gVisor يضيف عبئًا إضافيًا يقع بشكل رئيسي على أحمال العمل التي تتطلب استدعاءات نظام مكثفة وعمليات إدخال/إخراج مكثفة، بينما يكون تأثيره ضئيلاً على أحمال العمل التي تبقى ضمن نطاق عناوينها الخاص. وتشير وثائق gVisor نفسها إلى أن الوصول الخام إلى الذاكرة وعمليات الإدخال/الإخراج المتسلسلة للقرص لا تُسبب أي عبء هيكلي كبير بمجرد إنشاء عمليات الربط. [ 15 ]
وجدت دراسة حالة مستقلة أجرتها USENIX أن المكالمات التي تصل إلى المضيف أو Gofer كانت أبطأ بكثير من العمليات التي تتم معالجتها بالكامل داخل Sentry، وخلصت إلى أن أحمال العمل التي تعتمد بشكل كبير على استدعاءات النظام يجب أن تتجنب منصة ptrace. [ 13 ]
مراجع
- ↑ منصة جوجل السحابية: إتاحة gVisor كمصدر مفتوح، وهو بيئة تشغيل حاويات معزولة
- ↑ "gvisor.dev" . gvisor.dev . تم الاسترجاع بتاريخ 28-05-2019 .
- ↑ "تحديثات في عزل الحاويات" . LWN.net . تم الاطلاع عليه بتاريخ 18 فبراير 2019 .
- ↑ "العزل باستخدام gVisor" . 17 يونيو 2018. تم الاطلاع عليه في 18 فبراير 2019 – عبر Medium .
- ↑ كاتلر، كودي؛ كاشوك، إم. فرانس؛ موريس، روبرت تي. (2018). فوائد وتكاليف كتابة نواة POSIX بلغة برمجة عالية المستوى . الصفحات 89-105 . ISBN 978-1-939133-08-3.
- ↑ "الميزات - gVisor" . gvisor.dev . تم الاطلاع عليه بتاريخ 2026-06-03 .
- ↑ "GKE Sandbox: تعزيز الدفاع المتعمق لوحداتك" . مدونة جوجل كلاود . تم الاطلاع عليه بتاريخ 28 مايو 2019 .
- ↑ "حساب براد فيتزباتريك على تويتر" . تم الاطلاع عليه بتاريخ 18 فبراير 2019 – عبر تويتر .
- ↑ "عقد وقت تشغيل الحاويات | Cloud Run" . Google Cloud . تم الاسترجاع في 10 أبريل 2019 .
- ↑ "GKE Sandbox" . جوجل كلاود . تم الاسترجاع في 28-05-2019 .
- ↑ "من يستخدم gVisor" . gvisor.dev . تم الاطلاع عليه بتاريخ 2026-06-03 .
- 1 2 3 4 "مقدمة إلى أمان gVisor" . gvisor.dev . تم الاطلاع عليه بتاريخ 25 يونيو 2026 .
- 1 2 لي، يووي؛ وآخرون . (2024). “G-Fuzz: إطار عمل موجه لـ gVisor”. أرخايف : 2409.13139 [ cs.CR ].
- 1 2 3 "دليل المنصة" . gvisor.dev . تم الاطلاع عليه بتاريخ 25 يونيو 2026 .
- ↑ "دليل الأداء" . gvisor.dev . تم الاطلاع عليه بتاريخ 25 يونيو 2026 .
- برنامج جوجل
- برنامج مجاني مكتوب بلغة Go
- واجهات برمجة تطبيقات لينكس
- برنامج يستخدم ترخيص أباتشي
