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😙)