gitleaksを導入した
Table of Contents
背景・動機
秘密鍵をgit commitしないようにしたいと以前から考えていた。 大体のプロジェクトのCIにsecretlintを導入していたが、手元でもpre-commitでも設定したいと思っていた所、gitleaksなら設定不要で楽に導入できることが分かったので導入した。
試したこと・やったこと
0. ツール選定
類似ツールにはgit-secrets、trufflehog、secretlintがある。
次の性質があるツールがよい。
- nixpkgsにある
- デフォルト設定がしっかりしてる
- CLIで雑に実行できる
『Gitleaks』で機密情報の漏洩を防ぐ〜コマンド編〜 を読んでいた所、自分のニーズを満たせることが確認できたので導入を決定した。
1. home-manager module作成
home-manager moduleを自作すると自由度が上がる。
programs.gitleaks.enable = true するだけで設定完了する。
{
programs.gitleaks = {
enable = true;
enableGitHook = true;
settings = {
extend.useDefault = true;
};
};
}
2. devenvのgit pre-commit導入
devenvでgit hookを定義してると、system globalのgit hookを読んでくれないことがわかった。
devenvでかなりhookを定義してるので、こちらでも明示的にpre-commitを定義している。 https://devenv.sh/git-hooks/
{ pkgs, ... }: {
git-hooks.hooks = {
check-merge-conflicts.enable = true;
check-case-conflicts.enable = true;
gitleaks = {
enable = true;
entry = "${pkgs.gitleaks}/bin/gitleaks protect --staged";
};
};
}
得られた結果・所感
より安全に git commit できるようになった。
今後の展開・検討事項
gitleaksの設定をrecommendedのみ有効にしてるので、もう少し細かい設定をしてきたい。