デフォルトでは、Google Cloud Search は Google Cloud Directory(ユーザーとグループ)に保存されている Google ID のみを認識します。ID コネクタは、企業の ID を Google Cloud Search で使用される Google ID と同期させるために使用されます。
Google は、ID コネクタを開発するための以下のオプションを提供しています。
Identity Connector SDK。このオプションは、Java プログラミング言語でプログラミングしているデベロッパー向けです。Identity Connector SDK は、コネクタをすばやく作成するための REST API を簡単に使えるようにしたラッパーです。この SDK で ID コネクタを作成する場合は、Identity Connector SDK を使用して ID コネクタを作成するをご覧ください。
低レベル REST API と API ライブラリ。これらのオプションは、Java でプログラミングしていないデベロッパーや、コードベースが REST API やライブラリに問題なく対応できるデベロッパー向けです。REST API を使用して ID コネクタを作成する際、ユーザーのマッピングについては Directory API: ユーザー アカウントを、グループのマッピングについては Cloud Identity のドキュメントをご覧ください。
Identity Connector SDK を使用して ID コネクタを作成する
ID コネクタによって行われる標準的なタスクは、次のとおりです。
- コネクタを構成します。
- 企業 ID システムからすべてのユーザーを取得し、Google ID との同期のために Google に送信します。
- 企業 ID システムからすべてのグループを取得し、Google ID との同期のために Google に送信します。
依存関係を設定する
SDK を使用するには、ビルドファイルに特定の依存関係を含める必要があります。使用するビルド環境の依存関係を表示するには、以下のタブをクリックします。
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 など)を使用します。パラメータは、api.sourceId=1234567890abcdef
などの Key-Value ペアとして定義されます。
Google Cloud Search SDK には、すべてのコネクタで使用される Google 提供構成パラメータが複数含まれています。以下の Google 提供パラメータをお客様の構成ファイル内で宣言してください。
- コンテンツ コネクタの場合は、
api.sourceId
とapi.serviceAccountPrivateKeyFile
を宣言する必要があります。これらのパラメータは、リポジトリと秘密鍵の場所を指定するもので、リポジトリにアクセスするのに必要です。
- ID コネクタの場合は、
api.identitySourceId
を宣言する必要があります。このパラメータは、外部の ID ソースの場所を指定します。ユーザー間の同期を行う場合は、api.customerId
も宣言してください。このパラメータは、お客様の会社の Google Workspace アカウントを識別する ID として使用されます。
上記以外の Google 提供パラメータについては、デフォルト値を特にオーバーライドしたくなければ構成ファイルで宣言する必要はありません。Google 提供の構成パラメータに関するその他の情報(ID や鍵を生成する方法など)については、Google 提供の構成パラメータをご覧ください。
独自のリポジトリ パラメータを定義して、お客様の構成ファイル内で使用することもできます。
構成ファイルをコネクタに渡す
構成ファイルをコネクタに渡すようにシステム プロパティ config
を設定します。このプロパティは、コネクタを起動するとき -D
引数で設定できます。たとえば、次のコマンドは、MyConfig.properties
構成ファイルを使用してコネクタを起動します。
java -classpath myconnector.jar;... -Dconfig=MyConfig.properties MyConnector
この引数がないと、SDK はデフォルトの構成ファイル connector-config.properties
にアクセスしようとします。
テンプレート クラスを使用して完全同期 ID コネクタを作成する
Identity Connector SDK には、ID リポジトリのすべてのユーザーとグループを Google ID と同期するための FullSyncIdentityConnector
テンプレート クラスが含まれています。このセクションでは、FullSyncIdentityConnector
テンプレートを使用して、Google 以外の ID リポジトリのユーザーとグループを完全に同期する方法について説明します。
このドキュメント セクションのコード スニペットは、IdentityConnecorSample.java
サンプルからの抜粋です。このサンプルでは、2 つの CSV ファイルからユーザー ID とグループ ID を読み取り、Google ID と同期します。
コネクタのエントリ ポイントを実装する
コネクタのエントリ ポイントは main()
メソッドです。このメソッドの主なタスクは、Application
クラスのインスタンスを作成し、その start()
メソッドを呼び出してコネクタを実行することです。
application.start()
を呼び出す前に、IdentityApplication.Builder
クラスを使用して FullSyncIdentityConnector
テンプレートをインスタンス化します。FullSyncIdentityConnector
は、実装するメソッドを含む Repository
オブジェクトを受け入れます。次のコード スニペットは、main()
メソッドの実装方法を示しています。
裏側では、コネクタの main()
メソッドが Application.build
を呼び出した後、SDK が initConfig()
メソッドを呼び出します。initConfig()
メソッドは、次のタスクを実行します。
Configuation.isInitialized()
メソッドを呼び出して、Configuration
が初期化されていないことを確認します。- Google 提供の Key-Value ペアで
Configuration
オブジェクトを初期化します。各 Key-Value ペアは、Configuration
オブジェクト内のConfigValue
オブジェクトに保存されます。
Repository
インターフェースを実装する
Repository
オブジェクトの唯一の目的は、リポジトリ ID と Google ID を同期することです。テンプレートを使用する場合は、Repository
インターフェースの一部のメソッドをオーバーライドするだけで ID コネクタを作成できます。FullTraversalConnector
の場合は、次のメソッドをオーバーライドします。
init()
メソッド。ID リポジトリを設定して初期化するには、init() メソッドをオーバーライドします。listUsers()
メソッド。ID リポジトリ内のすべてのユーザーを Google ユーザーと同期するには、listUsers()
メソッドをオーバーライドします。listGroups()
メソッド。ID リポジトリ内のすべてのグループを Google グループと同期するには、listGroups()
メソッドをオーバーライドします。(省略可)
close()
メソッド。リポジトリをクリーンアップする必要がある場合は、close()
メソッドをオーバーライドします。このメソッドは、コネクタのシャットダウン時に 1 回呼び出されます。
カスタム構成パラメータを取得する
コネクタを構成する過程で、Configuration
オブジェクトからいずれかのカスタム パラメータを取得する必要があります。このタスクは通常、Repository
クラスの init()
メソッドで実行されます。
Configuration
クラスには、構成から異なるデータ型を取得するメソッドがいくつかあります。各メソッドは ConfigValue
オブジェクトを返します。その後、ConfigValue
オブジェクトの get()
メソッドを使用して実際の値を取得します。次のスニペットは、Configuration
オブジェクトから userMappingCsvPath
値と groupMappingCsvPath
値を取得する方法を示しています。
複数の値を含むパラメータを取得して解析するには、Configuration
クラスのいずれかの型パーサーを使用してデータを個別のチャンクに解析します。次のコード スニペット(チュートリアル コネクタからの抜粋)は、getMultiValue
メソッドを使用して GitHub リポジトリの名前のリストを取得しています。
すべてのユーザーのマッピングを取得する
listUsers()
をオーバーライドして、ID リポジトリからすべてのユーザーのマッピングを取得します。listUsers()
メソッドは、同期する最後の ID を表すチェックポイントを受け取ります。チェックポイントは、プロセスが中断された場合に同期を再開する目的で使用できます。リポジトリ内のユーザーごとに、listUsers()
メソッド内で以下の手順を実行します。
- Google ID および関連する外部 ID からなるマッピングを取得します。
- ペアを
listUsers()
メソッドから返されるイテレータにパッケージ化します。
ユーザー マッピングを取得する
以下のコード スニペットは、CSV ファイルに保存されている ID マッピングを取得する方法を示しています。
イテレータにユーザー マッピングをパッケージ化する
listUsers()
メソッドは、IdentityUser
オブジェクトの Iterator
(具体的には CheckpointCloseableIterable
)を返します。CheckpointClosableIterableImpl.Builder
クラスを使用すると、イテレータを構築して返すことができます。以下のコード スニペットは、各マッピングをリストにパッケージ化して、そのリストからイテレータを構築する方法を示しています。
グループを取得する
listGroups()
をオーバーライドして、ID リポジトリからすべてのグループとそのメンバーを取得します。listGroups()
メソッドは、同期する最後の ID を表すチェックポイントを受け取ります。チェックポイントは、プロセスが中断された場合に同期を再開する目的で使用できます。リポジトリ内のユーザーごとに、listGroups()
メソッド内で以下の手順を実行します。
- グループとそのメンバーを取得します。
- 各グループとメンバーを
listGroups()
メソッドから返されるイテレータにパッケージ化します。
グループ ID を取得する
以下のコード スニペットは、CSV ファイルに保存されているグループとメンバーを取得する方法を示しています。
グループとメンバーをイテレータにパッケージ化する
listGroups()
メソッドは、IdentityGroup
オブジェクトの Iterator
(具体的には CheckpointCloseableIterable
)を返します。CheckpointClosableIterableImpl.Builder
クラスを使用すると、イテレータを構築して返すことができます。以下のコード スニペットは、各グループとメンバーをリストにパッケージ化して、そのリストからイテレータを構築する方法を示しています。
次のステップ
必要に応じて次の手順を行います。
- (オプション)シャットダウンの前にリソースをすべて解放する close() メソッドを実装する。
- (オプション)Content Connector SDK を使用してコンテンツ コネクタを作成する。