Cloud Functionを使用してGoogle Workspaceからユーザーとグループを自動的にプロビジョニングする方法
Google Cloud Functionを使用してGoogle WorkspaceからKeeperにユーザーを自動的にプロビジョニングする方法について解説します。これには、ユーザー、グループ、ユーザー割り当てのプロビジョニングが含まれます。ユーザーとチームのプロビジョニングには、ライフサイクル管理のためのいくつかの機能が備わっています。
どのGoogleグループやユーザーをKeeperにプロビジョニングするかを指定できます。
Keeperに割り当てられたGoogleグループはKeeperチームとして作成されます。
Keeperチームをボルト内の共有フォルダに割り当てられます。
グループに追加された新しいユーザーは自動的にKeeperに招待されます。
グループとユーザーの割り当ては同期のたびに適用されます。
ユーザーのプロビジョニングが解除されると、Keeperカウントが自動的にロックされます。
本ページの設定手順で、Google Workspaceアカウントからユーザーとグループをプロビジョニングします。設定には以下のリソースにアクセスする必要があります。
この実装ではKeeperシークレットマネージャーを使用して、最小限の権限でGoogleとKeeperを最も安全に統合します。Keeperシークレットマネージャーをご使用でない場合は、Keeperカスタマーサクセス チームにお問い合わせください。
Google Cloudにログインし、プロジェクトを作成するか既存のプロジェクトを選択します。プロジェクト名は「Keeper SCIM Push」など任意の名前にします。
APIs & Services
で、[+ ENABLE APIS AND SERVICES
] (APIとサービスを有効にする) をクリックします。
Search for APIs & Services
で、Admin SDK API
を入力します。
[ENABLE
] (有効にする) をクリックします。
ここで作成したサービスアカウントは、Google Workspaceのユーザーとグループの情報にアクセスするために使用されます。
IAM and Admin
メニューで、Service accounts
(サービスアカウント)を選択します。
keeper-scim
というサービスアカウント名で[+ CREATE SERVICE ACCOUNT
]をクリックします。
新規作成のサービスアカウントの場合、Actions
の3つの点をクリックして[Manage keys
] (キーの管理) を選択します。
[ADD KEYS
] (鍵を追加) から[Create new Key
] (新しい鍵を作成) をクリックし、鍵のタイプとして[JSON]を選択してから[CREATE
] (作成) をクリックします。
サービスアカウントの認証情報が含まれたJSONファイルがコンピュータにダウンロードされます。
ファイル名をcredentials.json
に変更し、上のセットアップ手順で作成したKeeper設定レコードに添付ファイルとして追加します。
サービスアカウントへと移動し、[DETAILS
]タブから[Advanced Settings
]へ進みます。
[Domain-wide delegation
]でClient ID
をコピーします。次の手順でこのClient IDにGoogle Workspace Directoryへのアクセスを付与します。
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)
に貼り付けます。
[AUTHORIZE
] (承認) をクリックします。これらのスコープにより、サービスアカウントにGoogle Workspaceディレクトリユーザー、グループ、メンバーシップへの読み取り専用アクセスが付与されます。
Google Workspace (https://admin.google.com) で[Account
] (アカウント) > [Account settings
] (アカウント設定) へ進みます。
次の手順で使うため、Primary admin
メールアドレス (右上) をクリップボードにコピーします。
Keeperボルトで、新しい共有フォルダを作成します。このフォルダーには「Google SCIM Push」などの任意の名前を付けます。ユーザー権限とレコード権限については、任意の権限を選択します。
ボルトでKeeperシークレットマネージャーを有効にしてから、左側のメニューから[シークレットマネージャー]をクリックし、[アプリケーションの作成]を選択します。
アプリケーションに「Google SCIM Push」などの名前を付けて、[アクセストークンの作成]をクリックします。 このトークンは破棄され、このシナリオでは使用されません。
次に、一覧から「Google SCIM Push」を選択し、[編集]、[デバイスの追加]の順にクリックします。
設定タイプにはBase64を選択してコンピュータにダウンロードします。
ファイルをconfig.base64としてコンピュータに保存します。
Keeper管理コンソールから、Google Workspaceノードの[プロビジョニング]タブに移動し、[メソッドを追加]をクリックします。
SCIMを選択して[次へ]をクリックします。
[プロビジョニングトークンを作成]をクリックします。
URLとトークンが表示されるので、URLとトークンをファイルに一時的に保存してから、[保存] をクリックします。
URLとトークンを必ず保存してから[保存] をクリックするようにします。 これらのパラメータは次の手順で必要となります。
手順7で作成した共有フォルダ内に、以下のフィールドを含むレコードを作成します。
ログイン
Google Workspace admin email
パスワード
手順9で生成したSCIMトークン
ウェブサイトアドレス
手順9で生成したSCIM URL
credentials.json
手順3のGoogle Serviceアカウント認証情報の添付ファイル
SCIM Group
プロビジョニングされるすべてのグループのリストを含む複数行のカスタムテキストフィールド。名前はグループメールかグループ名のいずれかとなります。
指定したグループとそのユーザーがKeeperにプロビジョニングされます。
グループのリストには、グループのメールアドレスかグループ名のいずれかを指定できます。Keeperがいずれかの値を照合し、関連するすべてのユーザーとグループをプロビジョニングします。
この時点で、Keeper側の設定は完了となります。残りの手順はGoogle CloudコンソールでのCloud Functionの設定となります。
Google CloudコンソールからCloud Functions
を開き、[関数を作成]をクリックします。
Environment (環境) に2nd gen
(第2世代) を選択します。
Function name (関数名) は「keeper-scim-push
」にします。
Region (地域) には任意の地域を選択してメモしておきます。
TriggerのTrigger typeををHTTPSにします。
Authentication (認証) を「Require authentication
」 (認証が必要) にします。
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がまだ存在しない場合は、一時的に別のアカウントを選択し保存してから戻ってサービスアカウントを編集します。
以下は設定例です。
変数を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をアップロードします。
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を作成します。
Cloud Function画面で、以下に見られるようにURLをコピーします。
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
] (作成) の順にクリックします。
Scheduler Jobs画面にジョブが表示されます。強制的に実行するには、右側のオーバーフロー メニューをクリックし、[Force run
] (強制実行) を選択します。
即座にCloud Functionが実行されます。
成功すると、[Status of last execution] (最後の実行のステータス) に[Success] (成功) と表示されます。
Keeperが同期情報を受信したことを確認するには、Keeper管理コンソールにログインします。保留中および招待状態のユーザー、チーム、チーム割り当てのリストが表示されます。
プロセスが正常に動作すると、この過程で作成されたすべてのローカルファイルとシークレットを削除します。
重要: 以下のような、コンピュータにあるローカルファイルや一時ファイルをすべて削除します。
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の新しいバージョンが作成される際のコードのアップデートは簡単です。
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]をクリックします。