無料でも利用可能なパスワードマネージャーbitwardenが便利
https://3.bp.blogspot.com/-la0WXIEj3Og/VA7mbmBn1UI/AAAAAAAAmQY/FlJynwAD9ro/s800/yuusya_game.png
【背景】
パスワードマネージャーといえば、1Passwordが思い浮かびますが、プライベートの利用となると個人利用でも有償であることから、そこまでヘビーユースでない場合は特にもったいない感じがします。無料で使えて便利なパスワードマネージャーはないのでしょうか?
【結論】
bitwardenを利用しましょう。bitwardenは個人利用のフリープランを無料で利用することができます。無料とはいえ、保存可能なパスワードの制限等もなく2FAのサポートもしているので安全かつ便利です。また1Password同様にGoogle Chromeの拡張機能が用意されており、ショートカット(chrome://extensions/shortcuts)を設定すれば、ブラウザ上で簡単にパスワードのread/writeはもちろん、現在閲覧しているページのログイン情報の参照や自動生成したパスワードをクリップボードにコピーすることも可能です。
また、bitwardenはオープンソース化されており、CLIツールやセルフホステッド用のアプリケーションコードが公開されています。
【CLIツールを使ってみた】
今回はお試しとして、bitwardenのアカウントにログインして、作成したvault(保管庫)に入っているアイテムを参照してみましょう。
CLIツールはnpmにて公開されています。何はともあれ早速インストールしてみます。
code:test.sh
$ npm install -g @bitwarden/cli
インストールが完了したら、bitwardenのアカウントにログインします。
code:test.sh
$ bw login
? Email address: ******
? Master password: hidden
? Two-step login code: ****
You are logged in!
To unlock your vault, set your session key to the BW_SESSION environment variable. ex:
$ export BW_SESSION="**********"
$env:BW_SESSION="**********"
You can also pass the session key to any command with the --session option. ex:
$ bw list items --session **********
ログインが完了すると上記の通り、セッション用のトークンが払い出されるので、環境変数 BW_SESSION か各コマンドに --session オプションにセッションを設定することでvaultの操作が実施できます。注意点として、このトークンはあくまでアカウントへのログイントークンであるため、vaultへのアクセス時には毎回パスワードの入力を求められます。こちらをスキップするために下記のコマンドにてvaultをアンロック(認証スキップ)します
code:test.sh
$ bw unlock
? Master password: hidden
Your vault is now unlocked!
To unlock your vault, set your session key to the BW_SESSION environment variable. ex:
$ export BW_SESSION="**********"
$env:BW_SESSION="**********"
You can also pass the session key to any command with the --session option. ex:
$ bw list items --session **********
ログイン時と同様にセッション用のトークンが払い出されるので、環境変数 BW_SESSION か各コマンドに --session オプションにセッションを設定することでvaultをアンロックして操作が実施できます。ちなみにロック(認証スキップの解除)を実施するには下記のコマンドを実行してvaultをロックします
code:test.sh
$ bw lock
Your vault is locked.
vaultをアンロックおよび環境変数BW_SESSIONを設定したことを前提に、vaultに保存しているアイテム一覧を下記コマンドにて確認してみます。
code:test.sh
$ bw list items
情報はセンシティブなため非公開にしますが、json形式でvaultに保存したアイテム一覧が取得できます。jsonのプロパティの中にidがあるので、特定のアイテムのidを指定してアイテムの様子を見ることもできます。
code:test.sh
$ bw get item id
他にも特定のサービスのログインパスワードを参照することもできます。GitHubのログインパスワードを参照したい場合は以下のコマンドを実行します。
code:test.sh
$ bw get password github.com
CLIツールの各コマンドについては、ドキュメントが用意されているのでこちらを参考にすると良いでしょう。
【余談】
CLIツールを参照すれば、各サービスのクライアント用のアカウント情報などをbitwargenに保存し、CLIから参照することができるので、環境変数用のファイルや設定が複雑化しなくなる未来もありそうです。検証はまた次の機会に。