Google Workspaceと1Passwordを自動プロビジョニングで接続する手順です。ほかのIDプロバイダーと違い、Google Workspaceは1Passwordに変更を送ってきません。代わりに、Googleのサービスアカウントにディレクトリーの読み取りを認め、自社のGoogle Cloudプロジェクトで同期のジョブを動かします。新しい人とグループは1時間ごとに、外した人とグループはすぐに1Passwordへ反映されます。作業にはGoogle Workspaceの特権管理者と、Google Cloudのプロジェクトを扱える人の両方が要ります。このページでは、始める前にそろえるもの、サービスアカウントの作成、ドメイン全体の委任での認可、1Password側の設定、スクリプトが作るものの扱い、稼働後の運用を説明します。
始める前にそろえるもの
1Password側で作業する人は、所有者か管理者グループに属している必要があります。既存のメンバーのメールアドレスのドメインは、全て許可ドメインに入れておきます。
【注意】 同期するGoogle Workspaceのグループに入っていない既存のメンバーは、1Password側で一時停止されます。開始の前に、全員がいずれかの同期するグループに入っていることを確かめてください。グループを選ぶ画面で一時停止される人の一覧が表示されるので、そこでも確かめます。
Google側では次の3つをそろえます。
- ドメイン全体の委任を設定する<a href="https://knowledge.workspace.google.com/admin/users/prebuilt-administrator-roles" target="_blank">特権管理者</a>
- サービスアカウントが代わりに振る舞う管理者のメールアドレス。特権管理者か、ユーザーとグループの読み取りと
ReportsのAdmin APIだけを許可した<a href="https://knowledge.workspace.google.com/admin/users/create-edit-and-delete-custom-admin-roles" target="_blank">カスタムの管理者ロール</a>のアカウント - 課金を有効にしたGoogle Cloudのプロジェクトと、そこでサービスアカウント、APIの有効化、ジョブを作れる人。オーナーか、編集者にCloud Run管理者を加えた役割が目安です
同期に使うジョブは、Google Cloudの無料の利用枠に収まります。ただし、課金が無効のプロジェクトではジョブを作れません。組織のポリシーでサービスアカウントの鍵の作成が止められている場合は、<a href="https://cloud.google.com/iam/docs/keys-create-delete#allow-creation" target="_blank">鍵の作成を許可する設定</a>を組織のポリシーの管理者に依頼します。
同期するグループは、作業を始める前にGoogle Workspaceで作っておきます。設定の途中でグループの一覧は更新されないため、途中で作ったグループは選べません。最初は数人だけのテスト用のグループを用意すると、組織全体を同期する前に動きを確かめられます。
Googleのサービスアカウントを作る
<a href="https://console.cloud.google.com/" target="_blank">Google Cloud Console</a>で次の順に進めます。
- 1Passwordのプロビジョニング用のプロジェクトを作るか、既存のプロジェクトを選びます。
Admin SDK APIを開き、Enableで有効にします。- 左上のメニューから
IAM & AdminのService Accountsを選びます。 Create service accountを選び、名前を入れてDoneを選びます。- 作ったサービスアカウントを選び、
Keysを開きます。 Add KeyからCreate new keyを選び、JSONを選んで作成します。鍵のファイルがダウンロードされます。- 鍵のファイルを1Passwordのアイテムとして保存し、パソコンに残ったファイルは消します。

DETAILSタブ。次の節で使うClient IDもここから取る(画像は英語表示)
KEYSタブのADD KEYから、JSON形式の鍵を作るドメイン全体の委任で読み取りを認める
ここからは特権管理者の作業です。サービスアカウントに、ユーザー、グループ、グループの所属、監査のレポートを読むことだけを認めます。
- サービスアカウントの
DetailsタブでAdvanced settingsを開き、Client IDをコピーします。 - Google管理コンソールの<a href="https://admin.google.com/ac/owl/domainwidedelegation" target="_blank">ドメイン全体の委任</a>のページを開きます。
- <a href="https://knowledge.workspace.google.com/admin/apps/control-api-access-with-domain-wide-delegation" target="_blank">新しいクライアントを追加</a>し、コピーした
Client IDを貼り付けます。 OAuth scopesに、次の4つを1行で貼り付けてAuthorizeを選びます。
https://www.googleapis.com/auth/admin.directory.user.readonly,https://www.googleapis.com/auth/admin.directory.group.readonly,https://www.googleapis.com/auth/admin.directory.group.member.readonly,https://www.googleapis.com/auth/admin.reports.audit.readonly
4つとも末尾がreadonlyで、書き込みは含みません。1Password側が受け取るのはサービスアカウントの鍵だけで、管理者のパスワードは渡りません。
1Password側で設定を進める
1Password.comのサイドバーで統合を選び、ユーザープロビジョニングのセクションでGoogle Workspaceを選びます。ホスト型プロビジョニングをセットアップする操作を選ぶと、3つの段階に進みます。
鍵と管理者のアドレスを登録する
JSONの鍵のファイルをアップロードし、サービスアカウントが代わりに振る舞う管理者のメールアドレスを入れて次へ進みます。
同期のスクリプトを実行する
スクリプトをコピーし、表示されたボタンからGoogle Cloud Shellを開きます。Cloud Shellから認可を求められたら認可し、スクリプトを貼り付けて実行します。全文を確かめたい場合は、コピーの前に全文を表示できます。課金やCloud Schedulerのエラーで止まったら、プロジェクトの課金を有効にして実行し直します。終わったら1Passwordのタブに戻って次へ進みます。
同期するグループを選ぶ
1Passwordに同期するグループを選びます。検索するか、全てを選ぶこともできます。一時停止される人が表示されたら内容を確かめ、完了させます。
スクリプトが作るものの扱い
スクリプトは、Cloud Shellで選んでいるプロジェクトのus-central1のリージョンに、次の2つを作ります。
| リソース | 名前 | 役割 |
|---|---|---|
| Cloud Runのジョブ | op-provisioning-sync | 1Password CLIの公開イメージで同期を実行する |
| Cloud Schedulerのジョブ | op-provisioning-sync-hourly | 毎時0分にジョブを起動する |
ジョブを動かすのは、プロジェクトの既定のCompute Engineのサービスアカウントです。スクリプトには、この統合のために1Passwordが用意したサービスアカウントのトークンが入っていて、ジョブの環境変数として保存されます。トークンで届くのはプロビジョニングのクレデンシャルだけですが、スクリプトは機密として扱ってください。
【運用のポイント】 プロジェクトでジョブの設定を見られる人は、このトークンも見られます。1Password専用のプロジェクトにして、参加者を絞ってください。2つのリソースを消すと同期は止まります。基盤の整理で誤って消されないよう、プロジェクトの名前と用途を記録しておきます。
稼働後の運用
1Password側の統合からホスト型プロビジョニングを開くと、次の操作ができます。
- 同期するGoogleのグループを付け外しする
- 次の定時を待たずに今すぐ同期する。続けて同期できるのは5分後からです
- スクリプトを作り直す。取り消しはできず、新しいスクリプトをCloud Shellで実行するまで定時の同期は止まります
- 鍵や管理者のアドレスを入れ替える。新しい鍵が確かめられるまでは古い鍵が使われます
- IDプロバイダーとの同期のスイッチを切り、プロビジョニングを止める
即時のデプロビジョニングが使えるようになる前に設定した組織では、有効にする操作が表示されます。有効にすると、Google Workspaceから外した人とグループがすぐに反映されます。1Passwordに既にあるグループを同期したい場合は、管理対象のグループに加えます。人やグループが作られない場合は、同期のスイッチがオンになっているかを最初に確かめます。