حظر تحميل المفاتيح الخاصة والمحفوظات والملفات الكبيرة وليس فقط في Gitlab CE

خطافات Git هي أداة للمساعدة في الحفاظ على المستودع الخاص بك منظمًا. يمكنك إعداد قواعد تلقائية لمعالجة التزاماتك.



ربما تعرف جميعًا عن الالتزام المسبق - التحقق من التعليمات البرمجية قبل الالتزام. ولكن لا يمكن التحقق من كل شيء قبل الالتزام. بعض القيود تريد استخدامها عالميًا في جميع أنحاء Gitlab.



بالنسبة لأي شخص مرتبك بشأن الخطافات المسبقة والاستلام المسبق ، تصف هذه المشاركة الاختلافات بينهما في "ما المقصود بخطافات git؟"



إذا كان لديك Gitlab Enterprise Edition ، فيمكنك تكوين الخطافات الموضحة في المنشور عبر واجهة WEB.



ولكن ماذا لو كان لديك إصدار Gitlab Community (Core) Edition؟



تصف هذه المقالة 5 خطافات ما قبل الاستلام تعمل على خادم Gitlab Community (Core) Edition:



  • block_confidentials.sh - منع إرسال المفاتيح الخاصة ورموز AWS
  • block_file_extensions.sh - حجب إرسال المحفوظات (Regex شكلي)
  • check-large-files.sh - حظر إرسال ملفات كبيرة الحجم (شكلي الحجم)
  • reject-not-allowlist-email.sh - عمليات الحظر مع البريد الإلكتروني ليست من قائمة السماح (قائمة نطاقات البريد الإلكتروني قابلة للتهيئة)
  • required-issue.sh - عمليات الحظر دون وجود مشكلة في العنوان (قائمة المشاكل قابلة للتهيئة)


يتم أخذ معظم الخطافات من مستودع عينات المنصة في دليل ما قبل الاستلام (ينطبق على GitHub Enterprise).



يمكنك إلقاء نظرة على جميع التعليمات البرمجية المصدر لخطافات الخادم على Github .



التثبيت على Gitlab



  • تحتاج إلى إنشاء دليل /opt/gitlab/embedded/service/gitlab-shell/hooks/pre-receive.d/
  • انسخ الخطافات إلى هذا الدليل
  • لا تنس تعيين حقوق التشغيل للخطافات (chmod + x file hook)


حظر إرسال المفاتيح الخاصة ورموز AWS



block_confidentials.sh regex_list, .



# Define list of REGEX to be searched and blocked
regex_list=(
  # block any private key file
  '(\-){5}BEGIN\s?(RSA|OPENSSH|DSA|EC|PGP)?\s?PRIVATE KEY\s?(BLOCK)?(\-){5}.*'
  # block AWS API Keys
  'AKIA[0-9A-Z]{16}'
  # block AWS Secret Access Key (TODO: adjust to not find validd Git SHA1s; false positives)
  # '([^A-Za-z0-9/+=])?([A-Za-z0-9/+=]{40})([^A-Za-z0-9/+=])?'
  # block confidential content
  'CONFIDENTIAL'
)


, git push .







block_file_extensions.sh case *.zip|*.gz|*.tgz, , .



zip , git push .







check-large-files.sh maxsize, , .



1 , git push .





email allow



reject-not-allowlist-email.sh email-, .



declare -a DOMAIN_ARRAY=("group1.com" "group2.com")


git , .



git config user.email user1@group3.com


, git push .





issue



Majilesh.



require-issue.sh commit_format, .



commit_format="(JIRA|PROJECTKEY|MULE|ECOM|SAP|XLR-[1-9]+Merge)"


, , commit_format git push .





.



Telegram- Gitlab




All Articles