يعمل الأمان من خلال تطبيق GitHub الخاص بـ Coroid. تسرد هذه الصفحة ما يحتاج إليه التطبيق
لأمان، وما يتعلّق بـ Coroid Security تقارير الفحص، وكيف تجعل GitHub يطلب تفعيله، وكيف تظهر تنبيهات الأمان الخاصة بـ GitHub في أمان.
الأذونات
يستخدم أمان الأذونات التي يمتلكها التطبيق بالفعل لمستودعاتك: قراءة الكود وطلبات السحب، وكتابة نتائج الفحص. هذه أذونات اختيارية، وكل منها يضيف وظيفة معينة:
| الإذن | ما الذي يضيفه | بدونه |
|---|---|---|
| صفوف الدمج: للقراءة فقط، مع حدث مجموعة الدمج | Coroid Security على عمليات إرسال صفوف الدمج | لا تحصل صفوف الدمج على نتيجة فحص Coroid Security النتيجة |
| تنبيهات Dependabot: للقراءة فقط، مع حدثها | يستورد تنبيهات Dependabot | غير مستوردة |
| تنبيهات فحص الكود: للقراءة فقط، مع حدثها | يستورد تنبيهات فحص الكود الخاصة بـ GitHub | غير مستوردة |
| تنبيهات فحص السرية: للقراءة فقط، مع حدثها | يستورد تنبيهات فحص السرية الخاصة بـ GitHub، دون قيم السرية | غير مستوردة |
عندما يطلب التطبيق إذنًا جديدًا، يطلب GitHub من مالك المؤسسة قبوله لتثبيته. وحتى ذلك الحين، تُظهر صفحة نظرة عامة في أمان المستودعات التي تفتقد هذا الإذن، مع رابط للتثبيت على GitHub.
كما يقرأ Coroid ما إذا كان كل مستودع عامًا أو خاصًا، من أحداث GitHub ومن خلال الاستفسار عن GitHub، لتحديد ما يمكن نشره هناك. انظر إلى الإفصاح.
فحص أمان Coroid
Coroid Security هو فحص واحد، له اسم واحد، سواء تم تشغيله بشكل مستقل أو كجزء من رسم تدفق التسليم للمشروع في ضبط الجودة، بحيث يمكن للمستودع طلب تفعيله مرة واحدة. يُبلغ عن الضمانات التي تتحقق من كل تغيير: التبعيات المعرضة للخطر والسرريات المكشوفة. الأخطر منهما هو الذي يحدد النتيجة. تُبلغ تقارير فحص الكود عبر فحوصات ضبط الجودة، وتُراجع عبر فحص المراجعة الخاص بـ Coroid.
يعمل على مستودعات GitHub المتصلة عبر التطبيق:
- عند فتح طلب سحب في pull request أو إعادة فتحه أو تحديثه أو وضع علامة على أنه جاهز للمراجعة؛
- على كل عملية إرسال في صفوف الدمج، مع إذن صفوف الدمج؛
- عندما يعيد أحدهم تشغيله على GitHub.
يظهر كعملية جارية بمجرد وصول الحدث. يؤدي النقر على تفاصيله إلى فتح المشروع في أمان.
ما الذي يُبلغ عنه
| الحالة | مُطبق | للمراقبة فقط |
|---|---|---|
| تغطية كاملة للتغيير، لا شيء عند أو أعلى من العتبة | نجاح | نجاح |
| وجود نتيجة عند أو أعلى من العتبة | فشل | محايد، مع تسمية النتيجة |
| فشل الفحص أو عدم إمكانية تشغيله، أو أن الملف الذي يلمسه التغيير مغطى جزئيًا فقط، أو عدم إمكانية قراءة الإعدادات | فشل، مع ذكر السبب وكيفية إعادة التشغيل | محايد، مع ذكر السبب |
| لا توجد نتيجة خلال 10 دقائق | فشل، "انتهى الوقت" | محايد |
| جميع الضمانات معطلة للمشروع | محايد | محايد |
لا يتم تصنيفه أبدًا كـ "متخطى": يعتبر GitHub فحصًا مطلوبًا مُتخطىً ناجحًا، لذا فإن الضمان المُطبق الذي لم يُشغل يُقرأ كنجاح. الفحص المطلوب يحصل دائمًا على إحدى النتائج المذكورة أعلاه، لذا لا تنتظر صفوف الدمج إلى الأبد.
يحسب الفحص فقط ما يضيفه التغيير، وليس النتائج الموجودة مسبقًا في الفرع الأساسي. ولا يذكر نص الفحص أي نتيجة غير عامة؛ بل يذكر عدد النتائج التي تم العثور عليها، والعتبة المحددة، وأن التفاصيل موجودة في Coroid.
طلب تفعيل فحص أمان Coroid
تطبيق الضمان يجعل الفحص يفشل. يمنع GitHub الدمج فقط إذا طلب المستودع تفعيل الفحص:
- حماية الفرع: في إعدادات المستودع → فروع، قم بتحرير القاعدة الخاصة بالفرع الافتراضي، وفعّل طلب اجتياز فحوصات الحالة قبل الدمج، وأضف
Coroid Security. - مجموعات القواعد: في إعدادات → قواعد → مجموعات القواعد، أضف طلب اجتياز فحوصات الحالة إلى مجموعة القواعد الخاصة بالفرع الافتراضي، أضف
Coroid Security، واختر تطبيق GitHub الخاص بـ Coroid كمصدر له. - صفوف الدمج: اطلب تفعيل الفحص في نفس القاعدة. يحتاج التطبيق إلى إذن صفوف الدمج ليتم تشغيل الفحص على عمليات إرسال صفوف الدمج.
اطلبه عندما تكون الحمايات التي ترغب في تطبيقها قيد التشغيل بالفعل. إنه تحقق إلزامي يظل ساريًا حتى لو لم يتم تنفيذه.
تنبيهات أمان GitHub
مع تنبيهات أمان GitHub في قسم الأمان → الإعدادات وبالاعتماد على الصلاحيات المذكورة أعلاه، يقوم نظام الأمان باستيراد تنبيهات Dependabot ومسح الكود ومسح السرية كملاحظات حول نفس النتائج التي تنتج عن عمليات المسح الخاصة بـ Coroid. تصل التنبيهات الجديدة عندما يرسلها GitHub، ويقوم Coroid بقراءة تنبيهات كل مستودع مرة واحدة يوميًا.
- تم استيرادها، ولم يتم تأكيدها. التنبيه الذي لم تؤكده عمليات المسح الخاصة بـ Coroid يظهر نصاً يقول "تم استيراده من GitHub، ولم يتم تأكيده بعد". يتم سرده وحسابه، ولا يُرسل إشعارًا أو يمنع أي عملية حتى تؤكد عمليات مسح Coroid صحته.
- المصادر غير متوافقة. عندما تختلف تقارير GitHub وCoroid حول نتيجة معينة، يتم ذكر ذلك في النتيجة مع عرض حالة كل مصدر: موجود، غير موجود، تم تجاهله، أو لا يمكن قراءته.
- كل مصدر يغلق التنبيهات بطريقته الخاصة. يتم إغلاق تنبيه Dependabot في GitHub عندما لا يحتوي الفرع الافتراضي على النسخة الضعيفة بعد الآن. أما تنبيه مسح الكود فيتم إغلاقه عندما يتوقف تحليل الفرع الافتراضي عن الإبلاغ عنه. بينما يظل تنبيه مسح السرية مفتوحًا حتى يقوم أحدهم بحله في GitHub، لذا فإن دمج الإصلاح لا يؤدي إلى إغلاقه.
- فقدان الصلاحية. إذا فقد التطبيق صلاحية ما أو قام GitHub بإيقاف تشغيل ميزة معينة، فإن النتائج التي أبلغ عنها ذلك المصدر فقط ستظهر حالتها كـ "حالة غير معروفة منذ" ذلك الوقت، ولن يتم إغلاق أي تنبيه.
تعرض نظرة عامة، لكل مستودع ومصدر، ما إذا كانت تنبيهاته قد تم قراءتها، أو أن الصلاحية مفقودة، أو أن الميزة مُعطلة في GitHub، أو أن المستودع غير قابل للوصول إليه.