デフォルトでは、Google Cloud Search は Google Cloud Directory 内の Google ID のみ認識します。企業の ID を Cloud Search で使用される Google ID と同期するには、ID コネクタ を使用します。
Google は、ID コネクタを開発するための以下のオプションを提供しています。
Identity Connector SDK: Java プログラマーに最適です。この SDK は、コネクタをすばやく作成するための REST API を簡単に使えるようにしたラッパーです。SDK を使用するには、 次を 参照してください。Identity Connector SDK を使用して ID コネクタを作成する。
低レベル REST API と API ライブラリ: Java プログラマー以外に最適です。REST API を使用して ID コネクタを作成する際、ユーザーのマッピングについては Directory API: ユーザー アカウント を、グループのマッピングについては Google Cloud Identity のドキュメント をご覧ください。
Identity Connector SDK を使用して ID コネクタを作成する
一般的な ID コネクタは、次のタスクを実行します。
- コネクタを構成する。
- ID システムからユーザーを取得して Google に送信する。
- ID システムからグループを取得して Google に送信する。
依存関係を設定する
ビルドファイルに次の依存関係を含めます。
Maven
<dependency>
<groupId>com.google.enterprise.cloudsearch</groupId>
<artifactId>google-cloudsearch-identity-connector-sdk</artifactId>
<version>v1-0.0.3</version>
</dependency>
Gradle
compile group: 'com.google.enterprise.cloudsearch',
name: 'google-cloudsearch-identity-connector-sdk',
version: 'v1-0.0.3'
コネクタ構成を作成する
すべてのコネクタは、リポジトリ ID などのパラメータに構成ファイルを使用します。
パラメータは、Key-Value ペアとして定義します。
api.sourceId=1234567890abcdef
Google Cloud Search SDK には、すべてのコネクタ用の Google 提供パラメータが含まれています。構成ファイルで次の項目を宣言する必要があります。
- コンテンツ コネクタ:
api.sourceIdとapi.serviceAccountPrivateKeyFileを宣言します。これらは、リポジトリとアクセスに必要な秘密鍵を識別します。
- ID コネクタ:
api.identitySourceIdを宣言して、 外部 ID ソースを識別します。ユーザーの同期を行う場合は、api.customerId(Google Workspace アカウントの一意の ID)も宣言します。
他の Google 提供パラメータは、デフォルト値をオーバーライドする場合にのみ宣言します。 ID と鍵の生成の詳細については、 Google 提供パラメータをご覧ください。
構成ファイルでリポジトリ固有のパラメータを定義することもできます。
構成ファイルをコネクタに渡す
構成ファイルを渡すには、config システム プロパティを設定します。コネクタを起動するときに -D 引数を使用します。次に例を示します。
java -classpath myconnector.jar -Dconfig=MyConfig.properties MyConnector
この引数を省略すると、SDK はローカル ディレクトリにある connector-config.properties という名前のファイルを使用しようとします。
テンプレート クラスを使用して完全同期 ID コネクタを作成する
SDK には、リポジトリからすべてのユーザーとグループを同期するための FullSyncIdentityConnector テンプレートが含まれています。このセクションでは、その使用方法について説明します。
このセクションでは、CSV ファイルから ID を読み取る IdentityConnectorSample.java サンプルのコードを参照します。
コネクタのエントリ ポイントを実装する
エントリ ポイントは main() メソッドです。
Application
インスタンスを作成し、
start()
を呼び出してコネクタを実行します。
application.start() を呼び出す前に、
IdentityApplication.Builder
を使用して FullSyncIdentityConnector テンプレートをインスタンス化します。
main() メソッドが Application.build() を呼び出すと、SDK は initConfig() を呼び出します。initConfig() メソッドは次の処理を行います。
-
Configurationがまだ初期化されていないことを確認します。 - Google 提供の Key-Value ペアで
Configurationオブジェクトを初期化します。
Repository インターフェースを実装する
Repository オブジェクトは、リポジトリ ID を Google ID と同期します。テンプレートを使用する場合は、特定のメソッドのみをオーバーライドする必要があります。FullSyncIdentityConnector の場合は、次のメソッドをオーバーライドします。
init(): 設定と初期化用。listUsers(): すべてのユーザーを同期する場合。listGroups(): すべてのグループを同期する場合。- (省略可)
close(): シャットダウン時のクリーンアップ用。
カスタム構成パラメータを取得する
カスタム パラメータは、通常 init() メソッドで Configuration オブジェクトから取得します。次のスニペットは、CSV パスを取得する方法を示しています。
複数の値を含むパラメータを取得して解析するには、Configuration クラスのいずれかの型パーサーを使用してデータを個別のチャンクに解析します。
次のコード スニペット(チュートリアル コネクタからの抜粋)は、
getMultiValue
メソッドを使用して GitHub リポジトリの名前のリストを取得しています。
すべてのユーザーのマッピングを取得する
listUsers() をオーバーライドして、ユーザー マッピングを取得します。このメソッドは、中断された場合に同期を再開するためのチェックポイントを受け取ります。ユーザーごとに次の処理を行います。
- Google ID と外部 ID の間のマッピングを取得します。
listUsers()から返されたイテレータにペアをパッケージ化します。
ユーザー マッピングを取得する
次のスニペットは、CSV ファイルから ID マッピングを取得する方法を示しています。
イテレータにユーザー マッピングをパッケージ化する
listUsers() メソッドは、
CheckpointCloseableIterable
の
IdentityUser
オブジェクトを返します。
グループを取得する
listGroups() をオーバーライドして、グループとそのメンバーを取得します。このメソッドはチェックポイントを受け取ります。グループごとに次の処理を行います。
- グループとそのメンバーを取得します。
listGroups()から返されたイテレータにパッケージ化します。
グループ ID を取得する
次のスニペットは、CSV ファイルからグループとメンバーを取得する方法を示しています。
グループとメンバーをイテレータにパッケージ化する
listGroups() メソッドは、CheckpointCloseableIterable オブジェクトの
IdentityGroup
を返します。
次のステップ
- (省略可)リソースを解放する
close()を実装します。 - (省略可)コンテンツ コネクタを作成します。