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」など任意の名前にします。
手順 2: Admin SDK APIを有効にする
APIs & Servicesで、[+ ENABLE APIS AND SERVICES] (APIとサービスを有効にする) をクリックします。
Search for APIs & Servicesで、Admin SDK APIを入力します。
[ENABLE] (有効にする) をクリックします。
手順 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)に貼り付けます。
[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をアップロード
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アカウントを
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]をクリックします。
最終更新