「パスワード管理」で会社が潰れる時代
Verizonの2023年版DBIR(データ侵害調査レポート)によれば、データ侵害の約80%が盗まれた認証情報に起因する。8割。しかもこれ、大企業の話じゃない。
従業員10人の会社だろうと、100人だろうと、ログイン情報をExcelで管理している時点でリスクは同じだ。NICT(情報通信研究機構)が2023年に観測したサイバー攻撃関連の通信は約5,200億件。「うちみたいな小さい会社は狙われない」——この思い込みが一番危ない。IPA(情報処理推進機構)の「情報セキュリティ10大脅威 2024」でも、ランサムウェアと認証情報の窃取が上位に居座り続けている。
僕自身、以前いた会社でパスワードの使い回しが原因のインシデントを経験した。社内Slackのチャンネルに「緊急」の文字が並ぶあの感じは、二度と味わいたくない。
この記事では、1Passwordをチームに導入して認証情報を一元管理する手順を書く。所要時間は約2時間。Excel管理やブラウザ保存からの卒業方法、退職者が出たときの対応まで、全部カバーする。
なぜ1Passwordなのか──Bitwarden・LastPassとの比較
パスワードマネージャーは1Passwordだけじゃない。Bitwardenは無料プランがあるし、LastPassも長い歴史がある。僕が中小企業のチーム導入で1Passwordを推す理由は3つ。
1つ目は、Watchtower。 1Password独自のセキュリティ監視機能で、チーム全体のパスワード強度、使い回し、漏洩済みの認証情報をダッシュボードで一覧できる。管理者が「うちのチームのセキュリティ状態」を5秒で把握できるのはデカい。Bitwardenにも漏洩チェックはあるが、チーム全体を俯瞰する管理画面の見やすさでは1Passwordが一歩先を行く。
2つ目は、Vault(保管庫)の柔軟さ。 「経理用」「開発用」「全社共有」のようにVaultを分けて、チームやメンバー単位でアクセス権を細かく制御できる。LastPassにも共有フォルダ機能はあるけど、2022年のセキュリティインシデント以降、信頼面で選びにくい企業が増えた。これは正直、LastPass側がかわいそうな部分もあるが、事実として移行先に1Passwordを選ぶケースが目立つ。
3つ目は、CLI(コマンドラインツール)とop://参照。 ここが開発チームには刺さる。後で詳しく書くが、.envファイルにAPIキーをベタ書きしなくて済む仕組みがある。Bitwardenにもcli機能はあるものの、op://のような環境変数統合の完成度では1Passwordが頭一つ抜けている。
料金は1Password Businessが月額$7.99/ユーザー(2024年時点)。Bitwardenの$4/ユーザーより高い。ただ、管理画面の使いやすさとWatchtowerの存在を考えると、ITに専任者がいない中小企業ほど1Passwordのほうが運用が楽だと僕は思っている。
STEP 1: チームアカウントの作成と初期設定(10分)
まずは1Password Businessアカウントを作る。
1Passwordの公式サイト(1password.com)から「Business」プランを選んで登録する。14日間の無料トライアルがあるから、まずはそれで試せばいい。
登録するとSecret Key(シークレットキー)が発行される。これはマスターパスワードとは別の、アカウント固有の暗号鍵だ。PDFでダウンロードして、印刷して金庫に入れるか、物理的に安全な場所に保管する。ここだけはアナログでいい。デジタルで保管したら本末転倒になる。
管理者アカウントが作れたら、ブラウザ拡張(Chrome、Firefox、Safari、Edgeに対応)をインストール。これで、ログイン画面を開いたときに1Passwordが自動でIDとパスワードを入力してくれる。入力時間は2秒もかからない。
(ちなみに、ブラウザの「パスワードを保存しますか?」は全社員のPCでオフにしておくべきだ。Chromeのパスワードマネージャーは便利だけど、PCにログインできる人なら誰でも閲覧できてしまう。1Passwordに一本化するなら、ブラウザ保存は消す。これ、忘れがち。)
STEP 2: Vaultの設計とメンバー招待(30分)
ここが肝。Vault(保管庫)の設計を間違えると、あとから修正するのが面倒になる。
僕がおすすめする最小構成はこうだ。
- 全社共有Vault ── Wi-Fiパスワード、共用サービスのアカウントなど、全員がアクセスするもの
- 部署別Vault ── 経理なら会計ソフト、開発ならAWSやGitHubなど、部署単位でアクセス制御したいもの
- 個人Vault ── 各メンバーの個人パスワード。管理者でも中身は見えない
10人以下の会社なら「全社共有」と「個人」の2つで十分なこともある。Vaultが多すぎると「どこに保存すればいいんだっけ?」問題が起きるから、最初はシンプルに始めて、必要になったら増やすくらいがちょうどいい。
Vaultを作ったら、チームメンバーを招待する。管理コンソールの「People」から、メンバーのメールアドレスを入力して招待メールを送る。相手がアカウントを作成すると、管理者側に承認リクエストが届く。承認して、該当するVaultへのアクセス権を付与する。1人あたり3分くらいの作業だ。
STEP 3: 既存パスワードの移行(1時間)
ここが一番時間がかかる。けど、一度やれば終わりだ。
ブラウザに保存されたパスワードの移行。 Chrome、Firefox、Safariそれぞれにパスワードのエクスポート機能がある。CSVで書き出して、1Passwordの「Import」機能で読み込む。1Passwordは主要ブラウザのCSV形式に対応しているから、特別な変換は不要。
Excelやスプレッドシートで管理していたパスワードの移行。 1Passwordのインポート用CSVテンプレートに合わせて列を整形してからインポートする。列は「Title」「URL」「Username」「Password」「Notes」の5つ。地味な作業だけど、ここで全部移しきることが大事。中途半端にExcelが残ると、結局そっちも見に行く羽目になって一元管理が崩壊する。
移行が終わったら、元のCSVファイルは完全に削除する。 ゴミ箱からも消す。パスワードが平文で書かれたCSVファイルがPCに残っているのは、鍵のかかった部屋の前に合鍵を置いているようなものだ。
移行後、1PasswordのWatchtowerを開いてみてほしい。「Reused Passwords(使い回し)」「Weak Passwords(脆弱)」「Compromised(漏洩済み)」が赤く表示されるはずだ。これを見て青ざめるのは通過儀礼みたいなもの。僕も初めてWatchtowerを見たとき、使い回しの多さにちょっと引いた。でも、可視化できたということは、直せるということでもある。
STEP 4: 運用ルールを決める(15分)
ツールを入れただけでは意味がない。チームで守るルールを3つだけ決める。
ルール1: 新しいサービスに登録するときは、必ず1Passwordのパスワード生成機能を使う。 自分で考えない。1Passwordに20文字以上のランダムパスワードを生成させて、そのままVaultに保存。人間が考えたパスワードは、どうやっても偏りが出る。
ルール2: パスワードの共有は1Password経由のみ。 SlackのDMで「パスワード送って」は禁止。Vaultの共有機能を使う。一時的に外部の人と共有したい場合は、1Passwordの「共有リンク」機能を使えば、有効期限つきのリンクを発行できる。期限が切れたら自動でアクセス不可になる。
ルール3: 退職者が出たら、即日アカウントを無効化する。 これ、手順を書いておかないと忘れる。
退職者が出たときの具体的な手順
退職者対応は、1Passwordの管理コンソールから5分で完了する。
- 管理コンソールの「People」を開く
- 該当メンバーを選択
- 「Suspend」(一時停止)をクリック ── まずはこれで即座にアクセスを遮断
- 引き継ぎが完了したら「Remove from team」でアカウントを完全削除
- そのメンバーがアクセスしていたVault内の共有パスワードを一括変更
5番目が忘れられがちだ。アカウントを消しても、退職者がパスワード自体を記憶していたり、どこかにメモしていたりする可能性はゼロじゃない。特に、AWSのルートアカウントやGoogle Workspaceの管理者パスワードのように重要度の高いものは、退職日当日に変更する。
(ここで余談だけど、退職者のアカウントを「いつか消そう」と放置して半年経っていた——という話は珍しくない。四半期に一回、メンバーリストを棚卸しする習慣をつけるだけで、このリスクはかなり減る。)
開発チーム向け:APIキーと.envファイルの管理
ここは開発者がいるチーム向けの話。
.envファイルにAPIキーを直書きしていないだろうか。OPENAI_API_KEY=sk-proj-xxxxxみたいなやつだ。このファイルが.gitignoreに入っていなかったらGitHubに公開される。入っていても、ローカルPCが盗まれたら丸見えになる。
1PasswordのCLIツール(opコマンド)を使うと、.envファイルにop://参照を書ける。
OPENAI_API_KEY=op://Development/OpenAI/api-key
DATABASE_URL=op://Development/PostgreSQL/connection-string
こう書いておけば、.envファイル自体にはシークレットが含まれない。実行時にop run -- npm run devとすれば、1Passwordがop://参照を実際の値に解決して環境変数に注入してくれる。
これの何がいいかというと、新しいメンバーがチームに加わったとき、「APIキー教えて」「.envファイル送って」のやり取りが不要になる。1PasswordのVaultへのアクセス権を付与するだけで、同じ.envテンプレートがそのまま動く。オンボーディングが圧倒的に速くなる。
セキュリティ周りの基本的な考え方は、ChatGPTを安全に使うためのセキュリティチェックリストにもまとめているから、あわせて読んでみてほしい。
「覚えなくていい」が最大の価値
1Passwordを入れて一番変わるのは、「パスワードを覚える」という行為から解放されることだ。
覚えるのはマスターパスワード1つだけ。あとは1Passwordが全部やる。ログイン画面を開いたらブラウザ拡張が自動入力してくれるから、2秒でログインが終わる。パスワードを忘れてリセットメールを待つ、あの無駄な3分がなくなる。
10人のチームで、1人あたり1日2回パスワードリセットが発生していたとする。1回3分として、月に20営業日。10人 x 2回 x 3分 x 20日 = 1,200分 = 20時間。月20時間が消えていた計算になる。もちろんこれは極端な例だけど、「パスワードどこだっけ?」の時間は確実にゼロに近づく。
導入後にやること
1Passwordを入れて2週間経ったら、Watchtowerをもう一度開く。
「Reused」が0になっていたら、チームのセキュリティレベルは導入前とは別物だ。まだ赤いアイテムが残っていたら、週次ミーティングの冒頭5分で「今週はこの3つのパスワードを変更しよう」と共有する。一度に全部やろうとすると挟折する。邸3つでいい。
付箋に書かれたパスワードをモニターから剥がす。共有Excelファイルを削除する。ブラウザの保存済みパスワードを消す。これで古い管理方法への退路が断たれて、1Passwordへの移行が完了する。
地味な作業だ。でも、Verizonの報告にある「80%」の側に入らないための、一番確実な打ち手でもある。2時間で終わる。今日やろう。







