コーポレートエンジニアリング部ITサービスチームの高橋です。コーポレートエンジニアリング部ではスタッフや組織の課題をテクノロジーの力で解決するということをビジョンに掲げています。その中でも私が所属するITサービスチームでは、ZOZOグループ全体の生産性を上げるため、部門や組織の課題をテクノロジーの力で解決に導く役割を担っています。クラウドベースのツールを活用し「攻めの戦略」を重視し、社内の活性化を目指しています。
その一環として、パスワード管理ツール1Passwordを全社導入しました。導入に至った背景、製品選定で重視した点、及び実際の運用を紹介します。なお、弊社の環境は社員の大半がエンジニアで、社員数は400人規模です。
いきなり余談ですが、先日政府がPPAP(パスワード付きzipファイルをメール添付し別途パスワードを送信する意)を廃止する方針であると表明しました。2017年にはパスワードの定期的な変更は非推奨とされましたし、徐々にですが日本も古い慣習がなくなりつつあるように思います。
さて、本題です。
パスワード管理ツールの必要性
パスワード管理の基本は、強固なパスワードを作成し使いまわしせず、なるべく漏洩しないようにすることが挙げられると思います。ありがちなものとしては、以下のような方法があります。
- 付箋や紙に書いて管理
- PCのメモ帳で管理
- Excelで管理
- ブラウザに保存
ですがセキュリティや管理・運用のしやすさを考えると、上記の方法よりも専門ツールであるパスワード管理ツールを利用する方が優れています。
「パスワードなんてブラウザに保存できるからそれで事足りる」と思う方もいらっしゃると思います。しかし会社としてパスワード管理の基盤がないと、チームごとに管理方法が違ったりパスワードの共有に平文が用いられてしまったり様々なリスクが生じます。
パスワード管理ツールは、便利なだけではなくそういった問題を解決できるので、利用者側、管理者側ともに非常に有益なものと言えます。
パスワード管理ツールの選定
パスワード管理ツールは色々あります。
- 1Password
- LastPass
- パスワードマネージャー
- Keeper
- True Key
- Dashlane
- Bitwarden
ざっと調査しただけで、上記が挙げられます。
上記の全てを比較したわけではありませんが、どれも基本的な機能としては大差ありません。例えば下記のような機能があります。
- 複雑なパスワードの自動生成
- ID・パスワードの自動入力
- パスワードの強度や使い回しのチェック
- 多要素認証
- ID・パスワードの共有
強度の高いパスワードを生成でき、利用者は自身のマスタパスワードだけを覚えれば他のパスワードを覚える必要がなく、保存された情報は暗号化され安全に共有できます。もちろんパスワード以外のセンシティブな情報も保存できます。パスワード管理ツールはそのような機能を備えたツールです。
1Passwordの優位性
弊社では主に以下の点で、1Passwordを採用するに至りました。
Secret Keyの仕組みがある
1Passwordにはマスタパスワードに加えてSecret Keyがあり、たとえマスタパスワードが漏洩したとしても、Secret Keyを知らなければアクセスできません。マスタパスワードはデバイス上のデータを保護し、Secret Keyはデバイスからデータを保護してくれるとのことで、この二段構えの構成は安心できます。
グループ単位で管理できる
ビジネスプラン以上ではユーザグループを作成できます。グループにユーザを追加し、グループを保管庫(Vault)に紐付けることで権限付与が可能です。
CLI(コマンドライン)ツールがある
1Passwordにはコマンドラインツールがあります。コマンドラインツールに対応していることは、運用の自動化を考慮する上で重要な要素と捉えています。
例えば以下のようなことができます。
# ユーザ招待 op create user <メールアドレス> <氏名> # ユーザの停止と再開 op (suspend | reactivate) <user> # ユーザ削除 op delete user <user> # 一覧取得 op list (users | groups | vaults | items | documents | templates) [--vault <vault> | --group <group>]
レポーティング(パスワード漏洩チェック)機能がある
1Passwordにはドメイン侵害レポートがあります。自社が管理するドメインを登録しておくと、漏洩に巻き込まれたアドレスを見つけることができます。このレポートを元にしてパスワードの変更をユーザへ促すことができます。
導入にあたっての課題
課題は大きく3つありました。
- プランの検討
- SSO(シングルサインオン)が可能か
- プロビジョニングが可能か
プランの検討
1Passwordのビジネス向けプランは3つあります。
- Teams
- Business
- Enteprise
結論から言うと弊社はBusinessプランを選択しました。
Teamsプランでは、詳細な権限管理ができないため、全社的に導入するとなると機能不足でした。
Businessプランでは、より詳細な権限管理からログ管理やレポート閲覧まで豊富な機能を備えているため、SaaS製品としての機能が十分であると判断しました。また、Azure Active Directory、Okta、OneLoginと連携できるのもこのプラン以上になっています。弊社としては、グループで管理できることが運用上大きなメリットでした。ユーザ単位で権限管理をするのは運用が煩雑になると思います。
Entepriseプランでは、上記の機能に加えて専用窓口を設けてくれたり、導入にあたりトレーニングを受けられるなどのメリットがあるそうです。ですが弊社ではそこまでのサポートは必要なく、Businessプランで利用できる機能さえあれば十分でした。
SSO(シングルサインオン)が可能か
弊社のシステム選定基準では、基本的にSSOが利用できるシステムを選定しています。しかし、1Passwordの仕様上SSOは不可でした。SSOできないことは利用者目線に立つとある程度の不便さはあります。ですが1Passwordの認証の堅牢性の土台となっているSecret Keyの有用性とのバランスを考慮して、SSO不可であることを許容しました。
プロビジョニングが可能か
プロビジョニングを行うためには1Password SCIM bridgeを構成する必要があります。
- Google Cloud Platform Marketplace
- Docker, Kubernetes or Terraformで構築
SCIM bridgeサーバを構築するために、主要なクラウドサービスにおいて試算を行いました。しかし、現状ではコストメリットが無さそうだったためプロビジョニングの導入は一旦見送りました。会社の規模拡大に合わせ、再度検討したいと思っています。プロビジョニングの代わりに、前述のコマンドラインツールを活用し運用することにしました。
実際の運用
全社導入前に一部の部署で1Passwordを先行利用していたのですが、その時はグループを利用しておらずユーザを保管庫に直接割り当てる運用をしていました。しかしこれでは統一性もなく管理が煩雑だったため、グループベースで管理するように運用を変更しました。ユーザからの利用申請も、kintoneを用いたワークフローで管理し、保管庫とグループの一覧はスプレッドシートにて管理することにしました。
スプレッドシートで管理した理由は2つあります。
1つはグループや保管庫、グループ内メンバーの一覧と、グループがどの保管庫と紐付いているかをユーザが確認できるようにするためです。ワークフロー申請時にどのグループの権限を変更するかなどを記載してもらう際に必要な情報だからです。
もう1つは各保管庫の運用管理者を把握し、ワークフローにおける承認ルートにその保管庫の運用管理者を入れるためです。1Passwordの管理者からでは、各保管庫が実際にどういった使われ方をしているのか分かりません。そのためメンバー追加などの依頼時に各保管庫の運用管理者の承認を確実に得た状態で、管理作業を行っています。
導入効果
パスワード管理の理想的な運用基盤を構築できたことが大きな効果でした。人に依存した運用ルールで安全にパスワードを管理することは限界があります。パスワード管理ツールを用いることで、半強制的にガイドラインに沿った運用へ切り替えることができました。また冒頭で記載した通り、パスワードを平文で保存することはセキュリティリスクになります。そのためパスワードを暗号化できるパスワード管理ツールは、セキュリティの監査に対する解決策の1つとしても有効です。
分かりやすい効果としては以下のようなものがありました。
共有アカウントのパスワードを安全に共有できる
様々なパスワードを覚える必要がなくなり、パスワードジェネレータによって強力なパスワードの生成が容易になりました。例えば自分が共有しているパスワードを変更したとしても、1Password上のパスワードさえ更新されていれば、他の人に新しいパスワードを都度共有し直す必要はありません。利用者は自分のマスタパスワードだけを覚えていればよく、パスワードが変更されたことを知らずともログインできるからです。
また、セキュアにID・パスワードの共有が可能になり、閲覧権限の範囲をコントロールし易くなりました。例えば範囲がチームをまたぐような場合でも、専用のグループを作って該当者を入れてそのグループに保管庫の閲覧権限を割り当ててあげればよいわけです。
多要素認証のワンタイムパスワードの代替
さらに便利だと思ったのは、多要素認証で使用するワンタイムパスワードを1Password上に保存できることです。Authenticator系のアプリと同じように秘密鍵を1Passwordに保存することで、1Password上にワンタイムパスワードが表示されるようになります。
通常、多要素認証ではSMS(ショートメッセージサービス)やAuthenticator系のアプリでワンタイムパスワード(認証コード)を得るため必ずモバイル端末が必要になってしまいます。多要素認証を1Password上に保存すれば端末に縛られない運用が可能になります。
具体的な手順を解説します。
- まずは設定したいシステムの設定画面で、多要素認証の追加(もしくは変更)を実行し、その手順の中で秘密鍵を取得
- Authenticator系のアプリで読み取るためのQRコードが発行される画面などで、秘密鍵を表示できる箇所があると思いますので調べてみてください。※各システムによって異なります
- 秘密鍵を入手したら1Passwordのアイテム編集に移動
- 1Passwordのアイテム編集画面でラベルの欄にある…(三点リーダー)アイコンを選択
- ワンタイムパスワードを選択
- ワンタイムパスワードの欄に、先程入手した秘密鍵を貼り付けて保存
以上の手順でワンタイムパスワードが表示されるようになりました。元の秘密鍵を入手した画面(手順1)に戻り、6で表示されているワンタイムパスワードを入力して認証し作業は完了です。
まとめ・残課題
実際に導入してみて、パスワード管理ツールに慣れていないユーザからはいまいちよく分からないツールだと思われてしまう印象がありました。そのためマニュアルとは別に使い方を解説する動画を制作し、ユーザがより理解しやすいように工夫しました。
パスワード管理ツールは入れて終わるツールではありません。例えばパスワードをブラウザへ保存してるユーザに対して1Passwordへの移行を促す必要があります。また、ドメイン侵害レポートをチェックし、漏洩したパスワードを使用しているユーザにパスワードの変更を呼びかけることも重要です。活用方法や正しいパスワードの管理方法などは都度啓蒙していく必要があると感じています。
最後に
ZOZOテクノロジーズではコーポレートエンジニアリング部のメンバーを募集しております。 https://hrmos.co/pages/zozo/jobs/0000083hrmos.co