Blokir mengunggah kunci pribadi, arsip, file besar dan tidak hanya di Gitlab CE

Git hooks adalah alat untuk membantu menjaga agar repositori Anda tetap teratur. Anda dapat mengatur aturan otomatis untuk memproses komit Anda.



Anda semua mungkin tahu tentang pra-komit - memeriksa kode Anda sebelum melakukan. Tetapi tidak semuanya bisa diperiksa sebelum melakukan. Beberapa batasan ingin digunakan secara global di seluruh Gitlab.



Bagi siapa pun yang bingung tentang kait pra-komit dan pra-terima, pos ini menjelaskan perbedaan di antara mereka dalam "Apa itu kait git?"



Jika Anda memiliki Gitlab Enterprise Edition, Anda dapat mengonfigurasi kait yang dijelaskan dalam pos melalui antarmuka WEB.



Tetapi bagaimana jika Anda memiliki Edisi Gitlab Community (Core)?



Artikel ini akan menjelaskan 5 kait pra-terima yang dijalankan pada server Edisi Gitlab Community (Core):



  • block_confidentials.sh - Memblokir pengiriman kunci pribadi dan token AWS
  • block_file_extensions.sh - Memblokir pengiriman arsip (dapat dikonfigurasi Regex)
  • check-large-files.sh - Memblokir pengiriman file besar (Ukuran dapat dikonfigurasi)
  • reject-not-allowlist-email.sh - Pemblokiran dilakukan dengan email bukan dari daftar perbolehkan (Daftar domain email dapat dikonfigurasi)
  • require-issue.sh - Pemblokiran dilakukan tanpa masalah dalam judul (Daftar masalah dapat dikonfigurasi)


Sebagian besar kait diambil dari repositori platform-samples di direktori pra-terima-kait (berlaku untuk GitHub Enterprise).



Anda dapat melihat semua kode sumber kait server di Github .



Menginstal di Gitlab



  • Anda perlu membuat direktori /opt/gitlab/embedded/service/gitlab-shell/hooks/pre-receive.d/
  • Salin kait ke direktori ini
  • Jangan lupa untuk mengatur hak peluncuran untuk kait (file chmod + x hook)


Memblokir pengiriman kunci pribadi dan token 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