
منصة أمان سلسلة توريد البرمجيات
 [](https://github.com/mindersec/minder/actions/workflows/main.yml) | [](https://coveralls.io/github/mindersec/minder?branch=main) | [](https://opensource.org/licenses/Apache-2.0) | [](https://slsa.dev) | [](https://discord.gg/RkzVuTp3WK) | [](https://securityscorecards.dev/viewer/?uri=github.com/mindersec/minder) --- [التثبيت](https://mindersec.github.io/getting_started/install_cli) | [التوثيق](https://mindersec.github.io/) | [الإصدارات](https://github.com/mindersec/minder/releases) --- # ما هو Minder؟ Minder هو منصة مفتوحة المصدر تساعد فرق التطوير والمجتمعات مفتوحة المصدر على بناء برمجيات أكثر أمانًا، وإثبات للآخرين أن ما بنوه آمن. يساعد Minder مالكي المشاريع على إدارة وضعهم الأمني بشكل استباقي من خلال توفير مجموعة من الفحوصات والسياسات لتقليل المخاطر على طول سلسلة توريد البرمجيات، والتصديق على ممارساتهم الأمنية للمستهلكين النهائيين. يسمح Minder للمستخدمين بتسجيل المستودعات وتحديد السياسات لضمان تكوين المستودعات والقطع الأثرية بشكل متسق وآمن. يمكن ضبط السياسات للتنبيه فقط أو التصحيح التلقائي. يوفر Minder مجموعة محددة مسبقًا من القواعد ويمكن أيضًا تكوينه لتطبيق قواعد مخصصة. يمكن نشر Minder كـ Helm chart ويوفر أداة CLI تسمى `minder`. توفر Custcodian أيضًا [نسخة مستضافة مجانية الاستخدام من Minder](#public-instance). صمم Minder ليكون قابلًا للتوسع، مما يسمح للمستخدمين بالتكامل مع أدواتهم وعملياتهم الحالية. ## الميزات * **تكوين وأمان المستودعات:** تبسيط تكوين وإدارة إعدادات وسياسات الأمان عبر المستودعات. * **فرض الأمان الاستباقي:** فرض مستمر لتكوينات الأمان الأفضل ممارسة عن طريق تحديد سياسات دقيقة للتنبيه فقط أو التصحيح التلقائي. * **التصديق على القطع الأثرية:** التحقق المستمر من أن الحزم موقعة لضمان أنها مقاومة للتلاعب، باستخدام المشروع مفتوح المصدر Sigstore. * **إدارة التبعيات:** إدارة وضع أمان التبعيات من خلال مساعدة المطورين على اتخاذ خيارات أفضل وفرض الضوابط. يتكامل Minder مع [OSV](https://osv.dev/) (ويمكن تكامله مع واجهات برمجة تطبيقات SCA أخرى) لتمكين إدارة التبعيات المدفوعة بالسياسات بناءً على مستوى مخاطر التبعيات. ## المثال العام توفر Custcodian [نسخة عامة مجانية الاستخدام من Minder](https://custcodian.dev/hosted/) على `api.custcodian.dev`. هذه هي النسخة الافتراضية المستخدمة عندما تستخدم CLI `minder` بدءًا من الإصدار 0.0.89. هذه النسخة مجانية الاستخدام للمستودعات العامة؛ أما بالنسبة للمستودعات الخاصة، فقد تكون هناك رسوم إضافية لاستخدام هذه النسخة المستضافة على السحابة. --- # البدء (أقل من دقيقة) يستغرق تشغيل Minder أقل من دقيقة وهو سهل مثل: 1. تثبيت Minder 2. تسجيل الدخول إلى Minder 3. وتشغيل `minder quickstart` لإنشاء ملفك الشخصي الأول. في بضع ثوانٍ فقط، ستقوم بتسجيل مستودعاتك وتفعيل حماية فحص الأسرار لجميعها! 🤯 <img src="https://assets.kitploit.com/production/public/readmes/6978/3ab7c597c1892aa6a64314bb4c0b065694936c8ca64ccc5cd453609ff8a54bbc.gif" width="80%"/> ## التثبيت اختر الطريقة المفضلة لتثبيت `minder`: ### MacOS (Homebrew) تأكد من تثبيت [Homebrew](https://brew.sh/). ```bash brew install minder ``` ### Windows (Winget) تأكد من تثبيت [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/). ```bash winget install mindersec.minder ``` ### تنزيل إصدار قم بتنزيل أحدث إصدار من [minder/releases](https://github.com/mindersec/minder/releases). ### البناء من المصدر قم ببناء `minder` و `minder-server` من المصدر باتباع [دليل البناء من المصدر](#build-from-source). ## تسجيل الدخول إلى Minder لاستخدام `minder` مع [المثال العام](#public-instance) من Minder (`api.custcodian.dev`)، قم بتسجيل الدخول عن طريق تشغيل: ```bash minder auth login --grpc-host api.custcodian.dev ``` (مضيف API هذا هو الافتراضي بدءًا من الإصدار 0.0.89.) عند الانتهاء، يجب أن ترى أن خادم Minder مضبوط على `api.custcodian.dev`. ## تشغيل Minder quickstart يرشدك أمر `quickstart` خلال إنشاء ملفك الشخصي الأول في Minder، وتسجيل مستودعاتك، وتفعيل حماية فحص الأسرار لمستودعاتك في ثوانٍ. لفعل ذلك، قم بتشغيل: ```bash minder quickstart ``` سيطالبك هذا بتسجيل المزود الخاص بك، وتحديد المستودعات التي تريدها، وإنشاء نوع القاعدة `secret_scanning`، وإنشاء ملف شخصي يفعّل فحص الأسرار للمستودعات المحددة. لمعرفة حالة ملفك الشخصي، قم بتشغيل: ```bash minder profile status list --profile quickstart-profile --detailed ``` يجب أن ترى الحالة الإجمالية للملف الشخصي وعرضًا مفصلاً لحالات تقييم القواعد لكل من مستودعاتك المسجلة. سيستمر Minder في تتبع مستودعاتك وسيضمن إصلاح أي انحرافات عن الحالة المرغوبة باستخدام ميزة `remediate` أو تنبيهك، إذا لزم الأمر، باستخدام ميزة `alert`. تهانينا! 🎉 لقد نجحت الآن في إنشاء ملفك الشخصي الأول! ## ما التالي؟ يمكنك الآن متابعة استكشاف ميزات Minder عن طريق إضافة أو إزالة المزيد من المستودعات، وإنشاء ملفات شخصية إضافية بقواعد متنوعة، وغير ذلك الكثير. هناك الكثير في Minder أكثر من مجرد فحص الأسرار. قاعدة `secret_scanning` هي مجرد واحدة من أنواع القواعد العديدة التي يدعمها Minder. يمكنك رؤية القائمة الكاملة للقواعد والملفات الشخصية الجاهزة للاستخدام والتي يحتفظ بها فريق Minder هنا - [mindersec/minder-rules-and-profiles](https://github.com/mindersec/minder-rules-and-profiles). في حال لم تجد شيئًا هناك بعد، فإن Minder مصمم ليكون قابلًا للتوسع. وهذا يسمح للمستخدمين بإنشاء أنواع القواعد والملفات الشخصية المخصصة الخاصة بهم وضمان التصديق على تفاصيل وضعهم الأمني. الآن بعد أن قمت بإعداد كل شيء، يمكنك متابعة تشغيل أوامر `minder` ضد المثال العام من Minder حيث يمكنك إدارة مستودعاتك المسجلة، وإنشاء ملفات شخصية وقواعد وغير ذلك الكثير، حتى تتمكن من ضمان تكوين مستودعاتك بشكل متسق وآمن. لمزيد من المعلومات حول `minder`، راجع: * أوامر CLI `minder` - [الوثائق](https://mindersec.github.io/ref/cli/minder). * توثيق REST API لـ `minder` - [الوثائق](https://mindersec.github.io/ref/api). * قواعد وملفات شخصية Minder التي يحتفظ بها فريق Minder - [GitHub](https://github.com/mindersec/minder-rules-and-profiles). * توثيق Minder - [الوثائق](https://mindersec.github.io/). # خريطة الطريق يعمل مجتمع Minder بنشاط على ميزات وتحسينات جديدة لـ Minder. يمكنك العثور على خريطة الطريق الخاصة بنا [هنا](https://mindersec.github.io/about/roadmap). إذا كنت ترغب في طلب ميزة أو تحسين أو المساهمة فيه، يرجى استخدام [قالب المشكلة](https://github.com/mindersec/minder/issues/new?template=enhancement.yml) التالي. # التطوير يصف هذا القسم كيفية بناء وتشغيل Minder من المصدر. ## البناء من المصدر ### المتطلبات الأساسية ستحتاج إلى الأدوات التالية - [Go](https://golang.org/doc/install)، [Docker](https://docs.docker.com/get-docker/) و [Docker Compose](https://docs.docker.com/compose/install/). لبناء وتشغيل `minder-server`، ستحتاج أيضًا إلى [ko](https://ko.build/install/). لتشغيل مجموعة الاختبارات عبر `make test`، ستحتاج إلى [gotestfmt](https://github.com/GoTestTools/gotestfmt#installing) و [helm](https://github.com/helm/helm/releases). لاستدعاء هدف `run-docker` في make، ستحتاج إلى [yq](https://github.com/mikefarah/yq). ### استنساخ المستودع ```bash git clone [email protected]:mindersec/minder.git ``` ## البناء قم بتشغيل الأمر التالي لبناء `minder` و `minder-server` (ستكون الملفات الثنائية موجودة في `./bin/`) ```bash make build ``` لاستخدام `minder` مع المثال العام من Minder (`api.custcodian.dev`)، قم بتشغيل: ```bash minder auth login --grpc-host api.custcodian.dev ``` عند الانتهاء، يجب أن ترى أن خادم Minder مضبوط على `api.custcodian.dev`. إذا كنت تريد تشغيل `minder` ضد نسخة محلية من `minder-server`، يمكنك استخدام العلامات `--grpc-host=localhost` و `--grpc-port=8090`، أو استخدام ملف تكوين باتباع الخطوات أدناه. #### التكوين الأولي قم بإنشاء ملف التكوين الأولي لـ `minder`. يمكنك القيام بذلك عن طريق: ```bash cp config/config.yaml.example config.yaml ``` قم بإنشاء ملف التكوين الأولي لـ `minder-server`. يمكنك القيام بذلك عن طريق: ```bash cp config/server-config.yaml.example server-config.yaml ``` يجب عليك أيضًا إعداد تطبيق OAuth2 لاستخدامه بواسطة `minder-server`. بمجرد الانتهاء، قم بتحديث ملف التكوين بالقيم المناسبة. راجع التوثيق حول كيفية القيام بذلك - [الوثائق](https://mindersec.github.io/run_minder_server/config_oauth). #### تشغيل `minder-server` قم بتشغيل `minder-server` مع خدماته التابعة (`keycloak` و `postgres`) عن طريق تشغيل: ```bash make run-docker ``` #### تكوين تسجيل الدخول الاجتماعي (GitHub) يستخدم `minder-server` Keycloak كـ IAM. لتسجيل الدخول، ستحتاج إلى إعداد تطبيق OAuth2 لـ GitHub وتكوين Keycloak لاستخدامه. أنشئ تطبيق OAuth2 لـ GitHub [هنا](https://github.com/settings/developers). اختر `New OAuth App` واملأ التفاصيل. يجب أن يكون عنوان URL لرد الاتصال `http://localhost:8081/realms/stacklok/broker/github/endpoint`. قم بإنشاء سر عميل جديد لعميل OAuth2 الخاص بك. باستخدام `client_id` و `client_secret` اللذين قمت بإنشائهما أعلاه، قم بتمكين تسجيل الدخول عبر GitHub على Keycloak عن طريق تشغيل الأمر التالي: ```bash make KC_GITHUB_CLIENT_ID=<client_id> KC_GITHUB_CLIENT_SECRET=<client_secret> github-login ``` #### تشغيل minder تأكد من وجود ملف `config.yaml` في الدليل الحالي حتى يتمكن `minder` من استخدامه. قم بتشغيل `minder` ضد نسختك المحلية من Minder (`localhost:8090`): ```bash minder auth login ``` عند الانتهاء، يجب أن ترى أن خادم Minder مضبوط على `localhost:8090`. افتراضيًا، ستشير CLI `minder` إلى بيئة Custcodian السحابية إذا لم يكن ملف التكوين موجودًا، ولكن [إنشاء `config.yaml` لتشغيل الخادم](#initial-configuration) سيشير CLI إلى بيئة التطوير المحلية لديك. إذا كنت تريد صراحةً استخدام نسخة مختلفة، يمكنك تعيين متغير البيئة `MINDER_CONFIG` للإشارة إلى تكوين معين. لدينا تكوينات للتطوير المحلي وبيئة Custcodian السحابية مدخلة في [دليل `config`](https://github.com/mindersec/minder/blob/main/config). ### إرشادات التطوير يمكنك العثور على معلومات أكثر تفصيلاً حول عملية التطوير في [دليل المطور](https://mindersec.github.io/developer_guide/get-hacking). ## Minder API * [توثيق REST API](https://docs.mindersec.dev/ref/api) * [توثيق Proto API](https://docs.mindersec.dev/ref/proto) * [Protobuf](https://github.com/mindersec/minder/blob/main/proto/minder/v1/minder.proto) * [OpenAPI/swagger spec (JSON)](https://github.com/mindersec/minder/blob/main/pkg/api/openapi/minder/v1/minder.swagger.json) ## المساهمة نرحب بالمساهمات في Minder. يرجى الاطلاع على دليل [المساهمة](https://github.com/mindersec/minder/blob/main/CONTRIBUTING.md) لمزيد من المعلومات. * يجتمع مجتمع Minder بانتظام. يمكنك العثور على جدول الاجتماعات في [تقويم المجتمع OpenSSF](https://calendar.google.com/calendar/u/0?cid=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ). * يتم الحفاظ على ميثاق المشروع ووثائق الحوكمة في مستودع [mindersec/community](https://github.com/mindersec/community). ## الأصل (Provenance) يتبع مشروع Minder أفضل الممارسات لأمن سلسلة توريد البرمجيات والشفافية. جميع الأصول المُصدرة: * تحتوي على أصل قابل للإنشاء والتحقق منه بمستوى SLSA Build Level 3. لمزيد من المعلومات، راجع [موقع SLSA](https://slsa.dev). * تم توقيعها والتحقق منها أثناء الإصدار باستخدام مشروع [Sigstore](https://sigstore.dev). وهذا يضمن أنها مقاومة للتلاعب ويمكن لأي شخص التحقق منها. * تم إنشاء أرشيف SBOM ونشره مع الإصدار. وهذا يسمح للمستخدمين بفهم تبعيات المشروع ووضعهم الأمني. ## الترخيص Minder مرخص بموجب [رخصة Apache 2.0](https://github.com/mindersec/minder/blob/main/LICENSE).