Cloud Serviceを使用したGoogle Workplaceのユーザーとチームのプロビジョニング

Cloud Functionを使用してGoogle Workspaceからユーザーとグループを自動的にプロビジョニングする方法

概要

Google Cloud Functionを使用してGoogle WorkspaceからKeeper にユーザーを自動的にプロビジョニングする方法について解説します。これには、ユーザー、グループ、ユーザー割り当てのプロビジョニングが含まれます。ユーザーとチームのプロビジョニングには、ライフサイクル管理のためのいくつかの機能が備わっています。

  • どのGoogle グループやユーザーをKeeperにプロビジョニングするかを指定できます。

  • Keeperに割り当てられたGoogleグループはKeeperチームとして作成されます。

  • Keeperチームをボルト内の共有フォルダに割り当てられます。

  • グループに追加された新しいユーザーは自動的にKeeperに招待されます。

  • グループとユーザーの割り当ては同期のたびに適用されます。

  • ユーザーのプロビジョニングが解除されると、Keeperカウントが自動的にロックされます。

本ページの設定手順で、Google Workspaceアカウントからユーザーとグループをプロビジョニングします。設定には以下のリソースにアクセスする必要があります。

この実装ではKeeper Secrets Managerを使用して、最小限の権限でGoogleとKeeperを最も安全に統合します。Keeper Secrets Managerをご使用でない場合は、Keeperカスタマーサクセス チームにお問い合わせください。

手順 1: Google Cloudプロジェクトの作成

Google Cloudにログインし、プロジェクトを作成するか既存のプロジェクトを選択します。プロジェクト名は「Keeper SCIM Push」など任意の名前にします。

新しいGoogle Cloudプロジェクトを作成

手順 2: Admin SDK APIを有効にする

  • APIs & Servicesで、[+ ENABLE APIS AND SERVICES] (APIとサービスを有効にする) をクリックします。

  • Search for APIs & Servicesで、Admin SDK APIを入力します。

  • [ENABLE] (有効にする) をクリックします。

Enable Admin SDK API

手順 3: サービスアカウントを作成

ここで作成したサービスアカウントは、Google Workspaceのユーザーとグループの情報にアクセスするために使用されます。

  • IAM and Adminメニューで、サービスアカウントを選択します。

  • keeper-scimというサービスアカウント名で[+ CREATE SERVICE ACCOUNT]をクリックします。

新規作成のサービスアカウントの場合、Actionsの3つの点をクリックして[Manage keys] (キーの管理) を選択します。

[鍵を追加]から[新しい鍵を作成]をクリックし、鍵のタイプとして[JSON]を選択してから[作成]をクリックします。

サービスアカウントの認証情報が含まれたJSONファイルがコンピュータにダウンロードされます。

ファイル名をcredentials.jsonに変更し、上のセットアップ手順で作成したKeeper設定記録に添付ファイルとして追加します。

手順 4: Client IDをコピー

サービスアカウントへと移動し、[DETAILS]タブから[Advanced Settings]へ進みます。

[Domain-wide delegation]でClient IDをコピーします。次の手順でこのClient IDにGoogle Workspace Directoryへのアクセスを付与します。

手順 5: Google Workspaceでサービスアカウントを承認

