Allstar هو تطبيق GitHub الذي يراقب بشكل مستمر مؤسسات GitHub أو مستودعاته من أجل الالتزام بأفضل ممارسات الأمان. إذا اكتشف Allstar انتهاكًا لسياسة الأمان، فإنه يخلق مشكلة لتنبيه المستودع أو مالك المؤسسة. بالنسبة لبعض السياسات الأمنية، يمكن لـ Allstar أيضًا تغيير إعداد المشروع الذي تسبب في الانتهاك تلقائيًا، وإعادته إلى الحالة المتوقعة.
هدف Allstar هو منحك تحكمًا دقيقًا في الملفات والإعدادات التي تؤثر على أمان مشاريعك. يمكنك اختيار سياسات الأمان التي تريد مراقبتها على مستوى المؤسسة والمستودع، وكيفية التعامل مع انتهاكات السياسة. يمكنك أيضًا تطوير سياسات جديدة أو المساهمة فيها.
تم تطوير Allstar كجزء من مشروع OpenSSF Scorecard.
إذا كنت تواجه مشكلات غير مرغوب فيها أنشأها Allstar، فاتبع هذه التوجيهات لإلغاء الاشتراك.
Allstar قابل للتكوين بدرجة كبيرة. هناك ثلاثة مستويات رئيسية من الضوابط:
تتم هذه التكوينات في مستودع .allstar
الخاص بالمؤسسة.
مستوى الريبو: يمكن لمشرفي المستودعات في مؤسسة تستخدم Allstar اختيار اختيار مستودعهم في عمليات التنفيذ على مستوى المؤسسة أو خارجها. ملاحظة: لا تعمل عناصر التحكم على مستوى الريبو هذه إلا عندما يُسمح بـ "تجاوز الريبو" في إعدادات مستوى المؤسسة. تتم هذه التكوينات في دليل .allstar
الخاص بالمستودع.
مستوى السياسة: يمكن للمسؤولين أو المشرفين اختيار السياسات التي يتم تمكينها في عمليات إعادة الشراء المحددة والإجراءات التي يتخذها Allstar عند انتهاك السياسة. يتم إجراء هذه التكوينات في ملف سياسة yaml إما في مستودع .allstar
الخاص بالمؤسسة (المسؤولين)، أو دليل .allstar
الخاص بالمستودع (المشرفون).
قبل تثبيت Allstar على مستوى المؤسسة، يجب عليك أن تقرر تقريبًا عدد المستودعات التي تريد تشغيل Allstar عليها. سيساعدك هذا على الاختيار بين إستراتيجيتي الاشتراك وإلغاء الاشتراك.
تتيح لك إستراتيجية Opt In إضافة المستودعات التي ترغب في تشغيل Allstar عليها يدويًا. إذا لم تحدد أي مستودعات، فلن يتم تشغيل Allstar على الرغم من تثبيته. اختر استراتيجية Opt In إذا كنت تريد فرض السياسات على عدد صغير فقط من إجمالي مستودعاتك، أو تريد تجربة Allstar على مستودع واحد قبل تمكينه على المزيد. منذ الإصدار v4.3، تم دعم الكرات لإضافة مستودعات متعددة بنفس الاسم بسهولة.
تعمل إستراتيجية إلغاء الاشتراك (الموصى بها) على تمكين Allstar على جميع المستودعات وتسمح لك بتحديد المستودعات يدويًا لإلغاء الاشتراك في عمليات تنفيذ Allstar. يمكنك أيضًا اختيار إلغاء الاشتراك في جميع عمليات إعادة الشراء العامة أو جميع عمليات إعادة الشراء الخاصة. اختر هذا الخيار إذا كنت تريد تشغيل Allstar على جميع المستودعات في مؤسسة ما، أو تريد إلغاء الاشتراك في عدد صغير فقط من المستودعات أو نوع محدد (على سبيل المثال، عام مقابل خاص) من المستودع. منذ الإصدار v4.3، تم دعم الكرات لإضافة مستودعات متعددة بنفس الاسم بسهولة.
إلغاء الاشتراك (مستحسن) optOutStrategy = true | الاشتراك optOutStrategy = false | |
---|---|---|
السلوك الافتراضي | تم تمكين جميع اتفاقيات إعادة الشراء | لم يتم تمكين أي اتفاقيات إعادة الشراء |
إضافة المستودعات يدويًا | تؤدي إضافة عمليات إعادة الشراء يدويًا إلى تعطيل Allstar في عمليات إعادة الشراء تلك | تؤدي إضافة اتفاقيات إعادة الشراء يدويًا إلى تمكين Allstar في عمليات إعادة الشراء تلك |
تكوينات إضافية | optOutRepos: سيتم تعطيل Allstar في عمليات إعادة الشراء المدرجة optOutPrivateRepos: إذا كان هذا صحيحًا، فسيتم تعطيل Allstar في جميع اتفاقيات إعادة الشراء الخاصة optOutPublicRepos: إذا كان هذا صحيحًا، فسيتم تعطيل Allstar في جميع اتفاقيات إعادة الشراء العامة (optInRepos: سيتم تجاهل هذا الإعداد) | optInRepos: سيتم تمكين Allstar في اتفاقيات إعادة الشراء المدرجة (optOutRepos: سيتم تجاهل هذا الإعداد) |
تجاوز الريبو | إذا كان هذا صحيحًا: يمكن لـ Repos إلغاء الاشتراك في إجراءات Allstar الخاصة بمؤسستهم باستخدام الإعدادات الموجودة في ملف الريبو الخاص بهم. يتم تجاهل إعدادات الاشتراك على مستوى المؤسسة التي تنطبق على هذا المستودع. إذا كان خطأ: لا يمكن لمستودعات إعادة الشراء إلغاء الاشتراك في عمليات فرض Allstar كما تم تكوينها على مستوى المؤسسة. | إذا كان صحيحًا: يمكن لـ Repos الاشتراك في إجراءات تنفيذ Allstar الخاصة بمؤسستهم حتى لو لم يتم تكوينها لـ الريبو على مستوى المؤسسة. يتم تجاهل إعدادات إلغاء الاشتراك على مستوى المؤسسة التي تنطبق على هذا المستودع. إذا كان خطأ: لا يمكن لـ Repos الاشتراك في إجراءات تطبيق Allstar إذا لم يتم تكوينها على مستوى المؤسسة. |
يتضمن كل من خياري التشغيل السريع والتثبيت اليدوي تثبيت تطبيق Allstar. يمكنك مراجعة الأذونات المطلوبة. يطلب التطبيق الوصول للقراءة إلى معظم الإعدادات ومحتويات الملفات للكشف عن الامتثال الأمني. ويطلب الوصول للكتابة إلى المشكلات وعمليات التحقق حتى يتمكن من إنشاء مشكلات والسماح بإجراء block
.
سيؤدي خيار التثبيت هذا إلى تمكين Allstar باستخدام إستراتيجية إلغاء الاشتراك في جميع المستودعات في مؤسستك. سيتم تمكين جميع السياسات الحالية، وسوف ينبهك Allstar بانتهاكات السياسة عن طريق تقديم مشكلة. هذه هي الطريقة الأسرع والأسهل لبدء استخدام Allstar، ولا يزال بإمكانك تغيير أي تكوينات لاحقًا.
الجهد : سهل جدا
خطوات:
.allstar
هذا كل شيء! تم الآن تمكين جميع سياسات Allstar الحالية في جميع مستودعاتك. سوف يقوم Allstar بإنشاء مشكلة إذا تم انتهاك السياسة.
لتغيير أي تكوينات، راجع توجيهات التثبيت اليدوي.
سيرشدك خيار التثبيت هذا خلال إنشاء ملفات التكوين وفقًا لاستراتيجية Opt In أو Opt Out. يوفر هذا الخيار مزيدًا من التحكم الدقيق في التكوينات منذ البداية.
الجهد: معتدل
خطوات:
يمكن تكوين كل سياسة من خلال الإجراء الذي ستتخذه Allstar عندما تكتشف أن المستودع غير ملتزم.
log
: هذا هو الإجراء الافتراضي، ويحدث بالفعل لجميع الإجراءات. يتم تسجيل جميع نتائج وتفاصيل تشغيل السياسة. السجلات مرئية حاليًا لمشغل التطبيق فقط، وتجري مناقشة خطط الكشف عنها.issue
: يؤدي هذا الإجراء إلى إنشاء مشكلة في GitHub. يتم إنشاء مشكلة واحدة فقط لكل سياسة، ويصف النص تفاصيل انتهاك السياسة. إذا كانت المشكلة مفتوحة بالفعل، فسيتم إرسال تعليق إليها كل 24 ساعة دون تحديثات (غير قابلة للتكوين بواسطة المستخدم حاليًا). إذا تغيرت نتيجة السياسة، فسيتم ترك تعليق جديد حول المشكلة وربطه في نص المشكلة. بمجرد معالجة الانتهاك، سيتم إغلاق المشكلة تلقائيًا بواسطة Allstar خلال 5 إلى 10 دقائق.fix
: هذا الإجراء خاص بالسياسة. ستقوم السياسة بإجراء تغييرات على إعدادات GitHub لتصحيح انتهاك السياسة. لن تكون جميع السياسات قادرة على دعم ذلك (انظر أدناه).الإجراءات المقترحة، ولكن لم يتم تنفيذها بعد. سيتم إضافة تعريفات في المستقبل.
block
: يمكن لـ Allstar تعيين فحص حالة GitHub ومنع دمج أي علاقات عامة في المستودع في حالة فشل الفحص.email
: سيرسل Allstar بريدًا إلكترونيًا إلى مسؤول (مسؤولي) المستودع.rpc
: سيرسل Allstar RPC إلى نظام خاص بالمؤسسة.يتوفر إعدادان لتكوين إجراء المشكلة:
issueLabel
متاح على مستوى المؤسسة والمستودع. سيؤدي إعداده إلى تجاوز علامة allstar
الافتراضية التي يستخدمها Allstar لتحديد مشكلاته.
issueRepo
متاح على مستوى المؤسسة. سيؤدي تعيينه إلى فرض إنشاء جميع المشكلات التي تم إنشاؤها في المؤسسة في المستودع المحدد.
على غرار تكوين تمكين تطبيق Allstar، يتم تمكين جميع السياسات وتكوينها باستخدام ملف yaml إما في مستودع .allstar
الخاص بالمؤسسة، أو دليل .allstar
الخاص بالمستودع. كما هو الحال مع التطبيق، يتم تمكين السياسات بشكل افتراضي، كما أن إجراء log
الافتراضي لن ينتج عنه نتائج مرئية. إحدى الطرق البسيطة لتمكين جميع السياسات هي إنشاء ملف yaml لكل سياسة مع محتوياته:
optConfig:
optOutStrategy: true
action: issue
فيما يلي تفاصيل كيفية عمل إجراء fix
لكل سياسة. إذا تم حذفه أدناه، فلن يكون إجراء fix
قابلاً للتطبيق.
يُسمى ملف التكوين الخاص بهذه السياسة branch_protection.yaml
، وتعريفات التكوين موجودة هنا.
تتحقق سياسة حماية الفرع من إعداد إعدادات حماية فرع GitHub بشكل صحيح وفقًا للتكوين المحدد. سوف يصف نص المشكلة الإعداد غير الصحيح. راجع وثائق GitHub لتصحيح الإعدادات.
سيؤدي إجراء fix
إلى تغيير إعدادات حماية الفرع لتتوافق مع تكوين السياسة المحدد.
يُسمى ملف التكوين الخاص بهذه السياسة binary_artifacts.yaml
، وتعريفات التكوين موجودة هنا.
تتضمن هذه السياسة الشيك من بطاقة الأداء. قم بإزالة القطعة الأثرية الثنائية من المستودع لتحقيق التوافق. نظرًا لأن نتائج بطاقة الأداء يمكن أن تكون مطولة، فقد تحتاج إلى تشغيل بطاقة الأداء نفسها لرؤية كافة المعلومات التفصيلية.
يُسمى ملف التكوين الخاص بهذه السياسة باسم codeowners.yaml
، وتعريفات التكوين موجودة هنا.
تتحقق هذه السياسة من وجود ملف CODEOWNERS
في مستودعاتك.
يُسمى ملف التكوين الخاص بهذه السياسة outside.yaml
.yaml، وتعريفات التكوين موجودة هنا.
تتحقق هذه السياسة مما إذا كان أي من المتعاونين الخارجيين يتمتعون بإمكانية الوصول كمسؤول (افتراضي) أو دفع (اختياري) إلى المستودع. يجب أن يتمتع أعضاء المؤسسة فقط بهذا الوصول، حيث يمكن للأعضاء غير الموثوق بهم تغيير إعدادات مستوى المسؤول وارتكاب تعليمات برمجية ضارة.
يُسمى ملف تكوين هذه السياسة security.yaml
، وتعريفات التكوين موجودة هنا.
تتحقق هذه السياسة من أن المستودع يحتوي على ملف سياسة أمان في SECURITY.md
وأنه ليس فارغًا. سيكون للإصدار الذي تم إنشاؤه رابط إلى علامة التبويب GitHub التي تساعدك على الالتزام بسياسة الأمان في المستودع الخاص بك.
يحمل اسم ملف التكوين الخاص بهذه السياسة اسم dangerous_workflow.yaml
، وتعريفات التكوين موجودة هنا.
تتحقق هذه السياسة من ملفات تكوين سير عمل GitHub Actions ( .github/workflows
) بحثًا عن أي أنماط تتطابق مع السلوك الخطير المعروف. راجع وثائق OpenSSF Scorecard لمزيد من المعلومات حول هذا الفحص.
يُسمى ملف تكوين هذه السياسة scorecard.yaml
، وتعريفات التكوين موجودة هنا.
تعمل هذه السياسة على تشغيل أي فحص لبطاقة الأداء مدرج في تكوين checks
. يجب أن يكون لكل عمليات التحقق التي يتم إجراؤها درجة مساوية أو أعلى من إعداد threshold
. يرجى الاطلاع على وثائق OpenSSF Scorecard لمزيد من المعلومات حول كل فحص.
يُسمى ملف التكوين الخاص بهذه السياسة actions.yaml
، وتعريفات التكوين موجودة هنا.
تتحقق هذه السياسة من ملفات تكوين سير عمل GitHub Actions ( .github/workflows
) (ويتم تشغيل سير العمل في بعض الحالات) في كل مستودع للتأكد من أنها تتماشى مع القواعد (على سبيل المثال، يتطلب، يرفض) المحددة في التكوين على مستوى المؤسسة لـ سياسة.
يُسمى ملف التكوين الخاص بهذه السياسة باسم admin.yaml
، وتعريفات التكوين موجودة هنا.
تتحقق هذه السياسة من أنه بشكل افتراضي، يجب أن تحتوي جميع المستودعات على مستخدم أو مجموعة معينة كمسؤول. فهو يسمح لك بتكوين ما إذا كان يُسمح للمستخدمين بأن يكونوا مسؤولين (بدلاً من الفرق).
راجع هذا الريبو كمثال لاستخدام تكوين Allstar. باعتبارك مسؤول المؤسسة، فكر في ملف README.md الذي يحتوي على بعض المعلومات حول كيفية استخدام Allstar في مؤسستك.
افتراضيًا، من المتوقع أن تكون ملفات التكوين على مستوى المؤسسة، مثل ملف allstar.yaml
أعلاه، موجودة في مستودع .allstar
. إذا لم يكن هذا المستودع موجودًا، فسيتم استخدام دليل allstar
لمستودع .github
كموقع ثانوي. للتوضيح، بالنسبة لـ allstar.yaml
:
أسبقية | مستودع | طريق |
---|---|---|
أساسي | .allstar | allstar.yaml |
ثانوي | .github | allstar/allstar.yaml |
وينطبق هذا أيضًا على ملفات التكوين على مستوى المؤسسة للسياسات الفردية، كما هو موضح أدناه.
سيبحث Allstar أيضًا عن تكوينات سياسة مستوى الريبو في مستودع .allstar
الخاص بالمؤسسة، ضمن الدليل الذي يحمل نفس اسم المستودع. يتم استخدام هذا التكوين بغض النظر عما إذا كان "تجاوز الريبو" معطلاً أم لا.
على سبيل المثال، سيبحث Allstar عن تكوين السياسة الخاص بـ repo myapp
معين بالترتيب التالي:
مستودع | طريق | حالة |
---|---|---|
myapp | .allstar/branch_protection.yaml | عندما يُسمح بـ "تجاوز الريبو". |
.allstar | myapp/branch_protection.yaml | جميع الأوقات. |
.allstar | branch_protection.yaml | جميع الأوقات. |
.github | allstar/myapp/branch_protection.yaml | إذا كان .allstar الريبو غير موجود. |
.github | allstar/branch_protection.yaml | إذا كان .allstar الريبو غير موجود. |
بالنسبة لملفات تكوين Allstar والسياسة على مستوى المؤسسة، يمكنك تحديد الحقل baseConfig
لتحديد مستودع آخر يحتوي على تكوين Allstar الأساسي. من الأفضل شرح ذلك بمثال.
لنفترض أن لديك عدة مؤسسات GitHub، ولكنك تريد الحفاظ على تكوين Allstar واحد. مؤسستك الرئيسية هي "acme"، ويحتوي المستودع acme/.allstar
على allstar.yaml
:
optConfig :
optOutStrategy : true
issueLabel : allstar-acme
issueFooter : Issue created by Acme security team.
لديك أيضًا مؤسسة GitHub عبر الأقمار الصناعية تسمى "acme-sat". أنت تريد إعادة استخدام التكوين الرئيسي، ولكن مع تطبيق بعض التغييرات في الأعلى عن طريق تعطيل Allstar في مستودعات معينة. يحتوي المستودع acme-sat/.allstar
على allstar.yaml
:
baseConfig : acme/.allstar
optConfig :
optOutRepos :
- acmesat-one
- acmesat-two
سيؤدي هذا إلى استخدام كل التكوينات من acme/.allstar
كتكوين أساسي، ولكن بعد ذلك سيتم تطبيق أي تغييرات في الملف الحالي أعلى التكوين الأساسي. يتم وصف الطريقة التي يتم تطبيقها على أنها تصحيح دمج JSON. يجب أن يكون baseConfig
GitHub <org>/<repository>
.
انظر CONTRIBUTING.md