🔐

transcryptで暗号化する

2023/06/06に公開

これはなに

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