إدارة المشغّلات
في هذا القسم، يمكنك استكشاف الأدوات والاستراتيجيات المختلفة المتاحة لك في GitHub Enterprise Cloud وGitHub Enterprise Server لإدارة استخدام مشغلي GitHub Actions في مؤسستك.
اختيار مشغّل مناسب لحمل العمل
يمكن لنوعين من المشغلين تنفيذ مهام سير عمل GitHub Actions: المشغلون المستضافون على GitHub أو المشغلون المستضافون ذاتيا.
إشعار
تتوفر المشغّلات المستضافة بواسطة GitHub فقط لـ Enterprise Cloud. إذا كان لديك مثيل لـ "Enterprise Server"، فلن ينطبق هذا المقطع عليك.
يوفر المشغلون المستضافون على GitHub طريقة أسرع وأبسط لتشغيل مهام سير العمل الخاصة بك، بينما المشغلات المستضافة ذاتيا هي طريقة قابلة للتكوين للغاية لتشغيل مهام سير العمل في بيئتك المخصصة. على سبيل المثال، إذا كنت بحاجة إلى استخدام قائمة السماح لعنوان IP لمؤسستك أو تكوين جهاز متخصص لتشغيل مهام سير العمل، فاستخدم مشغلا مستضافا ذاتيا.
يقارن الجدول التالي المشغلين المستضافين على GitHub مقابل المشغلين المستضافين ذاتيا. استخدمه لاختيار مشغّل مناسب لحمل العمل.
| مشغلون تستضيفهم GitHub | مشغلون ذوو استضافة ذاتية |
|---|---|
| تلقي التحديثات التلقائية لنظام التشغيل، والحزم المثبتة مسبقاً والأدوات، والمشغّل المستضاف ذاتياً. | تلقي التحديثات التلقائية لتطبيق المشغّل المستضاف ذاتياً فقط. أنت مسؤول عن تحديث نظام التشغيل وجميع البرامج الأخرى. |
| GitHub المدارة والصيانة. | يمكنك استخدام الخدمات السحابية أو الأجهزة المحلية التي أنت مشترك فيها بالفعل. كما أنها قابلة للتخصيص وفقا لمتطلبات الأجهزة ونظام التشغيل والبرامج والأمان. |
| توفير مثيل واضح لكل تنفيذ لمهمة. | لا تحتاج إلى الحصول على مثيل نظيف لكل عملية تنفيذ للمهام. |
| استخدم الدقائق المجانية على خطة GitHub، تُطبق أسعار الدقيقة الواحدة بعد تجاوز الدقائق المجانية. | أحرار في الاستخدام مع GitHub Actions، ولكنك مسؤول عن تكلفة صيانة أجهزة المشغل الخاصة بك. |
إدارة المشغلات للمؤسسة
تتضمن إدارة المشغلين للمؤسسة تكوين وتأمين كل من المشغلين المستضافين على GitHub والمستضافين ذاتيا لضمان سير عمل CI/CD بكفاءة وأمان. تتضمن هذه الإدارة إعداد قوائم السماح ل IP للتحكم في الوصول، وتعزيز الأمان من خلال تقييد وصول المشغل إلى عناوين IP محددة، وضمان الامتثال للنهج التنظيمية. يعد التكوين المناسب لقوائم السماح ل IP لكل من المشغلين المستضافين على GitHub والمستضافين ذاتيا أمرا بالغ الأهمية للحفاظ على التفاعلات الآمنة والموثوقة بين التطبيقات الداخلية ومشغلي GitHub Actions. التحديثات والمراجعات المنتظمة لهذه التكوينات ضرورية للتكيف مع التغييرات في نطاقات عناوين IP والحفاظ على الأمان الأمثل.
تكوين قوائم السماح ل IP على مشغلات GitHub المستضافة والمستضافة ذاتيا
يساعد تكوين قوائم السماح ل IP على التحكم في الوصول إلى المشغلات عن طريق تقييدها بعناوين IP محددة. يعزز هذا التكوين الأمان عن طريق منع الوصول غير المصرح به ولكنه قد يتطلب المزيد من تكوينات الشبكة.
| مشغلون تستضيفهم GitHub | مشغلون ذوو استضافة ذاتية |
|---|---|
| يستخدم المشغلون المستضافون على GitHub عناوين IP ديناميكية، ما يجعل من الصعب تكوين قوائم السماح الدقيقة ل IP. | استخدم عناوين IP ثابتة أو خاضعة للرقابة، ما يسمح بقائمة السماح الدقيقة ل IP أو التحكم في الوصول المستند إلى IP. |
| يجب على المؤسسات السماح لنطاقات IP المنشورة في GitHub. | يمكن وضعها خلف جدران الحماية أو الشبكات الظاهرية الخاصة لمزيد من الأمان. |
| يمكن تقييد المشغلات المستضافة على GitHub باستخدام إعدادات أمان المؤسسة في GitHub. | تتطلب تكوينا صريحا للاتصال بالخدمات الخارجية، ما يعزز الأمان. |
قائمة IP المسموح بها
قائمة IP المسموح بها هي ميزة أمان تقيد الوصول إلى الخدمات أو الموارد استنادا إلى عناوين IP المعرفة مسبقا. عندما تقوم المؤسسات بتكوين قائمة السماح ل IP، يمكنها:
- تحسين الأمان: منع الوصول غير المصرح به عن طريق السماح بعناوين IP الموثوق بها فقط.
- التحكم في حركة مرور الشبكة: تقييد الطلبات الواردة والصادرة إلى عناوين IP المعروفة والمتحقق منها.
- تحسين التوافق: ضمان الامتثال التنظيمي من خلال الحد من الوصول إلى الشبكات المعتمدة.
| مشغلون تستضيفهم GitHub | مشغلون ذوو استضافة ذاتية |
|---|---|
| يجب على المؤسسات السماح لنطاقات IP المنشورة في GitHub، والتي تتغير بشكل دوري. | يمكن للمسؤولين تحديد عناوين IP محددة مسموح لها بالوصول إلى المشغلين. |
| يمكن تكوين المشغلات المستضافة على GitHub عبر إعدادات أمان GitHub. | يعمل المشغلون المستضافون ذاتيا بشكل جيد مع جدران الحماية أو الشبكات الظاهرية الخاصة أو مجموعات أمان السحابة. |
تكوين قوائم السماح IP للتطبيقات الداخلية للتفاعل مع مشغلي GitHub-Hosted
لتكوين قوائم السماح IP للتطبيقات والأنظمة الداخلية للتفاعل مع المشغلين المستضافين على GitHub، يمكنك الرجوع إلى وثائق GitHub الرسمية التالية:
1. فهم نطاقات عناوين IP الخاصة ب GitHub
تعمل المشغلات المستضافة على GitHub ضمن نطاقات عناوين IP محددة. للتأكد من أن تطبيقاتك الداخلية يمكنها التواصل مع هذه المشغلات، تحتاج إلى السماح لنطاقات IP هذه من خلال جدار الحماية الخاص بك. يوفر GitHub نقطة https://api.github.com/meta نهاية API التعريفية التي تسرد جميع نطاقات عناوين IP الحالية المستخدمة من قبل خدمات GitHub، بما في ذلك نطاقات IP لمشغلي الإجراءات. يعد تحديث قوائم السماح بانتظام استنادا إلى هذه المعلومات أمرا ضروريا، حيث يمكن تغيير نطاقات IP.
2. تكوين جدار الحماية
أ. الحصول على نطاقات IP الخاصة ب GitHub:
- استخدم نقطة نهاية meta API لاسترداد أحدث نطاقات عناوين IP المستخدمة من قبل مشغلي GitHub Actions.
ب. تحديث قواعد جدار الحماية:
- أضف قواعد إلى جدار الحماية للسماح بنسبة استخدام الشبكة الواردة والصادرة من وإلى نطاقات IP هذه. يضمن هذا التكوين أن الأنظمة الداخلية الخاصة بك يمكن أن تتفاعل مع المشغلات المستضافة على GitHub دون مشكلات في الاتصال.
3. النظر في استخدام المشغلات المستضافة ذاتيا
إذا كان الحفاظ على قائمة السماح IP للمشغلين المستضافين على GitHub أمرا صعبا بسبب التغييرات المتكررة في نطاقات IP، ففكر في إعداد المشغلات المستضافة ذاتيا داخل شبكتك. يسمح لك هذا الأسلوب بمزيد من التحكم في بيئة المشغل وتكوينات الشبكة. ومع ذلك، يتطلب استخدام المشغلات المستضافة ذاتيا المزيد من الصيانة وإدارة البنية الأساسية.
4. مراجعة قوائم السماح وتحديثها بانتظام
نظرا لأن نطاقات عناوين IP الخاصة ب GitHub يمكن أن تتغير، فمن الضروري مراجعة قوائم السماح لعنوان IP لجدار الحماية وتحديثها بشكل دوري. يمكن أن يساعد أتمتة هذه العملية عن طريق البرمجة النصية لاسترداد نطاقات IP من واجهة برمجة تطبيقات التعريف GitHub في ضمان بقاء قوائم السماح الحالية دون تدخل يدوي.
التأثيرات واتجاهات إساءة الاستخدام المحتملة لتمكين المشغلين المستضافين ذاتيا في المستودعات العامة
تأثيرات تمكين المشغلات المستضافة ذاتيا
التخصيص وتحسين الأداء
- تسمح المشغلات المستضافة ذاتيا بالتحكم في الأجهزة والبرامج المثبتة وإعدادات البيئة.
- يمكن تحسين مهام سير العمل للأداء باستخدام أجهزة مخصصة وعالية الأداء.
توفير التكاليف
- على عكس المشغلين المستضافين على GitHub (الذين لديهم استخدام مجاني محدود)، يعمل المشغلون المستضافون ذاتيا على البنية الأساسية الخاصة بك، ما يقلل من قيود التكلفة.
استمرارية الحالة
- لا تتم إعادة تعيين المشغلات المستضافة ذاتيا بين وظائف مثل المشغلات المستضافة على GitHub.
- يسمح بالتخزين المؤقت للتبعيات وإعادة استخدام مجموعات البيانات الكبيرة والحفاظ على الحالات الثابتة.
مسؤولية الأمان والصيانة
- تصبح تصحيحات الأمان وتحديثات التبعية ومراقبة النظام مسؤولية مالك المشغل.
- قد تعرض التكوينات الخاطئة المشغل لتهديدات خارجية.
متجهات إساءة الاستخدام المحتملة للمشغلين المستضافين ذاتيا
يؤدي تمكين المشغلين المستضافين ذاتيا في المستودعات العامة إلى مخاطر أمنية كبيرة. نظرا لأن أي شخص يمكنه تشغيل مهام سير العمل عن طريق إرسال طلب سحب، يمكن للمهاجمين استغلال هذه الميزة بطرق مختلفة:
تنفيذ التعليمات البرمجية العشوائية (RCE) من قبل جهات ضارة
- يمكن للمهاجمين إرسال طلبات سحب تحتوي على برامج نصية ضارة، والتي ينفذها المشغل المستضاف ذاتيا تلقائيا.
- إذا كان لدى المشغل امتيازات مرتفعة، يحصل المهاجم على وصول كامل إلى النظام.
استخراج العملات المشفرة واستغلال الموارد
- يمكن للمهاجمين إساءة استخدام المشغلات المستضافة ذاتيا لاستخراج العملة المشفرة، ما يتسبب في ارتفاع غير متوقع في استخدام وحدة المعالجة المركزية وGPU.
- وهذا يزيد من التكاليف التشغيلية ويقلل من توفر مهام سير العمل المشروعة.
سرقة بيانات النقل غير المصرح به وبيانات الاعتماد
- إذا تم تخزين الأسرار (مفاتيح API وبيانات اعتماد قاعدة البيانات ومفاتيح SSH) على المشغل، يمكن للمهاجمين استخراجها.
- مثال على متجه الهجوم: يمكن لطلب سحب ضار قراءة متغيرات البيئة المخزنة وإرسالها إلى خادم خارجي.
هجمات رفض الخدمة (DoS)
- يمكن للمهاجمين إغراق المستودع بالعديد من طلبات السحب للتحميل الزائد للمشغلين المستضافين ذاتيا.
- إذا كانت المشغلات تعمل على البنية الأساسية المشتركة، فقد يتم تعطيل مهام سير العمل الهامة الأخرى.
الحركة الجانبية واستغلال الشبكة
- إذا كان المشغل المستضاف ذاتيا داخل شبكة شركة، يمكن للمهاجم أن يحور في الأنظمة الداخلية.
- قد يؤدي إلى خروقات للبيانات أو هجمات برامج الفدية الضارة أو الوصول المستمر إلى الموارد الخاصة.
استراتيجيات التخفيف من المخاطر
لتقليل المخاطر الأمنية، اتبع أفضل الممارسات التالية:
- تقييد المشغلات المستضافة ذاتيا إلى المستودعات الخاصة فقط
- طلب الموافقة على سير العمل لطلبات السحب من المساهمين الخارجيين
- تشغيل المشغلات المستضافة ذاتيا في بيئة آمنة ومعزولة (على سبيل المثال، الحاويات والأجهزة الظاهرية)
- استخدام جدران الحماية وقواعد الشبكة لحظر الوصول غير المصرح به
- تقييد الوصول إلى الأسرار الحساسة وتخزين بيانات الاعتماد بشكل آمن
- مراقبة وتسجيل نشاط المشغل للكشف عن الحالات الشاذة
تحديد المشغلات المناسبة لدعم أحمال العمل
فهم مشغلي GitHub
تدعم إجراءات GitHub نوعين من المشغلين:
مشغلون تستضيفهم GitHub
- تتم إدارتها بواسطة GitHub، ويتم توفيرها وتوسيع نطاقها تلقائيا.
- يتضمن البرامج والأدوات والتبعيات المثبتة مسبقا لسير العمل الشائع.
- متوفر ل Windows وLinux وmacOS.
- يوصى به للأتمتة العامة والمشاريع مفتوحة المصدر والإعداد السريع.
مشغلون ذوو استضافة ذاتية
- يديره المستخدم، ما يوفر التحكم الكامل في البيئة والموارد.
- يمكن تكوينه للأجهزة المخصصة أو البنية الأساسية المحلية أو السحابية.
- يدعم الحالات الثابتة بين الوظائف، ما يسمح بالتخزين المؤقت والتبعيات المخصصة بشكل أفضل.
- يوصى به للمستودعات الخاصة وأحمال عمل المؤسسة والمهام كثيفة الأداء.
الاختيار بين المشغلين المستضافين على GitHub والمستضافين ذاتيا
يمكن لنوعين من المشغلين تنفيذ مهام سير عمل GitHub Actions: المشغلون المستضافون على GitHub أو المشغلون المستضافون ذاتيا.
إشعار
تتوفر المشغّلات المستضافة بواسطة GitHub فقط لـ Enterprise Cloud. إذا كان لديك مثيل لـ "Enterprise Server"، فلن ينطبق هذا المقطع عليك.
يوفر المشغلون المستضافون على GitHub طريقة أسرع وأبسط لتشغيل مهام سير العمل الخاصة بك، بينما المشغلات المستضافة ذاتيا هي طريقة قابلة للتكوين للغاية لتشغيل مهام سير العمل في بيئتك المخصصة. على سبيل المثال، إذا كنت بحاجة إلى استخدام قائمة السماح لعنوان IP لمؤسستك أو تكوين جهاز متخصص لتشغيل مهام سير العمل، فاستخدم مشغلا مستضافا ذاتيا.
يقارن الجدول التالي المشغلين المستضافين على GitHub مقابل المشغلين المستضافين ذاتيا. استخدمه لاختيار مشغّل مناسب لحمل العمل.
| مشغلون تستضيفهم GitHub | مشغلون ذوو استضافة ذاتية |
|---|---|
| تلقي التحديثات التلقائية لنظام التشغيل، والحزم المثبتة مسبقاً والأدوات، والمشغّل المستضاف ذاتياً. | تلقي التحديثات التلقائية لتطبيق المشغّل المستضاف ذاتياً فقط. أنت مسؤول عن تحديث نظام التشغيل وجميع البرامج الأخرى. |
| GitHub المدارة والصيانة. | يمكنك استخدام الخدمات السحابية أو الأجهزة المحلية التي أنت مشترك فيها بالفعل. كما أنها قابلة للتخصيص وفقا لمتطلبات الأجهزة ونظام التشغيل والبرامج والأمان. |
| توفير مثيل واضح لكل تنفيذ لمهمة. | لا تحتاج إلى الحصول على مثيل نظيف لكل عملية تنفيذ للمهام. |
| استخدم الدقائق المجانية على خطة GitHub، تُطبق أسعار الدقيقة الواحدة بعد تجاوز الدقائق المجانية. | أحرار في الاستخدام مع GitHub Actions، ولكنك مسؤول عن تكلفة صيانة أجهزة المشغل الخاصة بك. |
اختيار نظام التشغيل المناسب للمشغلين
1. مشغلات Linux (افتراضي)
- الأفضل لمعظم أحمال العمل
- سريع وفعال من حيث التكلفة ومدعم على نطاق واسع
- يستخدم في CI/CD والبرمجة النصية وDocker والأتمتة
مثال:ubuntu-latest،ubuntu-22.04
2. مشغلات Windows
- مطلوب لتطبيقات .NET والبرامج المستندة إلى Windows وGUI
- يدعم PowerShell، التبعيات الخاصة ب Windows
مثال:windows-latest،windows-2022
3. مشغلات macOS
- مشغلات macOS مطلوبة للإصدارات الخاصة ب iOS وmacOS وXcode وApple
- يدعم تطبيقات Swift و Objective-C و macOS
مثال:macos-latest،macos-13
أفضل الممارسات لتحديد المشغلين
- استخدم المشغلات المستضافة على GitHub لسير العمل العام والأتمتة.
- استخدم المشغلات المستضافة ذاتيا للبيئاتالمخصصة أو أحمال العمل الكبيرة أو التطبيقات الحساسة للأمان.
- اختر مشغلات Linux لمعظم أحمال العمل بسبب الأداء وكفاءة التكلفة.
- استخدم مشغلات Windows أو macOS فقط عند الحاجة للتوافق.
- تحديث المشغلات المستضافة ذاتيا ومراقبتها بانتظام لمنع المخاطر الأمنية.
تباين المشغلات المستضافة على GitHub والمستضافة ذاتيا
تدعم إجراءات GitHub نوعين من المشغلين لتنفيذ مهام سير العمل:
- المشغلات المستضافة على GitHub - تتم إدارتها بواسطة GitHub، ويتم توفيرها تلقائيا وتكوينها مسبقا باستخدام أدوات التطوير الشائعة.
- المشغلات المستضافة ذاتيا - يديرها المستخدم، مما يسمح بالتحكم الكامل في البيئة والموارد والتكوينات.
يسلط هذا القسم الضوء على الاختلافات الرئيسية بين المشغلين المستضافين على GitHub والمستضافين ذاتيا.
المقارنة: المشغلون المستضافون على GitHub مقابل المشغلون المستضافون ذاتيا
| ميزة | مشغل مستضاف على GitHub | مشغل مستضاف ذاتيا |
|---|---|---|
| الإعداد والصيانة | لا يلزم إعداد؛ يدير GitHub كل شيء | يجب على المستخدم تثبيت وتكوين وصيانة |
| قابلية التوسع | التحجيم التلقائي ديناميكيا | يجب توفير المشغلات المضافة يدويا |
| الأمان | أمان عال؛ بيئة ظاهرية جديدة لكل وظيفة | يتطلب تقوية الأمان يدويا |
| التخصيص | محدود; الأدوات المثبتة مسبقا فقط | قابل للتخصيص بالكامل؛ يمكن للمستخدم تثبيت أي تبعيات |
| اداء | موارد الحوسبة الموحدة | يمكن استخدام أجهزة عالية الأداء |
| استمرارية الحالة | إعادة التعيين بعد كل وظيفة | يمكن أن تستمر البيانات بين الوظائف |
| التكلفة | مجانا للمستودعات العامة؛ استخدام مجاني محدود للمستودعات الخاصة | لا توجد تكاليف GitHub، ولكنها تتطلب استثمارا في البنية الأساسية |
| الوصول إلى الشبكة | لا يوجد وصول مباشر إلى الشبكات الداخلية | يمكنه الوصول إلى الشبكات الداخلية/الخاصة |
| حالة الاستخدام | الأفضل للمشاريع العامة CI/CD والأتمتة والمصدر المفتوح | الأفضل لبيئات المؤسسة، والبنى الآمنة، وأحمال العمل الكبيرة |
الاختلافات والاعتبارات الرئيسية
1. الإعداد والصيانة
- تتطلب المشغلات المستضافة على GitHubإعدادا صفريا؛ يمكن للمستخدمين بدء تشغيل مهام سير العمل على الفور.
- يحتاج المشغلون المستضافون ذاتيا إلى التثبيت اليدوي والتكوين والتحديثات وإدارة الأمان.
2. المخاطر الأمنية
- تعمل المشغلات المستضافة على GitHub في أجهزة ظاهرية معزولة يتم إعادة تعيينها بعد كل مهمة، ما يقلل من أسطح الهجوم.
- تستمر المشغلات المستضافة ذاتيا عبر الوظائف، ما يعني أنه يمكن استغلال المشغل المخترق عبر عمليات تشغيل سير عمل متعددة.
3. اعتبارات الأداء والتكلفة
- يوفر المشغلون المستضافون على GitHub بيئة قياسية ولكن لديهم حدود استخدام (على سبيل المثال، دقائق مجانية شهريا للمستودعات الخاصة).
- تسمح المشغلات المستضافة ذاتيا بتحسين ضبط الأداء (على سبيل المثال، التشغيل على خوادم عالية الجودة) ولكنها تتطلب تكاليف البنية الأساسية والصيانة.
4. الشبكات والوصول
- لا يمكن لمشغلي GitHub المستضافين الوصول إلى الموارد الخاصة/الداخلية دون مزيد من التكوينات.
- يمكن للمشغلين المستضافين ذاتيا الوصول إلى الأنظمة الداخلية، ما يجعلها مثالية للمستودعات الخاصة والأدوات الداخلية والنشرات المحلية.
متى تستخدم كل مشغل؟
استخدم المشغلات المستضافة على GitHub إذا:
- تحتاج إلى إعداد سريع وسهل دون إدارة البنية الأساسية.
- لا يتطلب سير العمل تبعيات مخصصة تتجاوز الأدوات المثبتة مسبقا.
- أنت تعمل على مستودع مفتوح المصدر أو عام مع دقائق مشغل مستضافة مجانية.
استخدم المشغلات المستضافة ذاتيا إذا:
- يتطلب سير العمل الخاص بك تبعيات أو تكوينات أو حالات ثابتة محددة.
- تحتاج إلى الوصول إلى موارد الشبكة الخاصة (على سبيل المثال، قواعد البيانات المحلية والخدمات الداخلية).
- تحتاج إلى أجهزة أداء أعلىلمسارات CI/CD واسعة النطاق.