기본적으로 Google Cloud Search는 Google Cloud Directory(사용자 및 그룹)에 저장된 Google ID만 인식합니다. ID 커넥터는 기업 ID를 Google Cloud Search에서 사용되는 Google ID에 동기화하는 데 사용됩니다.
Google에서는 다음과 같은 ID 커넥터 개발 옵션을 제공합니다.
ID 커넥터 SDK 이 옵션은 자바 프로그래밍 언어로 프로그래밍하는 개발자를 위한 것입니다. ID 커넥터 SDK는 REST API를 둘러싸는 래퍼로, 이를 사용하면 커넥터를 빠르게 만들 수 있습니다. SDK를 사용하여 ID 커넥터를 만들려면 ID 커넥터 SDK를 사용하여 ID 커넥터 만들기를 참조하세요.
하위 수준 REST API 및 API 라이브러리: 이 옵션은 자바로 프로그래밍하지 않거나 코드베이스보다 REST API 또는 라이브러리가 더 익숙한 개발자용입니다. REST API를 사용하여 ID 커넥터를 만들려는 경우, 사용자 매핑은 Directory API: 사용자 계정을 참조하고 그룹 매핑은 Cloud ID 문서를 참조하세요.
ID 커넥터 SDK를 사용하여 ID 커넥터 만들기
일반적인 ID 커넥터는 다음 작업을 수행합니다.
- 커넥터를 구성합니다.
- 기업 ID 시스템에서 모든 사용자를 검색한 후 Google로 보내 Google ID와 동기화합니다.
- 기업 ID 시스템에서 모든 그룹을 검색한 후 Google로 보내 Google ID와 동기화합니다.
종속 항목 설정
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
)으로 정의됩니다.
Google Cloud Search SDK에는 모든 커넥터에서 사용되는 Google 제공 구성 매개변수가 여러 개 포함되어 있습니다. 구성 파일에서 다음과 같은 Google 제공 매개변수를 선언해야 합니다.
- 콘텐츠 커넥터의 경우
api.sourceId
와api.serviceAccountPrivateKeyFile
를 선언해야 합니다. 이러한 매개변수가 저장소의 위치와 저장소에 액세스하는 데 필요한 비공개 키를 식별하기 때문입니다.
- ID 커넥터의 경우
api.identitySourceId
를 선언해야 합니다. 이 매개변수가 외부 ID 소스의 위치를 식별하기 때문입니다. 사용자를 동기화하는 경우api.customerId
를 기업 Google Workspace 계정의 고유 ID로 선언해야 합니다.
Google에서 제공하는 다른 매개변수의 기본 값을 재정의하려는 경우가 아니라면 구성 파일에서 매개변수를 선언하지 않아도 됩니다. 특정 ID와 키를 생성하는 방법 등 Google에서 제공하는 구성 매개변수에 대한 자세한 내용은 Google에서 제공하는 구성 매개변수를 참조하세요.
구성 파일에 사용할 고유한 저장소별 매개변수도 정의할 수 있습니다.
커넥터에 구성 파일 전달
시스템 속성 config
를 설정하여 커넥터에 구성 파일을 전달합니다. 커넥터를 시작할 때 -D
인수를 사용하여 속성을 설정할 수 있습니다. 예를 들어 다음 명령어는 MyConfig.properties
구성 파일로 커넥터를 시작합니다.
java -classpath myconnector.jar;... -Dconfig=MyConfig.properties MyConnector
이 인수가 없으면 SDK는 connector-config.properties
이라는 기본 구성 파일에 액세스하려고 시도합니다.
템플릿 클래스를 사용하여 전체 동기화 ID 커넥터 만들기
ID 커넥터 SDK에는 ID 저장소의 모든 사용자 및 그룹을 Google ID와 동기화하는 데 사용할 수 있는 FullSyncIdentityConnector
템플릿 클래스가 포함되어 있습니다. 이 섹션에서는 FullSyncIdentityConnector
템플릿을 사용하여 Google 이외의 ID 저장소에서 사용자와 그룹의 전체 동기화를 수행하는 방법을 설명합니다.
이 섹션에서는 IdentityConnecorSample.java
샘플의 코드 스니펫을 참조합니다. 이 샘플은 사용자 및 그룹 ID를 두 CSV 파일에서 읽은 후 Google ID와 동기화합니다.
커넥터의 진입점 구현
커넥터의 진입점은 main()
메서드입니다. 이 메서드의 기본 작업은 Application
클래스의 인스턴스를 만들고 start()
메서드를 호출하여 커넥터를 실행하는 것입니다.
application.start()
를 호출하기 전에 IdentityApplication.Builder
클래스를 사용하여 FullSyncIdentityConnector
템플릿을 인스턴스화합니다. FullSyncIdentityConnector
는 메서드가 구현될 Repository
객체를 허용합니다.
다음 코드 스니펫은 main()
메서드를 구현하는 방법을 보여줍니다.
내부적으로 SDK는 커넥터의 main()
메서드가 Application.build
를 호출한 후 initConfig()
메서드를 호출합니다.
initConfig()
메서드는 다음 작업을 실행합니다.
Configuation.isInitialized()
메서드를 호출하여Configuration
가 초기화되지 않았는지 확인합니다.- Google에서 제공하는 키-값 쌍을 사용하여
Configuration
객체를 초기화합니다. 각 키-값 쌍은Configuration
객체 내의ConfigValue
객체에 저장됩니다.
Repository
인터페이스 구현
Repository
객체의 유일한 목적은 저장소 ID를 Google ID에 동기화하는 것입니다. 템플릿을 사용할 때 ID 커넥터를 만들려면 Repository
인터페이스 내에서 특정 메서드를 재정의하기만 하면 됩니다. FullTraversalConnector
의 경우 다음 메서드를 재정의할 수 있습니다.
init()
메서드 ID 저장소 설정과 초기화를 수행하려면 `init() 메소드를 재정의합니다.listUsers()
메서드 ID 저장소의 모든 사용자를 Google 사용자와 동기화하려면listUsers()
메서드를 재정의합니다.listGroups()
메서드 ID 저장소의 모든 그룹을 Google 그룹스와 동기화하려면listGroups()
메서드를 재정의합니다.(선택사항)
close()
메서드 저장소 정리를 수행해야 한다면close()
메서드를 재정의합니다. 이 메서드는 커넥터 종료 시 한 번 호출됩니다.
커스텀 구성 매개변수 가져오기
커넥터 구성을 처리하려면 Configuration
객체에서 맞춤 매개변수를 가져와야 합니다. 이 작업은 일반적으로 Repository
클래스의 init()
메서드에서 실행됩니다.
Configuration
클래스에는 구성에서 다양한 데이터 유형을 가져오기 위한 몇 가지 메서드가 있습니다. 각 메서드는 ConfigValue
객체를 반환합니다. 그런 다음 ConfigValue
객체의 get()
메서드를 사용하여 실제 값을 검색합니다.
다음 스니펫은 Configuration
객체에서 userMappingCsvPath
및 groupMappingCsvPath
값을 검색하는 방법을 보여줍니다.
여러 값이 포함된 매개변수를 가져오고 파싱하려면 Configuration
클래스의 유형 파서 중 하나를 사용하여 데이터를 개별 청크로 파싱합니다.
튜토리얼 커넥터의 다음 스니펫은 getMultiValue
메서드를 사용하여 GitHub 저장소 이름 목록을 가져옵니다.
모든 사용자의 매핑 가져오기
ID 저장소에서 모든 사용자의 매핑을 검색하려면 listUsers()
를 재정의합니다. listUsers()
메서드는 동기화할 마지막 ID를 나타내는 체크포인트를 받아들입니다. 프로세스가 중단되면 체크포인트를 사용하여 동기화를 계속할 수 있습니다. 저장소의 각 사용자별로 listUsers()
메서드에서 다음 단계를 수행합니다.
- Google ID 및 연결된 외부 ID로 구성된 매핑을 가져옵니다.
- 이 쌍을
listUsers()
메서드에서 반환된 반복자에 패키징합니다.
사용자 매핑 가져오기
다음 코드 스니펫은 CSV 파일에 저장된 ID 매핑을 검색하는 방법을 보여줍니다.
사용자 매핑을 반복자에 패키징
listUsers()
메서드는 IdentityUser
객체의 Iterator
, 특히 CheckpointCloseableIterable
를 반환합니다. CheckpointClosableIterableImpl.Builder
클래스를 사용하여 반복자를 구성하고 반환할 수 있습니다. 다음 코드 스니펫은 각 매핑을 목록에 패키징하고 이러한 목록에서 반복자를 빌드하는 방법을 보여줍니다.
그룹 가져오기
ID 저장소에서 모든 그룹과 구성원을 검색하려면 listGroups()
를 재정의합니다. listGroups()
메서드는 동기화할 마지막 ID를 나타내는 체크포인트를 받아들입니다. 프로세스가 중단되면 체크포인트를 사용하여 동기화를 계속할 수 있습니다. 저장소의 각 사용자별로 listGroups()
메서드에서 다음 단계를 수행합니다.
- 그룹 및 그룹 회원을 가져옵니다.
- 각 그룹과 구성원을
listGroups()
메서드에서 반환된 반복자에 패키징합니다.
그룹 ID 가져오기
다음 코드 스니펫은 CSV 파일에 저장된 그룹과 구성원을 검색하는 방법을 보여줍니다.
그룹과 구성원을 반복자에 패키징
listGroups()
메서드는 IdentityGroup
객체의 Iterator
, 특히 CheckpointCloseableIterable
를 반환합니다.
CheckpointClosableIterableImpl.Builder
클래스를 사용하여 반복자를 구성하고 반환할 수 있습니다. 다음 코드 스니펫은 각 그룹과 구성원을 목록에 패키징하고 이 목록에서 반복자를 빌드하는 방법을 보여줍니다.
다음 단계
그 다음으로는 아래와 같은 옵션도 고려해 볼 수 있습니다.
- (선택사항) close() 메소드를 구현하여 종료 전에 리소스를 해제합니다.
- (선택사항) 콘텐츠 커넥터 SDK를 사용하여 콘텐츠 커넥터를 만듭니다.