DockerでPassboltをセルフホスト:技術チームのZalo経由のパスワード共有に終止符を打つ

Security tutorial - IT technology blog
Security tutorial - IT technology blog

現状:ZaloとExcel — 多くのスタートアップにおけるセキュリティの「急所」

多くの技術チームと仕事をする中で、繰り返し目にする光景があります。rootパスワード、APIキー、データベースのアカウント情報などが、ZaloやSlackでそのまま送られたり、共有のGoogleドキュメントに放り込まれたりしているのです。このやり方は非常にリスクが高いです。チームメンバーのPCがマルウェアに感染したり、ブラウザのセッションが漏洩したりするだけで、インフラ全体がハッカーの手に渡ってしまいます。

統計によると、データ漏洩の80%以上は、不適切な認証情報の管理に起因しています。管理パスワードが古いチャットグループに残っていたために、サーバーのデータがすべて削除されたケースも実際に見てきました。Passboltは、この問題を根本から解決するために作られました。これは、エンドツーエンド暗号化(E2EE)を採用したオープンソースツールで、詳細な権限設定と透明性の高い監査ログ(Audit Log)をサポートしています。

クイックスタート:Dockerを使って15分でPassboltを起動する

待ち時間を減らすために、Docker Composeを使用してラボ環境や個人サーバーにPassboltを導入する最短の方法を紹介します。

ステップ1:docker-compose.yamlファイルの準備

まず、ディレクトリと設定ファイルを作成します:

mkdir passbolt && cd passbolt
nano docker-compose.yaml

以下の内容を貼り付けます(データベースのパスワードと APP_FULL_BASE_URL を変更するのを忘れないでください):

version: '3.4'
services:
  db:
    image: mariadb:10.11
    environment:
      - MYSQL_ROOT_PASSWORD=あなたのパスワードに書き換えてください
      - MYSQL_DATABASE=passbolt
      - MYSQL_USER=passbolt
      - MYSQL_PASSWORD=passbolt_password
    volumes:
      - ./database:/var/lib/mysql

  passbolt:
    image: passbolt/passbolt:latest-ce
    depends_on:
      - db
    environment:
      - APP_FULL_BASE_URL=https://passbolt.yourdomain.com
      - DATASOURCES_DEFAULT_HOST=db
      - DATASOURCES_DEFAULT_PASSWORD=passbolt_password
      - DATASOURCES_DEFAULT_USERNAME=passbolt
      - DATASOURCES_DEFAULT_DATABASE=passbolt
    volumes:
      - ./gpg:/var/www/passbolt/config/gpg
      - ./images:/var/www/passbolt/webroot/img/public
    ports:
      - "80:80"
      - "443:443"

ステップ2:起動と管理者登録

docker-compose up -d コマンドを入力してコンテナを起動します。約1分後、以下のコマンドを使用して管理者アカウント登録用のリンクを取得します:

docker-compose exec passbolt su -m -c "/var/www/passbolt/bin/cake passbolt register_user -u [email protected] -f Admin -l System -r admin" -s /bin/sh www-data

システムから一意のリンクが発行されます。そのリンクをブラウザで開き、個人のGPGキーペアの作成を開始してください。

なぜBitwardenやVaultではなくPassboltなのか?

Bitwardenも良いのに、なぜ変える必要があるのか?」という質問をよく受けます。実際、ツールにはそれぞれ異なる設計思想があります。Bitwardenは個人利用やマルチデバイスでの利便性を重視しています。対して、Passboltは**コラボレーション(Collaboration)**に特化しています。

  • GPGの思想:各ユーザーが独自のキーペアを所有します。サーバーのシステム管理者であっても、ユーザーが明示的に共有しない限り、従業員のパスワードを盗み見ることはできません。
  • 詳細な監査ログ(Audit Log):午後3時に誰がTelegramボットのパスワードをコピーしたかを正確に把握できます。企業環境において、この透明性は不可欠です。
  • 柔軟な権限管理:開発チーム、マーケティングチーム、インフラチームといったフォルダごとに権限(参照、更新、所有者)を割り当てる操作が非常に直感的です。

応用的なデプロイ:SMTPとHTTPS

HTTP経由でPassboltを使用することは、セキュリティ上の自殺行為です。また、HTTPSでない場合、ブラウザの拡張機能が復号化をブロックします。5〜10人のチームで運用するには、SMTPとSSLの設定が必須です。

最もスマートな方法は、前段にNginx Proxy ManagerやTraefikを置いてリバースプロキシとして運用することです。自宅でホストしており固定IPがない場合は、Cloudflare Tunnelが非常に有効な解決策となります。ポート開放なしで無料でSSLを利用できます。

実践的なアドバイス:運用で「痛い目」を見ないために

自身のプロジェクトでしばらく運用してみて得た、3つの重要な教訓を紹介します:

1. 秘密鍵(Private Key)は絶対に紛失しないこと

パスフレーズを忘れ、秘密鍵も紛失した場合は、データが完全に失われることを意味します。Passboltには、一般的な「メールによるパスワード再設定」機能はありません。.asc ファイルをUSBメモリや物理的な金庫に慎重にバックアップするよう、チームに徹底してください。

2. データベースのバックアップを自動化する

データはすべてMariaDBに保存されています。毎日午前2時にデータベースをダンプする cronジョブを設定しましょう:

docker-compose exec db mysqldump -u passbolt -p'passbolt_password' passbolt > backup_$(date +%F).sql

3. コピペではなく「共有(Share)」機能を優先する

パスワードをコピーしてチャットで送るようなことは絶対にしないでください。Passboltインターフェース上の**共有(Share)**機能を直接使ってください。従業員が退職した際も、クリック一つでアクセス権を剥奪(Revoke)できるため、関連する数十のシステムのパスワードをいちいち変更して回る必要がなくなります。

最後に

Passboltのセルフホストには、メンテナンスに対する責任が伴います。しかし、その見返りとして、チームは自由と絶対的なデータセキュリティを手にすることができます。このガイドが、皆さんのワークフローをよりプロフェッショナルなものにし、Zalo経由の認証情報漏洩の不安から解放される助けになれば幸いです。

Share: