【1Password移行②】なぜ1Passwordを選んだか
前回は「なぜディスクから機密情報を消すか」という話をしました。
今回は、移行先として1Passwordを選んだ理由を書いていきます。
ちなみに最初から1Password一択だったわけじゃなくて、いくつか候補を比較しながら決めました。
目次
何を求めていたか
「ただパスワードを管理したい」だけなら、どのツールでも大差ありません。
でも今回の目的は「開発環境の機密情報をディスクから消す」こと。
そうなると、求める要件がちょっと変わってきます。
自分が求めていた要件はこんな感じです。
- CLI対応:ターミナルからシークレットを取り出せる
- SSH agent:SSHキーをパスワードマネージャー側で管理できる
- 環境変数注入:
op runのように、シークレットを環境変数として注入できる - シークレット参照:設定ファイルに値を直書きせず、参照形式で書ける
- Mac / Linux対応:macOS と Linux で動く
特に「SSH agent」と「環境変数注入」は必須でした。
これができないと、SSHキーと .env の移行ができないので。
候補として挙がったもの
macOS Keychain
Mac標準なので追加コストゼロ。
ただ、CLIからのアクセスが security コマンド経由でちょっと複雑だし、SSH agentとしては使えません。
Macオンリーなのも気になりました。
Bitwarden
オープンソースで無料プランもある、コスパの良いパスワードマネージャーです。
CLI(bw)もあって使いやすい。
ただ、SSH agentとしての機能はなく、op run のような環境変数注入の仕組みも持っていません。
「パスワード管理」は得意だけど「開発ツール統合」はやや弱い印象でした。
HashiCorp Vault
エンタープライズ向けのシークレット管理ツール。
機能は申し分ないんですが、自前でサーバーを立てる必要があって、個人や小規模チームには正直オーバースペックでした。
「管理するためのインフラを管理する」のが大変すぎる。
direnv + .envrc
ディレクトリごとに環境変数を切り替えられる便利ツールです。
でも結局 .envrc に値を書くことになるので、「ディスクから消す」という目的は達成できません。
あくまで環境変数を使いやすくするツールで、シークレット管理ではないですね。
1Passwordを選んだ理由
比較した結果、1Passwordが一番「開発ツールとの統合」が手厚かったです。
決め手になったのはこの4つ。
① SSH agent が使える
1PasswordのデスクトップアプリがSSH agentとして動いてくれます。
秘密鍵を1Passwordに保存しておけば、~/.ssh/ に鍵ファイルを置かなくてもSSH接続できます。
GitHubへのpushも、サーバーへのSSHも全部1Password経由になります。
② op run で環境変数を注入できる
op run -- コマンド の形で実行すると、1Passwordのシークレットを環境変数として注入してくれます。
op run -- node server.js設定ファイルには op://Vault名/アイテム名/フィールド名 という参照形式で書いておけば、実行時に値が展開されます。.env ファイルに値を書かずに済むので、ディスクから消せます。
③ CLI(op)が使いやすい
1Passwordの公式CLIツール op は、シェルスクリプトやMakefile、CI/CDとの統合がしやすいです。
シークレットを取り出したり、アイテムを管理したりが全部ターミナルでできます。
④ 有料だけど払う価値があった
月額 $2.99(個人プラン)です。
無料で使えるBitwardenと比べると高いんですが、SSH agent と op run の機能だけで元が取れると判断しました。
「パスワード管理ツール」ではなく「開発環境のインフラ」として考えると、この価格は安いです。
次回:Vault設計
ツールが決まったら、次は「どう整理するか」の設計です。
1PasswordにはVaultという概念があって、アイテムをグループ分けできます。
次回 A-3「Vault設計」では、どう分けると後が楽になるかを書いていきます。
今回は以上です!