🔐
transcryptで暗号化する
これはなに
transcrypt はGitリポジトリにあるファイルを楽に暗号化するスクリプト。
以下のユースケースで便利。
- 開発時などにチームでアクセスキーなどを共有したいがリモートリポジトリに生の文字列で入れたくない
- AWSなどのパラメータストアを使いたくない(クォータの問題などで)
Gitリポジトリにフックとしてインストールするものなので、いったんインストールしてしまえば暗号化のし忘れなどもありません。
導入の流れ
入手
curl -O https://raw.githubusercontent.com/elasticdog/transcrypt/main/transcrypt
chmod u+x transcrypt
or
git clone https://github.com/elasticdog/transcrypt.git
cd transcrypt
ln -s ${PWD}/transcrypt /usr/local/bin/transcrypt
初期設定
Gitリポジトリはコミット済みの状態で実行します。
transcypt
鍵も自動生成してくれます。いったんすべてdefault状態で使います。
.gitattributes に追加
ここでは config/access-key.yml を暗号化する設定をします。
config/access-key.yml filter=crypt diff=crypt merge=crypt
動作確認
たとえば、 config/access-key.yml
を編集したとしましょう。
access_key: naishodayo
通常通りコミットして、リモートリポジトリにpushします。
git add config/access-key.yml
git commit -m 'accesskeyを追加したよ'
git push origin main
github 上で見てみると、こんな感じで暗号化されます。
U2FsdGVkX1/bM2uIsMGptaBI6ROx+cdGBYJaE4t5k0rWc6QPiLVBcNeSsLF10le0
lWK9rbmSyrg0Ob0OHHRR/hGPiEGU74/OV7+g0kOxsCI=
ローカルリポジトリ上は復号状態のため、push後のファイルの中身を確認するには以下のコマンドで出力できるようです。
transcrypt --show-raw config/access-key.yml
チームに共有する
transcrypt --display
コマンドを共有して設定してもらいましょう
Copy and paste the following command to initialize a cloned repository:
transcrypt -c aes-256-cbc -p 'hasfdafdsafsafdsafXyyW+HbasdfafsaRadfafdY'
アンインストールする
transcrypt -u
Discussion