Bitwarden を Docker で構築したのでまとめてみた。
本当はシステム構築の最後まで完遂したかったのだが、今回はHTTPでのセットアップと動作確認まで。
Contents
イントロ
皆さんはパスワード管理サービスは利用していますか?
私は漏らしてはいけない id/password を第三者に預けるという矛盾がしっくり来ず、
これまでその手のサービスやアプリは利用してきませんでした。
サービス・アプリ側に悪意がある場合は論外にしても、
たとえ悪意がなくても閉じ忘れたセキュリティホールがあったり、
多量のパスワードがあると分かっていると、そもそもハッカーなどに狙われるリスクが高いです。
そんな考えで、これまでパスワード管理サービスは触れて来なかった私が、
今回初めて導入してみようかと思えたのが、この Bitwarden です。
Bitwarden とは?
イントロで触れた通り、Bitwarden はパスワード管理サービスです。
多くの特徴を備えていますが、私が注目したのは主に以下のて点です。
- オープンソースで開発されている
- Win, mac, Linux に加えて、各種ブラウザ拡張、iOS/Android も含めたクロスプラットフォーム
- id/パスワードの自動検出, 自動入力(ブラウザ拡張)
- クラウド同期
- そのクラウド同期をオンプレミスでセルフホストできる
そのほかにも目に付く機能として以下が挙げられる。
- 認証情報のほか、クレジットカード, 秘匿情報など
- ファイルの暗号化や共有
- 生体認証, ツーファクター認証
- パスワードジェネレータ
- インポート・エクスポート機能
- プレミアム機能も使える(?)
パスワード管理サービスは利用者が多い、オープンソースプロジェクトなのは必須条件。
ただし私自身が公開されているソースを全て読んでセキュリティ・チェックはできないので、
最終的にはデータをどこに保管するかというのが私にとっては非常に重要。
その点、Bitwarden はデータ保存先をオンプレミスに自分でホスティングすることができる。
今回は、この Bitwarden サーバーを Docker で自前で用意する。
[公式] Bitwarden on Docker
この辺に詳しい導入手順がある。
かなり詳しく説明されているので詰まらずに導入できそうではある。
しかし私が気になったのは以下の2点。
- 自前で稼働するにも Bitwarden の installation id/password が必要
- 最小必要構成が メモリ2GB と割と大きめ
前者は Bitwarden のクライアント接続用のアカウントとは別に、
公式のサーバー実装では、サーバー側の動作にも別途アカウントが必要というもの。
一応公式にどういうものかという説明が以下のようにある。
- Authenticate to push relay servers for push notifications to Bitwarden client applications.
- Validate licensing of paid features.
後者は必要要件に記載されており、2コア4GB以上を推奨されている。
実際に導入された先駆者の記録を見ても、なかなかヘヴィという感想が見られる。
大きな企業で導入するなら或いはということなのだろうが、
少人数、ましてや私のように個人で利用するにはちょっと仰々しいようだ。
そこで私は以下の別の選択肢を採用することにした。
[非公式] vaultwarden on Docker [旧 bitwarden_rs]
そういう背景もあって、個人や少人数向けに比較的軽い実装を目指して作られたのがこの vaultwarden。
最終的には https 経由でのアクセスにしたいところだが、
何やら複雑そうなので、ローカルでの運用ということもあり、
ひとまず簡単な http で感触を掴んでみる。
Docker によるセットアップ
Docker についてはこちら。
どこか適当なディレクトリを用意する(vwardenなど)
1 2 |
$ docker pull vaultwarden/server:latest $ docker run -d --name vaultwarden -v ~/vwarden/vwdata/:/data/ -p xxxxx:80 vaultwarden/server:latest |
ブラウザから http://[host address]:xxxxx/ でアクセスしてみる。
ログイン画面のようなものが出ればひとまず成功。
アカウント作成 (http接続への対応)
ところが「アカウントの作成」から情報を入れて "送信" を押しても、
"This browser requires HTTPS ~" とか言われてアカウントの作成ができない。
このページによると、最近の殆どのブラウザでは、
https 経由でしか Web Crypto API を呼べない仕様になっているようです。
(表中の "Secure context required" が該当)
そこで同表で https を要求していない Safari からアカウントを作成すると問題なく通りました。
クライアント側のアプリ、ブラウザ拡張に関しては http経由でも接続できるようです。
(※iOS版のクライアントアプリはダメでした。)
クライアントの接続 (セルフホスティングへの対応)
Bitwardenアプリなりブラウザ拡張なりのクライアントから接続します。
ログイン画面の右上(or 左上) の歯車からセルフホスティング環境を設定します。
一番上のサーバーURLだけ設定すればOKです。
自動入力, 自動検出&登録 (ブラウザ拡張のみ)
この機能はブラウザ拡張経由でのみ提供されます。
Bitwarden 公式のダウンロードページ、"Web Browser" の項に各種ブラウザ対応の拡張機能があります。
自動入力
ブラウザ拡張からログイン後、
右下の設定タブ → その他/オプション → "ページ読み込み時の自動入力を有効化" にチェック。
これで対応する入力フォームを検出すると、保存したログイン情報を自動入力してくれるようになる。
※この機能は実験的機能とのこと
自動検出&登録
同じく設定/オプションから、"ログイン情報追加の通知を無効化" にチェックが入っていないことを確認。
これでまだ保存されていないログイン情報を検出すると、ページ上部に追加するかどうかのダイアログが表示される。
まとめ
ログイン情報の保存場所を自分でホスティングできる Bitwarden を紹介しました。
サーバー側の実装として公式のものに加えて、非公式の vaultwarden (旧 bitwarden_rs)があり、
今回はこちらを Docker で稼働させ、http接続で動作確認を行いました。
次回は https 接続できるようにしていきたいと思います。