🔐

envaultという.envを暗号化して扱うツールをつくった

に公開

一行でいうと、.env ファイルを暗号化し、環境変数を安全に管理するためのCLIツールをつくった。

DISCLAIMER

  • 俺が、この記事がどうとかより、あなたが安全だと思う判断して行動してください。
  • 判断できない人は判断できる勉強をしような!!!
  • たぶん、こういうツールはある。が、俺は他人のツールが信用できない時期にいる。

モチベーション

  • .env ファイルにクレデンシャル(認証情報)を書いて、ツールが読み込むコードが多い
  • .env ファイルは扱いが不安(誤ってコミットすると大事故だし、マシンにおいておくのも不安など)
  • 「.env怖い!!!!」
  • 「そうだ、.envを暗号化して、実行時にだけ復号→環境変数として展開→コマンド実行後は消える、という流れができれば安全そうじゃないか?」

repo

https://github.com/uzulla/envault

  • なんとPHPerがつくったのに、Go lang製ですが、ワンバイナリにしたかったので
  • セキュリティツールなので、できればソースコードを見てから各自ビルドしてほしい(要望があればビルド済みバイナリも用意を検討する)
  • 使い方によりますが、この例ではシェルをexecするので、もどったら消えます(重要)

sample

https://github.com/uzulla/MyOhAdmin/tree/main/proxmox

このツールでは、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