🔖
git-secrets を活用して、Discord Bot のトークンの混入を防ぐ
本記事は、Disocrd Botを開発する際についうっかりやってしまいがちな、シークレットトークンをGitHubに上げてしまい、Discordに怒られるということを減らすために書きました。これを実現するために、Gitの機能であるpre-commit
と、AWSlabが開発した、git-secrets
というスクリプトを用います。pre-commit
というのは、コミットの直前に設定したスクリプトを実行してくれる機能です(Git Hook)。pre-commit
の活用例には、例えば、linterの実行などがあります。git-secrets
はAWSの秘密情報を漏らさないために開発されたものです。今回は、それをDiscord Bot向けに流用しています。
tl;dr
cd /want/to/path
sudo apt install git-secrets
git secrets --add '[A-z0-9_]{24}\.[A-z0-9_]{6}\.[A-z0-9_]{27}\.'
git secrets install
インストール
git-secrets
のインストールを行います。git-secret
ではないので気をつけてください。公式のawslabs/git-secretsを参考に進めます。
Ubuntu
sudo apt install git-secrets
Mac
brew install git-secrets
Windows
git clone
してから、PowerShellで開きます。
PS > ./install.ps1
設定
まずDiscord Botを開発しているリポジトリまで移動します。
cd /want/to/path
パターンを登録
検査したいパターンを正規表現で書きます。パターンは.git/config
に書き込まれます。pre-commit
の設定は.git/hooks/
に書き込まれます。ファイルがすでに存在し、上書きしたい場合は、-f
オプションをつけてください。
git secrets --add '[A-z0-9_]{24}\.[A-z0-9_]{6}\.[A-z0-9_]{27}\.'
git secrets install
余談:ファイルの更新を無視する方法
トークンを./secret.txt
に配置しているとします。このとき、このファイルの更新を無視したいときは以下のコマンドを打ちます。
git update-index --assume-unchanged secret.txt
とすると、ある状態から更新されなくなります。.gitignore
にファイル名を書き込むのとは違い、リモートにファイル自体は存在させることができます。
Discussion