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カスタマーサクセス チームにお問い合わせください。
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メニューで、サービスアカウントを選択します。
keeper-scimというサービスアカウント名で[+ CREATE SERVICE ACCOUNT]をクリックします。
新規作成のサービスアカウントの場合、Actionsの3つの点をクリックして[Manage keys] (キーの管理) を選択します。
[鍵を追加]から[新しい鍵を作成]をクリックし、鍵のタイプとして[JSON]を選択してから[作成]をクリックします。
サービスアカウントの認証情報が含まれた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」などの任意の名前を付けます。ユーザー権限と記録権限については、任意の権限を選択します。
アプリケーションに「Google SCIM Push」などの名前を付けて、[アクセストークンの作成]をクリックします。 このトークンは破棄され、このシナリオでは使用されません。
次に、一覧から「Google SCIM Push」を選択し、[編集]、[デバイスの追加]の順にクリックします。
設定タイプにはBase64を選択してコンピュータにダウンロードします。
ファイルをconfig.base64としてコンピュータに保存します。
Keeper管理コンソールから、Google Workspaceノードの[プロビジョニング]タブに移動し、[メソッドを追加]をクリックします。
SCIMを選択して[次へ]をクリックします。
[プロビジョニングトークンを作成]をクリックします。
URLとトークンが表示されるので、URLとトークンをファイルに一時的に保存してから、[保存] をクリックします。
URLとトークンを必ず保存してから[保存] をクリックするようにします。 これらのパラメータは次の手順で必要となります。
手順7で作成した共有フォルダ内に、以下のフィールドを含む記録を作成します。
指定したグループとそのユーザーが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記録にカスタムフィールドを作成して特定の値を入力します。
Keeper記録を変更することで、Google Cloud Functionログに詳細なログを作成できます。
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]をクリックします。
ボルトでを有効にしてから、左側のメニューからSecrets Manager をクリックし、[アプリケーションの作成]を選択します。
フィールド | 値 |
---|---|
Destructiveフィールドの値 | 説明 |
---|---|
Verboseフィールドの値 | 説明 |
---|---|
ログイン
Google Workspace admin email
パスワード
手順9で生成したSCIMトークン
ウェブサイトアドレス
手順9で生成したSCIM URL
credentials.json
手順3のGoogle Serviceアカウント認証情報の添付ファイル
SCIM Group
プロビジョニングされるすべてのグループのリストを含む複数行のカスタムテキストフィールド。名前はグループメールかグループ名のいずれかとなります。
-1
同期中Keeper側では何も削除されません
0 (デフォルト)
同期中、SCIM で制御されているグループとメンバーシップのみが削除されます (デフォルト設定)
1
同期中、手動で作成されたグループやメンバーシップとSCIMで制御されたグループやメンバーシップが削除されます。
0 (デフォルト)
ログなし
1
詳細ログが有効
SCIMを直接Google Workplaceに統合してユーザープロビジョニング
本ページでは、SCIMの直接統合を使用してGoogle WorkspaceからKeeper にユーザーをプロビジョニングする手順について解説します。このメソッドでは、グループとグループ割り当てのプッシュがサポートされていません。グループプッシュとグループ割り当てが必要な場合は、「Cloud Serviceを使用したGoogle Workspaceユーザーとチームのプロビジョニング」のページをご参照ください。
ユーザー プロビジョニングには、以下のライフサイクルマネジメント向け機能が備わっています。
Google Workspaceに新しくユーザーを追加すると、そのユーザーにKeeperボルトセットアップの招待メールが届きます。
ユーザーは、ユーザーまたはチーム単位でKeeperに割り当てることができます。
ユーザーのプロビジョニングが解除されると、Keeperアカウントが自動的にロックされます。
Keeper管理コンソールから、Google Workspaceノードの[プロビジョニング]タブに移動し、[メソッドを追加]をクリックします。
SCIMを選択して[次へ]をクリックします。
[プロビジョニングトークンを作成]をクリックします。
次の画面に表示されるURLとトークンは、Google Workspace管理コンソールで必要となりますので、URLとトークンをファイルに一時的に保存してから[保存] をクリックします。
URLとトークンを必ず保存してから[保存] をクリックするようにします。 これらのパラメータは次の手順で必要となります。
Google Workspace管理コンソールに戻って、Home (ホーム) > [Apps] (アプリ) > [SAML Apps] (SAMLアプリ) に移動し、セットアップしたKeeperの横の[Provisioning Available] (プロビジョニングが利用可能) というテキストをクリックします。
ページ下部にある[Configure auto-provisioning] (自動プロビジョニングの設定) を選択します。
Keeper管理コンソールでSCIMプロビジョニングメソッドを作成したときに保存したアクセストークンを貼り付け、[CONTINUE] (続行) をクリックします。
Keeper 管理コンソールでSCIMプロビジョニングメソッドを作成したときに保存したエンドポイント URLを貼り付け、[CONTINUE] (続行) をクリックします。
デフォルトの属性マッピングのまま[CONTINUE] (続行) をクリックします。
Keeper SSO Connectに割り当てられたすべてのユーザーをプロビジョニングする場合は、[CONTINUE] (続行) をクリックします。
Deprovisioning (プロビジョニング解除) 画面で、[FINISH] (完了)をクリックすると、ユーザーのプロビジョニング解除を自動化できます。
自動プロビジョニングのセットアップが完了すると、Keeperの詳細画面に戻ります。自動プロビジョニングが非アクティブになっているのでアクティブに切り替えます。
切り替えた後、自動プロビジョニングをアクティブにする準備ができていることを確認するポップアウトウィンドウが表示されるので、[TURN ON]をクリックします。
Keeperの詳細画面に戻ると、自動プロビジョニングがアクティブになっています。
自動プロビジョニングの設定が完了しました。今後、Google WorkspaceでKeeperを使用するように設定され、プロビジョニングスコープの定義内にある新しいユーザーは、Keeperボルト使用の招待を受け取り、Google Workspaceの制御下に置かれます。
Google Workspace SCIMプロビジョニングを介してKeeperにユーザーをプロビジョニングしつつSSOでユーザーを認証しない場合は、以下の手順を行います。
上記のSSO設定の場合と同じ手順に従い、サービスプロバイダの詳細画面でACS URLとEntity IDを、コントロール内のドメインを指し、通信可能なソースがないNULL値で置き換えます。 例: Entity ID=https://null.yourdomain.com/sso-connect ACS URL=https://null.yourdomain.com/sso-connect/saml/sso
Google Workspaceで Keeper アプリケーションがセットアップされると、本ページで前述した通りに自動プロビジョニングメソッドを有効にします。
注: Googleは現在Keeperチームへのグループプロビジョニングに対応していません。
「not_a_saml_app」というエラーが表示された場合は、SAML アプリケーションで「自動プロビジョニング」が「オン」になっていることを確かにしてください。
SAMLアサーションへの署名用GoogleのIdP x.509証明書は5年後に期限が切れるように設定されています。Google Workspaceの[Manage Certificates] (証明書の管理) の箇所で有効期限をメモし、将来の機能停止を防ぐためにカレンダーのアラートを設定する必要があります。
証明書の有効期限が迫っている場合や証明書の有効期限が切れている場合は、以下の手順に従います。
Google Workspace管理コンソールにログインします。
[アプリ]をクリックしてから[ウェブアプリとモバイルアプリ]を選択します。
Keeperを選択します。
サービスプロバイダを開きます。
[証明書を管理]をクリックします。
[ADD CERTIFICATE] (証明書の追加) をクリックします。
[DOWNLOAD METADATA] (メタデータのダウンロード) をクリックします。
メタデータファイルを保存します。これがIdPメタデータとなります。
Keeper管理コンソールへログインします。
[管理者] > SSOノード > プロビジョニングへ移動し、SSO Cloudプロビジョニングメソッドを編集します。
Google IdPメタデータをKeeperへアップロードします。
本件の詳細については、以下のGoogleサポートページをご参照ください。
https://support.google.com/a/answer/7394709
ルートノード (最上位) で作成されたユーザーは、SSO統合が設定されたサブノードに移行する必要があります。ユーザーがルートノードに残っている場合、ボルトや管理コンソールにアクセスする際にマスターパスワードの入力が必要となります。
管理者は、SSOが有効になっているノードに自分自身を移動することはできません。この操作を実行するには別の管理者が必要となります。
ユーザーがSSO対応ノードに移動した後、最初に[法人SSOログイン]のプルダウンを選択し、SSO統合で設定した法人ドメインを入力し、Keeperボルトにログインする必要があります。また、マスターパスワード入力による確認を求められる場合があります。
SSOで認証されると、それ以降はメールアドレスだけでSSO認証を開始できます。
メールアドレスを入力して[次へ]をクリックしてもユーザーが目的のSSOにルーティングされない場合は、Keeper SSO設定でジャストインタイムプロビジョニングが有効になっていることと、メールドメインがKeeperによって予約されていることを確かにします。ルーティングとドメイン予約の詳細については、をご覧ください。
Keeper SSO Connect CloudをGoogle Workspaceと連携させてスムーズで安全なSAML 2.0認証とユーザーおよびチームプロビジョニングを実現
最初に管理コンソールの設定を完了してください。
Google WorkspaceとKeeperの連携では以下がサポートされています。
SAML 2.0を使用したSSO認証
Google Cloud APIとSCIMを使用した自動プロビジョニング (ユーザーとグループ)
SCIMを使用した自動プロビジョニング (ユーザーのみ)
SSO、SSOとプロビジョニング、プロビジョニングのみのいずれかを設定できます。
Google Workspace管理コンソールにアクセスするには、https://admin.google.com/にログインします。
[Apps] (アプリ) > [Web and Mobile Apps] (ウェブアプリおよびモバイルアプリ)画面にアクセスします。
続いて、[Add App] (アプリを追加)、[Search for apps] (アプリを検索)の順に選択します。
[Enter app name] (アプリ名を入力)の箇所で「Keeper」を検索し、「Keeper Web (SAML)」を選択します。
[Option1] (オプション1)を使用して、IdPのメタデータをダウンロードし、[CONTINUE] (続行) を選択します。
[Service Provider Details] (サービスプロバイダの詳細情報) 画面には、入力フィールドがいくつかあります。ACS URLとEntity IDを、SSO Connect Cloudインスタンスで使用する値に置き換えます。
ACS URLとEntity IDを取得するには、Keeper管理コンソール内でSSO Connect Cloudプロビジョニングメソッドを見つけて、[表示]を選択します。
Service providerの箇所に、ACS URLとEntity IDの値が表示されます。
ACS URLとEntity IDをコピーして、Service provider details (サービスプロバイダの情報) に貼り付け、[Signed Response] (署名付きレスポンス) をチェックして、[CONTINUE] (続行)を選択します。
Attributes (属性) 画面で、以下に表示されているとおり3つのマッピングがあることを確かにします。以下に表示されているように、マッピングフィールドをFirst Name (ファーストネーム) 、Last Name (ラストネーム) 、Primary Email (プライマリメール) に設定し、[Finish] (完了)を選択します。 これで、Google WorkspaceのKeeperへのSAML連携が完了しました。
カスタムSAMLアプリを選択または作成した場合は、[Add New Mapping] (新規マッピングを追加) をクリックして、First (名)、Last (姓)、Email (メール)の3つのフィールドを作成する必要があります。
設定が完了すると、Keeper SAMLアプリの詳細ページが表示され、SAML接続およびサービスの詳細を確認できます。SSOを有効にするには、[OFF for everyone] (すべてのユーザーに対してOFF) をクリックします。
全ユーザーでKeeper SSO Connectを有効にするには、[ON for everyone] (すべてユーザーに対してON) を選択して、[SAVE] (保存)をクリックします。
特定のグループでKeeper SSO Connectを有効にするには、[Service status] (サービスステータス) の左側にある[Groups] (グループ) を選択し、Keeper SSO Connectに関連付けたいグループを検索して選択し、ONをチェックして[SAVE] (保存) をクリックします。
注: Googleは現在Keeperチームへのグループプロビジョニングに対応していません。
Keeper管理コンソールに戻り、SSO Connect Cloudプロビジョニングメソッドを見つけて[編集]を選択します。
[Browse Files] (ファイルを参照) を選択し、以前にダウンロードしたGoogleメタデータファイルを選択します。
メタデータファイルがプロビジョニングメソッドに反映されると、成功したことになります。 これで、プロビジョニング設定を終了します。
2022年現在、Googleはシングルログアウトを有効にしない設定をデフォルトにしています。 つまり、KeeperからログアウトしてもGoogleからの完全なログアウトは開始されません。
これでKeeper SSO ConnectをGoogle Workspaceと連携させる設定は完了となります。以下の手順で、Googleアカウントを使用してKeeperにログインできるようになります。
Keeperボルトを開き、[法人SSOログイン]をクリックします。
SSOの設定時にKeeper管理コンソールに指定した法人ドメインを入力します。SSO Connectのステータス画面ではSSO Connectドメインという名前になっています。
[接続]をクリックし、Google Workspaceの認証情報でログインします。
エンドユーザーの操作手順(Keeperが起点となるログイン)については、以下をご参照ください。 https://docs.keeper.io/user-guides/enterprise-end-user-setup-sso#keeper-initiated-login-flow
以下はSSOエンドユーザー向け動画です。 https://vimeo.com/329680541
次に、Google Workspaceからユーザーとチームのプロビジョニングを設定する方法を解説します。 Google Workspaceと統合するには以下の2つの方法があります。
Google WorkspaceではSCIMグループがネイティブでサポートされていないため、Keeperではユーザーとグループのプロビジョニングを自動化するためにGoogle Workspaceと統合するGoogle Cloud Functionを開発しました。このサービスの設定手順については、以下をご参照ください。
Cloud Serviceを使用したGoogle Workplaceのユーザーとチームのプロビジョニング
SCIM直接統合を使用して直接Google WorkspaceからKeeperへのユーザー (グループではなくユーザーのみ) をプロビジョニングする手順については、以下をご参照ください。