الأمان
موقف OpenSSF Scorecard
هدف Apothem في OpenSSF Scorecard وأسطح الأدلة المستخدمة لإبقاء الدرجة في تحسّن مستمر.
يستهدف Apothem أعلى درجة في OpenSSF Scorecard مع إبقاء الواجهة العامة صادقة بشأن ما يمكن وما لا يمكن لـScorecard استنتاجه من مستودع جديد بمشرف وحيد. يُعدّد هذا المستند كل فحص، وسطح الدليل الذي يسنده، والضابط الذي يُبقي الموقف محدّثًا.
الدرجة الحيّة موجودة في عارض Scorecard؛ والشارة موجودة في ترويسة README.
مصفوفة الأدلة لكل فحص
| الفحص | سطح الدليل | ملاحظات |
|---|---|---|
| Binary-Artifacts | binary-artifacts-sweep.md | لا تُتبَّع أي ثنائيات قابلة للتنفيذ في المصدر؛ تبقى أرشيفات التوزيع المُولَّدة في dist/. |
| Branch-Protection | branch-protection-ruleset.md | يكون main محميًّا قبل الترقية إلى إصدار عام؛ وتُحظَر عمليات الدفع القسري والحذف بعد هبوط كوميت الإصدار الجديد. |
| CI-Tests | .github/workflows/ci.yml | مصفوفة Pytest، وruff، وmypy، وCodeQL، وTrivy، وبناء التوثيق، وفحوص دخان التحزيم. |
| CII-Best-Practices | تسجيل OpenSSF Best Practices | يتطلّب تسجيلًا من جانب المشرف على موقع OpenSSF Best Practices؛ ولا يمكن إتمامه بملفات المستودع وحدها. |
| Code-Review | حماية الفروع + CODEOWNERS | يُفرَض على طلبات السحب المستقبلية؛ ويبقى سجل Scorecard محدودًا إلى أن تُوجَد طلبات سحب مُراجَعة. |
| Contributors | AUTHORS | لا يمكن لمشروع جديد بمشرف منفرد اصطناع سجل مساهمات متعدّد المؤسسات؛ ويتحسّن هذا طبيعيًّا مع انضمام المساهمين. |
| Dangerous-Workflow | تدقيق سير العمل | لا يوجد pull_request_target؛ وActions مُثبَّتة بـSHA ومحصورة بصلاحيات صريحة. |
| Dependency-Update-Tool | renovate.json | يغطّي Renovate كلًّا من GitHub Actions وبيانات Python ومتطلبات الإصدار المقفولة بالتجزئة وأسطح npm، مع إبقاء طلبات سحب التبعيات المُجمَّعة متاحة. |
| Fuzzing | tests/property/ | تختبر اختبارات خصائص Hypothesis ثوابت المُحلِّل والواجهة الأمامية؛ وقد لا يحتسب Scorecard المنبع Hypothesis كتكامل تشويش. |
| License | LICENSE | رخصة MIT في جذر المستودع. |
| Maintained | سجل Git | يُظهِر كوميت الإصدار الحالي وإيقاع سير العمل النشط الصيانة؛ وقد تتلقّى المستودعات الحديثة جدًّا تحذير عُمر. |
| Packaging | .github/workflows/ | سير عمل Release وPages وnpmjs.com التي تُنتِج sdist وwheel وSBOM ومَنشأ SLSA وتواقيع Sigstore. |
| Pinned-Dependencies | تدقيق سير العمل + متطلبات مقفولة بالتجزئة | Actions مُثبَّتة بـSHA؛ وتستخدم عمليات تثبيت أدوات الإصدار --require-hashes؛ وتستخدم أدوات pip الخاصة بسير العمل تثبيتات دقيقة. |
| SAST | .github/workflows/codeql.yml | استعلامات security-extended من CodeQL عبر Python وActions. |
| Security-Policy | SECURITY.md | سياسة الإفصاح المنسّق، ومصفوفة الإصدارات المدعومة، والجدول الزمني للاستجابة. |
| Signed-Releases | .github/workflows/release.yml | تواقيع Sigstore بلا مفاتيح، ومَنشأ SLSA، وSBOM، ومجاميع تحقق، وقِطَع الإصدار. |
| Token-Permissions | تدقيق سير العمل | تستخدم سير العمل صلاحيات قراءة فقط افتراضيًّا؛ ونطاقات الكتابة محلية للمهمة ومرتبطة بعمليات النشر/التحزيم. |
| Vulnerabilities | .github/workflows/pip-audit.yml + .github/workflows/dependency-review.yml | فحص أسبوعي للثغرات وفحص CI مع رفع SARIF؛ وتمنع بوّابة dependency-review طلبات السحب التي تُدخِل تبعيات مُعرَّضة أو ذات تراخيص غير مسموح بها. |
تفسير الدرجة
يُسجّل Scorecard كل فحص على مقياس من 0 إلى 10، والدرجة الإجمالية متوسط مرجَّح. تُتبَّع الضوابط التي تعتمد على سجل المستودع أو التسجيل لدى طرف ثالث أو تنوع المساهمين تتبّعًا صريحًا بدلًا من المبالغة في ادّعائها. ويؤدّي الانحراف في أي فحص خاضع للملفات إلى تشغيل معالجة فورية.
إيقاع التحديث
- مع كل دفع: يُعاد تشغيل سير عمل Scorecard مع كل دفع إلى
main. - أسبوعيًّا: الإثنين الساعة 02:30 UTC — يلتقط التغيّرات في منهجية التسجيل المنبع + الثغرات المُكتشَفة حديثًا ضد التبعيات المُثبَّتة الحالية.
- مع كل إصدار: قبل الترقية العامة، يتحقّق المشرف من سطح عارض Scorecard الحيّ ويُسجّل أي حدود لحالة المنصّة.
مراجع
- OpenSSF Scorecard — المشروع المنبع
- مرجع فحوص Scorecard — دلالات كل فحص
ossf/scorecard-action— غلاف GitHub Actions- إطار SLSA — مستويات سلسلة التوريد (يُشحَن apothem عند SLSA-3)