背景
目的
この辺にあるように秘密情報のGitプッシュ・公開を防ぐために、git-secrets
(https://github.com/awslabs/git-secrets) を導入したときのことです。
- AWSアカウントを取得したら速攻でやっておくべき初期設定まとめ
- AWSアカウント作成後の初期設定(セキュリティ設定)
- クラウド破産しないように git-secrets を使う
- 初心者がAWSでミスって不正利用されて$6,000請求、泣きそうになったお話。
【2018/2/25追記】「GitHub に AWS キーペアを上げると抜かれるってほんと???試してみよー!」によると公開後13分後から幾つかのアクセスがあったそうです。
課題
git-secrets
をインストール後に、SourceTreeでプッシュしようとすると、秘密情報が入ってないpushでもエラーを吐くようになりました。
git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree commit -q -F /var/folders/xn/1hl03gp55_3df0y1xl37tg900000gp/T/SourceTreeTemp.xNvMuf
git: 'secrets' is not a git command. See 'git --help'.
Completed with errors, see above
どうやら「クラウド破産しないように git-secrets を使う」の「SourceTreeなどを使っているなら」部分の設定ができていない様子。
今回の主題
タイトルのとおりですが、git-secrets
導入に際して、SourceTreeでGitを使い続けるための具体的な手順をまとめておきます。
(2018.7.30追記) コメントで教えて頂いたbrew
でGitインストールして、SIP設定をパスできるアプローチはこちらです。
環境条件
- macOS Sierra version 10.12.3
- SourceTree version 2.3.1
- Git version 2.10.1 (Apple Git-78)
手順概要
- MacintoshのGitコマンドのファイルディレクトリに
git-secrets
をリンクする - SourceTreeが利用するGitを「システムのGit」を使用するに変更する
概要と書くとこうなるのですが、意外に付帯する作業があったので、書き出していきます。
設定
[手順1] MacintoshのGitコマンドのファイルディレクトリに git-secrets
をリンクする
Gitの場所を確認
git
の場所を確認しておく -> /usr/bin/git
$ which git
/usr/bin/git
つまり、/usr/bin/
に git-secrets
をリンクすると良いことになります。
git-secretsの場所を確認
git-secrets
の場所を確認しておく -> /usr/local/Cellar/git-secrets/1.2.1/bin/git-secrets
$ which git-secrets
/usr/local/bin/git-secrets
$ readlink git-secrets
/usr/local/Cellar/git-secrets/1.2.1/bin/git-secrets
あとは、
cd /usr/bin
sudo ln -s /usr/local/Cellar/git-secrets/1.2.1/bin/git-secrets
で、終了かと思いきや、/usr/local
や /usr/bin
へのリンクはsudo
しても拒否されてしまいます。ですので、準備はまだまだ続きます。
System Integrity Protecton(SIP)を無効にする
El Capitan以降のOSでSystem Integrity Protecton(SIP)という機能が追加されセキュリティが強化されたとのことで、これを一旦無効にしてあげる必要があります。
-
command + r
を押したままでMacを起動させ、リカバリーモードで立ち上げる - ヘッダメニューの「ユーティリティ」から「ターミナル」を立ち上げる
- ターミナルでSIPコマンド
csrutil disable
を打つ
git-secretsを/usr/bin/にリンクする
SIPが無効化されたら、いよいよgit-secrets
を/usr/bin/にリンクします。
cd /usr/bin
sudo ln -s /usr/local/Cellar/git-secrets/1.2.1/bin/git-secrets
System Integrity Protecton(SIP)を有効にする
目的のリンクがはれたら、SIPを有効にし直します。
-
command + r
を押したままでMacを起動させ、リカバリーモードで立ち上げる - ヘッダメニューの「ユーティリティ」から「ターミナル」を立ち上げる
- ターミナルでSIPコマンド
csrutil enable
を打つ
[手順2] SourceTreeが利用するGitを「システムのGit」を使用するに変更する
システムのGitを選択する
「SourceTree」の「環境設定」を開きます。更に「Git」タブを選択します。
「システムのGitを使用する」をクリックして、git
選択画面にいきます。
/usr/bin
の git
を選択し、「開く」をクリックします。ここで、同じ階層に先程リンクしたgit-secrets
も確認できます。
環境設定の画面に戻るとシステムのGitが選択されていることがわかります。
これで、Gitをプッシュし直すとエラー無しでプッシュすることが出来ました。
まとめ
ただリンクするにも意外とやることがあったので、簡単にまとめてみました。