git-secretsのawsトークン保護を検証してみた
Contents
はじめに
昨日、日課のはてなブックマークを漁っていたところ、Developers.IO さんの AWS でのセキュリティ対策全部盛り[初級から中級まで]というスライドを見つけました。
こちらのスライドの中で、git-secretsという AWS などの token 情報をgitに乗せてしまうのを防ぐソフトが紹介されており、以下のパターンの場合に正しく検知できるのかが気になったため検証しました。
- 既に token がコミットされていた場合
- どのように検知するのか?
- 既に token が混入してるコミットをプッシュした際には検知できるのか
既に token がコミットされていた場合
検索したところ、一年前に検証している人がいたみたいです。
既存のリポジトリにあとから git-secrets を対応させた場合、過去の commit 履歴を検査したいことがあるでしょう。その場合は、git secrets –scan-history を行うことで、git history をスキャンして検査することができます。まとめて以下に例示します。 git-secrets はじめました
一応、自分でも確認しようと思います。
まず、既に token がコミットされている git リポジトリを下記コマンドにて作成します。
| |
試しに、何もせずpushをしてみます。

案の定pushできてしまいました。
既に token が混入してるコミットをプッシュした場合
ここで、git-secretsを導入します。
| |
そしてpushテストをしてみます。
一度リモートにpushしているので、新しいリポジトリを作るか、forcePush でリモートを掃除してください。私は新しいリモートにpushしました。

アップロードされているみたいですね 😈
そもそも、git-secretsの概要が
Prevents you from committing secrets and credentials into git repositories
(シークレットとクレデンシャル情報を git リポジトリへコミットするのを防ぎます)
となっているので当たり前といえば、当たり前です。
既にコミットしているものを検知する
以下のコマンドで実現可能です。
| |

さいごに
git-secretsを入れておけば基本的に token をpushしてもうたwww w
もう終わりや 😇😇😇 …orz
にはならずに済みます。
シークレットをpushすること自体がほぼないと思うので、リポジトリ全体の secret 保護が行えるようになる
| |
を適応しておいて問題ないと思います。
(どうしてもpushしなければならない場合は--no-verifyオプションをつければ OK😙)