Google Workspace Panel (https://admin.google.com)で以下を行います。

  • [Security] (セキュリティ) > [API controls] (API制御) へ進みます。

  • Domain wide delegationの下の[MANAGE DOMAIN WIDE DELEGATION]をクリックします。

  • API Clientsで[Add new]をクリックします。

  • 前の手順でコピーしたClient IDを貼り付けます。

以下のテキストをOAuth scopes (comma-delimited)に貼り付けます。

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.directory.user.readonly

[AUTHORIZE] (承認) をクリックします。これらのスコープにより、サービスアカウントにGoogle Workspaceディレクトリユーザー、グループ、メンバーシップへの読み取り専用アクセスが付与されます。

手順 6: Primary Emailを取得

  • Google Workspace (https://admin.google.com) で[Account] (アカウント) > [Account settings] (アカウント設定) へ進みます。

  • 次の手順で使うため、Primary adminメールアドレス (右上) をクリップボードにコピーします。

手順 7: Keeperボルトで共有フォルダを作成

Keeperボルトで、新しい共有フォルダを作成します。このフォルダーには「Google SCIM Push」などの任意の名前を付けます。ユーザー権限と記録権限については、任意の権限を選択します。

STEP 8: シークレットマネージャを作成

アプリケーションに「Google SCIM Push」などの名前を付けて、[アクセストークンの作成]をクリックします。 このトークンは破棄され、このシナリオでは使用されません。

次に、一覧から「Google SCIM Push」を選択し、[編集]、[デバイスの追加]の順にクリックします。

設定タイプにはBase64を選択してコンピュータにダウンロードします。

ファイルをconfig.base64としてコンピュータに保存します。

手順 9: SCIMプロビジョニングメソッドウィ作成

Keeper管理コンソールから、Google Workspaceノードの[プロビジョニング]タブに移動し、[メソッドを追加]をクリックします。

SCIMを選択して[次へ]をクリックします。

[プロビジョニングトークンを作成]をクリックします。

URLとトークンが表示されるので、URLとトークンをファイルに一時的に保存してから、[保存] をクリックします。

URLとトークンを必ず保存してから[保存] をクリックするようにします。 これらのパラメータは次の手順で必要となります。

手順 10: 共有フォルダでKeeper記録を作成

手順7で作成した共有フォルダ内に、以下のフィールドを含む記録を作成します。

フィールド

ログイン

Google Workspace admin email

パスワード

手順9で生成したSCIMトークン

ウェブサイトアドレス

手順9で生成したSCIM URL

credentials.json

手順3のGoogle Serviceアカウント認証情報の添付ファイル

SCIM Group

プロビジョニングされるすべてのグループのリストを含む複数行のカスタムテキストフィールド。名前はグループメールかグループ名のいずれかとなります。

指定したグループとそのユーザーがKeeperにプロビジョニングされます。

グループのリストには、グループのメール アドレスかグループ名のいずれかを指定できます。Keeperがいずれかの値を照合し、関連するすべてのユーザーとグループをプロビジョニングします。

この時点で、Keeper側の設定は完了となります。残りの手順はGoogle CloudコンソールでのCloud Functionの設定となります。

手順 11: Google Cloud Functionを作成

Google CloudコンソールからCloud Functionsを開き、[関数を作成]をクリックします。

Basics:

  • Environment (環境) に2nd gen (第2世代) を選択します。

  • Function name (関数名) は「keeper-scim-push」にします。

  • Region (地域) には任意の地域を選択してメモしておきます。

  • TriggerのTrigger typeををHTTPSにします。

  • Authentication (認証) を「Require authentication」 (認証が必要) にします。

Advanced -> Runtime:

  • Memory allocated (メモリの割り当て) : 256MiB

  • CPU: 0.333

  • Timeout (タイムアウト) : 120秒

  • Concurrency (同時実行) のコンテナあたりの最大リクエスト数: 1

  • Autoscaling (自動スケーリング) のインスタンスの最小数 : 0

  • Autoscaling (自動スケーリング) のインスタンスの最大数 : 1

  • Runtime service account (ランタイムサービスアカウント) : 選択

  • Runtime service account (ランタイムサービスアカウント) で, 「Default compute service account」を選択

Default compute service accountがまだ存在しない場合は、一時的に別のアカウントを選択し保存してから戻ってサービスアカウントを編集します。

以下は設定例です。

Runtime environment variables (ランタイム環境変数)

変数を2つ作成します。

  • Name 1をKSM_CONFIG_BASE64、Value 1を手順8で生成したKSM設定ファイルの内容に設定します。

  • Name 2をKSM_RECORD_UID、Value 2を手順10でボルトで作成した記録UIDに設定します。

Keeperボルトの記録で情報アイコンをクリックすると、記録UIDを確認できます。記録UIDをクリックして値をコピーします。

[CONNECTIONS] (接続) をクリックし、[Allow internal traffic only] (内部トラフィックのみ) を選択します。

下へスクロールして[NEXT] (次へ) をクリックし、Cloud Function Sourceをアップロードします。

手順 12: Cloud Function Sourceをアップロード

  • Runtime (ランタイム) は「Go 1.21」にします。

  • Source code (ソースコード) にはZip Uploadを選択します。

  • Entry point (エントリーポイント) にはGcpScimSyncHttpを入力します。

  • Zip upload (Zipアップロード) のDestination bucketには、デフォルトバケット許可 (非公開) を用いて任意の名前のバケットを作成します。

  • Zip file (Zipファイル) : 前の手順で保存したsource.zipを アップロードします。

[DEPLOY] (デプロイ) をクリックしてクラウド関数を作成します。 数分後、関数が作成され、パブリッシュされます。

この関数はプライベートであり、認証を必要とするため、次の手順ではCloud Schedulerを作成します。

手順 13: Cloud Function URLをコピー

Cloud Function画面で、以下に見られるようにURLをコピーします。

手順 14: Cloud Schedulerを作成

Google Cloudコンソールで、Cloud Schedulerを検索して開きます。

  • [SCHEDULE A JOB] (ジョブをスケジュール) をクリックします。

以下のようにスケジュールを定義します。

  • 「Keeper SCIM Push for Google Workspace」など、任意の名前を付けます。

  • 1時間に1回実行の場合0 * * * *など、頻度を設定します。

  • ロケーションに応じてタイムゾーンを設定します。

  • Target type (ターゲットタイプ) をHTTPにします。

  • URLを手順13でコピーしたCloud Function URLに設定します。

  • HTTP method (HTTPメソッド) をGETに設定します。

  • Auth Header (Authヘッダ) をAdd OIDC tokenに設定します。

  • ServiceアカウントをDefault compute service accountに設定します。

  • [CONTINUE] (続行) 、[CREATE] (作成) の順にクリックします。

手順 15: Schedulerをテスト

Scheduler Jobs画面にジョブが表示されます。強制的に実行するには、右側のオーバーフロー メニューをクリックし、[Force run] (強制実行) を選択します。

即座にCloud Functionが実行されます。

成功すると、[Status of last execution] (最後の実行のステータス) に[Success] (成功) と表示されます。

Keeperが同期情報を受信したことを確認するには、Keeper管理コンソールにログインします。保留中および招待状態のユーザー、チーム、チーム割り当てのリストが表示されます。

手順 16: ローカルファイルを削除

プロセスが正常に動作すると、この過程で作成されたすべてのローカルファイルとシークレットを削除します。

重要: 以下のような、コンピュータにあるローカルファイルや一時ファイルをすべて削除します。

  • config.base64ファイル

  • credentials.jsonファイル

  • SCIMトークン

  • その他スクリーンショットやローカルファイル

破壊操作

デフォルトでは、Keeper管理コンソール内の管理されていないチームとチーム割り当てが同期処理中に削除されることはありません。ただし、管理されていないチームもチーム割り当てもすべて削除される同期方法をご希望の場合は、Keeper記録にカスタムフィールドを作成して特定の値を入力します。

Destructiveフィールドの値説明

-1

同期中Keeper側では何も削除されません

0 (デフォルト)

同期中、SCIM で制御されているグループとメンバーシップのみが削除されます (デフォルト設定)

1

同期中、手動で作成されたグループやメンバーシップとSCIMで制御されたグループやメンバーシップが削除されます。

デバッグログ

Keeper記録を変更することで、Google Cloud Functionログに詳細なログを作成できます。

Verboseフィールドの値説明

0 (デフォルト)

ログなし

1

詳細ログが有効

同期について

  • Keeperは、Cloud Functionプロビジョニングを実行する際に、グループ名またはグループのメールアドレスに対して厳密な文字列照合を実行します。グループ名とグループメールアドレスでは大文字と小文字が区別されます。

  • 招待状態のユーザーは、ユーザーがボルトを作成し、Keeper管理者が管理コンソールにログインするまで、割り当てられたチームに追加されされることはありません。 ユーザーのチームへの参加も、チームの別のメンバーがボールトにログインする際に行われます。管理コンソールから[同期]をクリックすることでもチーム参加が行われます。

  • チームの作成などの一部の操作は、Keeper管理コンソールへのログイン時、またはKeeper Automatorの実行時にのみ発生します。これは、暗号化キーを生成する必要があるためです。

  • 大規模なデプロイの場合、Keeper Automatorを設定して、デバイスの承認、ユーザーの承認、チームの承認のプロセスを自動化することを推奨します。

  • 新しいグループを追加する場合は、Keeperボルトの記録内のリストにグループを追加します (手順10参照)。Keeperがターゲットを識別する際にはグループのメールアドレスまたはグループ名のいずれかを照会します。

  • Google Workspaceでネストされたグループは、Keeperと同期する際にフラット化されます。 ネストされたグループのユーザーは、Keeper側の親グループに追加されます。

Cloud Function Sourceの更新

Cloud Functionの新しいバージョンが作成される際のコードのアップデートは簡単です。

  • Githubリポジトリのksm-google-scimのリリースページから新しいsource.zipファイルをダウンロードします。

  • Google CloudのCloud Functionsの箇所へ移動します。

  • Cloud Functionの詳細をクリックし、[EDIT]をクリックしします。

  • Codeをクリックします。

  • Source codeで、[ZIP Upload]を選択します。

  • コンピュータに保存したsource.zipファイルを選択します。

  • [DEPLOY] (デプロイ) をクリックします。

  • 新しい関数がデプロイされるまで数分間待ちます。

  • Cloud Schedulerへ移動します。

  • [Actions] > [Force Run]をクリックします。

最終更新