По умолчанию Google Cloud Search распознаёт только идентификационные данные Google, хранящиеся в Google Cloud Directory (пользователей и группы). Коннекторы идентификационных данных используются для синхронизации идентификационных данных вашей компании с идентификационными данными Google, используемыми Google Cloud Search.
Google предоставляет следующие возможности для разработки соединителей идентификации:
Identity Connector SDK. Этот вариант предназначен для разработчиков, использующих язык программирования Java. Identity Connector SDK — это оболочка для REST API, позволяющая быстро создавать коннекторы. Чтобы создать коннектор Identity с помощью этого SDK, см. статью Создание коннектора Identity с помощью Identity Connector SDK .
Низкоуровневый REST API и библиотеки API. Эти варианты предназначены для разработчиков, которые, возможно, не программируют на Java или чья кодовая база лучше подходит для REST API или библиотеки. Чтобы создать коннектор удостоверений с помощью REST API, см. раздел Directory API: Учётные записи пользователей для получения информации о сопоставлении пользователей и раздел Cloud Identity Documentation для получения информации о сопоставлении групп.
Создайте соединитель удостоверений с помощью Identity Connector SDK
Типичный соединитель идентификации выполняет следующие задачи:
- Настройте соединитель.
- Извлеките всех пользователей из вашей корпоративной системы удостоверений и отправьте их в Google для синхронизации с удостоверениями Google.
- Извлеките все группы из вашей корпоративной системы удостоверений и отправьте их в Google для синхронизации с удостоверениями Google.
Настройка зависимостей
Для использования SDK необходимо включить определённые зависимости в файл сборки. Нажмите на вкладку ниже, чтобы просмотреть зависимости для вашей среды сборки:
Maven
<dependency>
<groupId>com.google.enterprise.cloudsearch</groupId>
<artifactId>google-cloudsearch-identity-connector-sdk</artifactId>
<version>v1-0.0.3</version>
</dependency>
Грейдл
compile group: 'com.google.enterprise.cloudsearch',
name: 'google-cloudsearch-identity-connector-sdk',
version: 'v1-0.0.3'
Создайте конфигурацию вашего коннектора
У каждого коннектора есть файл конфигурации, содержащий используемые им параметры, такие как идентификатор вашего репозитория. Параметры определяются парами «ключ-значение» , например, api.sourceId= 1234567890abcdef
.
Google Cloud Search SDK содержит несколько параметров конфигурации, предоставляемых Google, используемых всеми коннекторами. В файле конфигурации необходимо указать следующие параметры, предоставляемые Google:
- Для коннектора контента необходимо объявить
api.sourceId
иapi.serviceAccountPrivateKeyFile
, поскольку эти параметры определяют местоположение вашего репозитория и закрытый ключ, необходимый для доступа к репозиторию.
- Для коннектора удостоверений необходимо объявить
api.identitySourceId
, поскольку этот параметр определяет расположение вашего внешнего источника удостоверений. При синхронизации пользователей необходимо также объявитьapi.customerId
как уникальный идентификатор вашей корпоративной учётной записи Google Workspace.
Если вы не хотите переопределять значения по умолчанию других параметров, предоставляемых Google, вам не нужно объявлять их в файле конфигурации. Дополнительную информацию о параметрах конфигурации, предоставляемых Google, например, о том, как генерировать определённые идентификаторы и ключи, см. в разделе «Параметры конфигурации, предоставляемые Google» .
Вы также можете определить собственные параметры, специфичные для репозитория, для использования в файле конфигурации.
Передать файл конфигурации в коннектор
Настройте config
системных свойств для передачи файла конфигурации в коннектор. Вы можете задать это свойство, используя аргумент -D
при запуске коннектора. Например, следующая команда запускает коннектор с файлом конфигурации MyConfig.properties
:
java -classpath myconnector.jar;... -Dconfig=MyConfig.properties MyConnector
Если этот аргумент отсутствует, SDK попытается получить доступ к файлу конфигурации по умолчанию с именем connector-config.properties
.
Создайте полностью синхронизированный коннектор идентификации с использованием шаблонного класса
Identity Connector SDK содержит шаблон класса FullSyncIdentityConnector
, который можно использовать для синхронизации всех пользователей и групп из репозитория удостоверений с удостоверениями Google. В этом разделе объясняется, как использовать шаблон FullSyncIdentityConnector
для полной синхронизации пользователей и групп из репозитория удостоверений, отличного от Google.
В этом разделе документации используются фрагменты кода из примера IdentityConnecorSample.java
. Этот пример считывает идентификаторы пользователей и групп из двух CSV-файлов и синхронизирует их с идентификаторами Google.
Реализуйте точку входа коннектора
Точкой входа в коннектор является метод main()
. Его основная задача — создать экземпляр класса Application
и вызвать его метод start()
для запуска коннектора.
Перед вызовом application.start()
используйте класс IdentityApplication.Builder
для создания экземпляра шаблона FullSyncIdentityConnector
. FullSyncIdentityConnector
принимает объект Repository
, методы которого вы будете реализовывать. Следующий фрагмент кода показывает, как реализовать метод main()
:
В фоновом режиме SDK вызывает метод initConfig()
после того, как метод main()
вашего коннектора вызывает Application.build
. Метод initConfig()
выполняет следующие задачи:
- Вызывает метод
Configuation.isInitialized()
чтобы убедиться, чтоConfiguration
не инициализирована. - Инициализирует объект
Configuration
с помощью пар «ключ-значение», предоставленных Google. Каждая пара «ключ-значение» хранится в объектеConfigValue
внутри объектаConfiguration
.
Реализовать интерфейс Repository
Единственная цель объекта Repository
— синхронизация идентификаторов репозитория с идентификаторами Google. При использовании шаблона для создания коннектора идентификаторов достаточно переопределить лишь некоторые методы в интерфейсе Repository
. Для FullTraversalConnector
вам, скорее всего, потребуется переопределить следующие методы:
Метод
init()
. Для настройки и инициализации репозитория идентификаторов переопределите метод init().Метод
listUsers()
. Чтобы синхронизировать всех пользователей в репозитории удостоверений с пользователями Google, переопределите методlistUsers()
.Метод
listGroups()
. Чтобы синхронизировать все группы в репозитории идентификаторов с Google Groups, переопределите методlistGroups()
.(необязательно) Метод
close()
. Если вам нужно очистить репозиторий, переопределите методclose()
. Этот метод вызывается один раз при завершении работы коннектора.
Получить пользовательские параметры конфигурации
В рамках настройки коннектора вам потребуется получить все необходимые параметры из объекта Configuration
. Эта задача обычно выполняется в методе init()
класса Repository
.
Класс Configuration
содержит несколько методов для получения различных типов данных из конфигурации. Каждый метод возвращает объект ConfigValue
. Затем вы используете метод get()
объекта ConfigValue
для получения фактического значения. В следующем фрагменте кода показано, как получить значения userMappingCsvPath
и groupMappingCsvPath
из объекта Configuration
:
Чтобы получить и проанализировать параметр, содержащий несколько значений, используйте один из парсеров типов класса Configuration
для разделения данных на отдельные фрагменты. В следующем фрагменте кода из коннектора руководства используется метод getMultiValue
для получения списка имён репозиториев GitHub:
Получить сопоставление для всех пользователей
Переопределите listUsers()
, чтобы получить сопоставление для всех пользователей из вашего репозитория идентификационных данных. Метод listUsers()
принимает контрольную точку, представляющую последнюю синхронизированную идентификационную информацию. Контрольную точку можно использовать для возобновления синхронизации в случае прерывания процесса. Для каждого пользователя в вашем репозитории выполните следующие действия в методе listUsers()
:
- Получите сопоставление, состоящее из идентификатора Google и связанного с ним внешнего идентификатора.
- Упакуйте пару в итератор, возвращаемый методом
listUsers()
.
Получить сопоставление пользователей
В следующем фрагменте кода показано, как получить сопоставления идентификационных данных, хранящиеся в CSV-файле:
Упаковка сопоставления пользователей в итератор
Метод listUsers()
возвращает Iterator
, а именно CheckpointCloseableIterable
, объектов IdentityUser
. Для создания и возврата итератора можно использовать класс CheckpointClosableIterableImpl.Builder
. В следующем фрагменте кода показано, как упаковать каждое сопоставление в список и создать итератор из этого списка:
Получить группу
Переопределите метод listGroups()
, чтобы получить все группы и их участников из вашего репозитория идентификаторов. Метод listGroups()
принимает контрольную точку, представляющую последнюю синхронизированную идентификацию. Контрольную точку можно использовать для возобновления синхронизации в случае прерывания процесса. Для каждого пользователя в вашем репозитории выполните следующие действия в методе listGroups()
:
- Получите группу и ее участников.
- Упакуйте каждую группу и ее членов в итератор, возвращаемый методом
listGroups()
.
Получить групповую идентификацию
В следующем фрагменте кода показано, как извлечь группы и участников, сохраненные в CSV-файле:
Упаковать группу и участников в итератор
Метод listGroups()
возвращает Iterator
, а именно CheckpointCloseableIterable
, объектов IdentityGroup
. Для создания и возврата итератора можно использовать класс CheckpointClosableIterableImpl.Builder
. В следующем фрагменте кода показано, как упаковать каждую группу и её элементы в список и создать итератор на основе этого списка:
Следующие шаги
Вот несколько следующих шагов, которые вы можете предпринять:
- (необязательно) Реализуйте метод close() для освобождения всех ресурсов перед завершением работы.
- (необязательно) Создайте коннектор контента с помощью Content Connector SDK.