🔐
envaultという.envを暗号化して扱うツールをつくった
一行でいうと、.env ファイルを暗号化し、環境変数を安全に管理するためのCLIツールをつくった。
DISCLAIMER
- 俺が、この記事がどうとかより、あなたが安全だと思う判断して行動してください。
- 判断できない人は判断できる勉強をしような!!!
- たぶん、こういうツールはある。が、俺は他人のツールが信用できない時期にいる。
モチベーション
-
.env
ファイルにクレデンシャル(認証情報)を書いて、ツールが読み込むコードが多い -
.env
ファイルは扱いが不安(誤ってコミットすると大事故だし、マシンにおいておくのも不安など) - 「.env怖い!!!!」
- 「そうだ、.envを暗号化して、実行時にだけ復号→環境変数として展開→コマンド実行後は消える、という流れができれば安全そうじゃないか?」
repo
- なんとPHPerがつくったのに、Go lang製ですが、ワンバイナリにしたかったので
- セキュリティツールなので、できればソースコードを見てから各自ビルドしてほしい(要望があればビルド済みバイナリも用意を検討する)
- 使い方によりますが、この例ではシェルをexecするので、もどったら消えます(重要)
sample
このツールでは、Proxmoxのrootパスワードなどを .env に書く必要がある。
例えば、次のようなフローで使用します。
# .envファイルを作って、正常に動作するか確認する
$ source .env && ./listip.sh
# このようにして暗号化し、.envは消す
$ envault .env
暗号化用パスワードを入力してください:
パスワードを再入力してください:
暗号化されたファイルを作成しました: .env.vaulted
# 次からは実行時にパスワードを入力し、環境変数を展開してコマンドを実行する
$ envault export -- bash listip.sh
復号化用パスワードを入力してください:
3個の環境変数を設定して指定されたコマンドを実行します: bash listip.sh
Running VMs and their IP addresses:
VMID: 101, Name: xubuntu, IP: 192.168.***.***
VMID: 108, Name: oh, IP: 192.168.***.***
100.***.***.***
まとめ
- 「op(1password cli)とかつかえばいいのでは?」「MFAが結構面倒じゃない??」「その感性でセキュアとかきにしてるの!?!?」
- 一応いっておきますが、そこらのPHPerがつくるツールにセキュリティの高さは期待しないでほしい
- でも、うっかりcatでもれないだけでも違うと思う .env のような平文の機密情報を避けたいとき、一度試してみてほしい
Discussion