Gitlab CEだけでなく、秘密鍵、アーカイブ、大きなファイルのアップロードをブロックする

Gitフックは、リポジトリを整頓するのに役立つツールです。コミットを処理するための自動ルールを設定できます。



皆さんはおそらく、事前コミットについて知っているでしょう- コミットする前にコードをチェックしてください。ただし、コミットする前にすべてをチェックできるわけではありません。一部の制限は、Gitlab全体でグローバルに使用する必要があります。



pre-commitフックとpre-receiveフックについて混乱している人のために、この投稿では、「gitフックとは」でそれらの違いについて説明しています。



Gitlab Enterprise Editionを使用している場合は、投稿に記載されているフックをWEBインターフェース経由で構成できます。



しかし、Gitlab Community(Core)Editionを持っている場合はどうでしょうか?



この記事では、Gitlab Community(Core)Editionサーバーで実行される5つの事前受信フックについて説明します。



  • block_confidentials.sh-秘密キーとAWSトークンの送信のブロック
  • block_file_extensions.sh-送信アーカイブのブロック(Regex構成可能)
  • check-large-files.sh-大きなファイルの送信のブロック(サイズは構成可能)
  • reject-not-allowlist-email.sh-許可リストにないメールによるコミットのブロック(メールドメインのリストは設定可能です)
  • require-issue.sh-タイトルに問題のないコミットのブロック(問題リストは設定可能です)


ほとんどのフックはpre-receive-hooksディレクトリプラットフォームサンプルリポジトリから取得されます(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