وثائق

أذونات GitHub وفحص أمان Coroid

ما هي أذونات تطبيق GitHub التي يستخدمها أمان، ولماذا؟ كيف يعمل فحص أمان Coroid، وكيف يمكن طلب تفعيله، وكيف يتم استيراد تنبيهات الأمان الخاصة بـ GitHub.

يعمل الأمان من خلال تطبيق 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 الدمج فقط إذا طلب المستودع تفعيل الفحص:

  1. حماية الفرع: في إعدادات المستودع → فروع، قم بتحرير القاعدة الخاصة بالفرع الافتراضي، وفعّل طلب اجتياز فحوصات الحالة قبل الدمج، وأضف Coroid Security.
  2. مجموعات القواعد: في إعدادات → قواعد → مجموعات القواعد، أضف طلب اجتياز فحوصات الحالة إلى مجموعة القواعد الخاصة بالفرع الافتراضي، أضف Coroid Security، واختر تطبيق GitHub الخاص بـ Coroid كمصدر له.
  3. صفوف الدمج: اطلب تفعيل الفحص في نفس القاعدة. يحتاج التطبيق إلى إذن صفوف الدمج ليتم تشغيل الفحص على عمليات إرسال صفوف الدمج.

اطلبه عندما تكون الحمايات التي ترغب في تطبيقها قيد التشغيل بالفعل. إنه تحقق إلزامي يظل ساريًا حتى لو لم يتم تنفيذه.

تنبيهات أمان GitHub

مع تنبيهات أمان GitHub في قسم الأمان → الإعدادات وبالاعتماد على الصلاحيات المذكورة أعلاه، يقوم نظام الأمان باستيراد تنبيهات Dependabot ومسح الكود ومسح السرية كملاحظات حول نفس النتائج التي تنتج عن عمليات المسح الخاصة بـ Coroid. تصل التنبيهات الجديدة عندما يرسلها GitHub، ويقوم Coroid بقراءة تنبيهات كل مستودع مرة واحدة يوميًا.

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

تعرض نظرة عامة، لكل مستودع ومصدر، ما إذا كانت تنبيهاته قد تم قراءتها، أو أن الصلاحية مفقودة، أو أن الميزة مُعطلة في GitHub، أو أن المستودع غير قابل للوصول إليه.