Cloud Serviceを使用したGoogle Workspaceのユーザーとチームのプロビジョニング
Cloud Functionを使用してGoogle Workspaceからユーザーとグループを自動的にプロビジョニングする方法
概要
Google Cloud Functionを使って、Google WorkspaceからKeeperへユーザーを自動プロビジョニングする手順を取り扱います。対象はユーザー、グループ、ユーザー割り当てです。ユーザーとチームのプロビジョニングには、ライフサイクル管理向けの以下の機能があります。
どのGoogleグループやユーザーをKeeperにプロビジョニングするかを指定できます。
グループは、グループ名またはグループメールアドレスで照合できます。
Keeperに割り当てたGoogleグループは、Keeperチームとして作成されます。
Keeperチームは、ボルト内の共有フォルダに割り当てられます。
グループに追加された新しいユーザーは、自動的にKeeperへ招待されます。
グループとユーザーの割り当ては、同期のたびに反映されます。
ユーザーのプロビジョニングが解除されると、Keeperアカウントは自動的にロックされます。
処理はクラウド上で完結し、オンプレミスのインフラやサービスは不要です。
希望するスケジュール、またはオンデマンドで実行できます。
本ページの設定手順で、Google Workspaceアカウントからユーザーとグループをプロビジョニングします。設定には、以下のリソースへのアクセスが必要です。
この実装では、最小権限でGoogleとKeeperを安全に統合するためにKeeperシークレットマネージャーを使用します。Keeperシークレットマネージャーをご利用でない場合は、Keeperカスタマーサクセス チームにお問い合わせください。
手順1. Google Cloudプロジェクトの作成
Google Cloudにログインし、プロジェクトを作成するか既存のプロジェクトを選択します。プロジェクト名は「Keeper SCIM Push」など任意の名前にします。

手順2. Admin SDK APIを有効にする
APIs & Servicesで、[+ ENABLE APIS AND SERVICES] をクリックします。Search for APIs & ServicesでAdmin SDK APIを入力します。[
ENABLE] をクリックします。


手順3. サービスアカウントを作成
ここで作成するサービスアカウントは、Google Workspaceのユーザーとグループ情報へアクセスするために使います。
IAM and AdminメニューでService accountsを選択します。+ CREATE SERVICE ACCOUNTをクリックし、サービスアカウント名にkeeper-scimを入力します。

新規作成したサービスアカウントでは、Actions の3点メニューをクリックして [Manage keys] を選択します。

[ADD KEYS] から [Create new Key] をクリックし、鍵のタイプとして JSON を選択してから [CREATE] をクリックします。
サービスアカウントの認証情報を含む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管理画面 (https://admin.google.com) で以下を行います。
[
Security] > [API controls] へ進みます。Domain wide delegationの下にある [MANAGE DOMAIN WIDE DELEGATION] をクリックします。API Clientsで [Add new] をクリックします。前の手順でコピーした
Client IDを貼り付けます。
以下のテキストをOAuth scopes (comma-delimited)に貼り付けます。

[AUTHORIZE] をクリックします。これらのスコープにより、サービスアカウントはGoogle Workspace Directoryのユーザー、グループ、メンバーシップへの読み取り専用アクセス権を取得します。
手順6. Primary Emailを取得
Google Workspace (https://admin.google.com) で [
Account] > [Account settings] へ進みます。以下の手順で使うため、右上の
Primary adminメールアドレスをクリップボードにコピーします。

手順7. Keeperボルトで共有フォルダを作成
Keeperボルトで新しい共有フォルダを作成します。フォルダ名は「Google SCIM Push」など任意の名前で構いません。ユーザー権限とレコード権限は、お好みの設定で問題ありません。

手順8. シークレットマネージャーを作成
ボルトで Keeperシークレットマネージャー を有効にしたうえで、左側のメニューから [シークレットマネージャー] をクリックし、[アプリケーションの作成] を選択します。

アプリケーション名を「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側の設定は完了です。残りの手順は、Google CloudコンソールでCloud Functionを設定します。
手順11. Google Cloud Functionを作成
Google Cloudコンソールで Cloud Functions を開き、[関数を作成] をクリックします。

Basics:
Environment (環境) に
2nd gen(第2世代) を選択します。Function name (関数名) は
keeper-scim-pushにします。Region (地域) は任意の地域を選択し、後で参照できるようメモしておきます。
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 (ランタイムサービスアカウント) で
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に設定します。

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

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

手順12. Cloud Function Sourceをアップロード
Keeper Google SCIM Pushのリリースページへ移動します。 https://github.com/Keeper-Security/ksm-google-scim/releases
**
source.zip**ファイルをダウンロードしてコンピュータに保存します。

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 account は
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レコードにカスタムフィールドを作成し、特定の値を設定します。
-1
同期中Keeper側では何も削除されません
0 (デフォルト)
同期中、SCIM で制御されているグループとメンバーシップのみが削除されます (デフォルト設定)
1
同期中、手動で作成されたグループやメンバーシップとSCIMで制御されたグループやメンバーシップが削除されます。
デバッグログ
Keeperレコードを変更することで、Google Cloud Functionログに詳細なログを作成できます。
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] をクリックします。
最終更新

