不仅在Gitlab CE中阻止上传私钥,档案,大文件

Git挂钩是一种有助于使您的存储库保持秩序的工具。您可以设置自动规则来处理提交。



大家可能都知道预提交 -在提交之前检查代码。但并不是在提交之前可以检查所有内容。某些限制要在整个Gitlab中全局使用。



对于任何对预提交和预接收挂钩感到困惑的人,这篇文章在“什么是git挂钩?”中描述了它们之间的区别。



如果您拥有Gitlab Enterprise Edition,则可以通过WEB界面配置帖子中描述的挂钩。



但是,如果您拥有Gitlab社区(核心)版怎么办?



本文将介绍在Gitlab社区(核心)版服务器上运行的5个预接收挂钩:



  • block_confidentials.sh-阻止发送私钥和AWS令牌
  • block_file_extensions.sh-阻止发送存档(可配置正则表达式)
  • check-large-files.sh-阻止发送大文件(大小可配置)
  • reject-not-allowlist-email.sh-阻止不在允许列表中的电子邮件提交(电子邮件域的列表是可配置的)
  • require-issue.sh-阻止提交而标题中没有问题(问题列表是可配置的)


大多数挂钩都来自pre-receive-hooks目录中platform-samples存储库(适用于GitHub Enterprise)。



您可以在Github上查看服务器挂钩的所有源代码



在Gitlab上安装



  • 您需要创建一个目录 /opt/gitlab/embedded/service/gitlab-shell/hooks/pre-receive.d/
  • 将钩子复制到此目录
  • 不要忘记为挂钩设置启动权限(chmod + x挂钩文件)


阻止发送私钥和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