기본적으로 Google Cloud Search는 Google Cloud Directory(사용자 및 그룹)에 저장된 Google ID만 인식합니다. ID 커넥터는 기업 ID를 Google Cloud Search에서 사용하는 Google ID와 동기화하는 데 사용됩니다.
Google에서는 다음과 같은 ID 커넥터 개발 옵션을 제공합니다.
ID 커넥터 SDK 이 옵션은 Java 프로그래밍 언어로 프로그래밍하는 개발자용 옵션입니다. 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에서 제공하는 다른 매개변수의 기본 값을 재정의하려는 경우가 아니라면 구성 파일에서 매개변수를 선언하지 않아도 됩니다. Google에서 제공하는 구성 매개변수에 대한 자세한 내용(예: 특정 ID 및 키 생성 방법)은 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()
메서드는 Iterator
, 특히 IdentityUser
객체의 CheckpointCloseableIterable
를 반환합니다. CheckpointClosableIterableImpl.Builder
클래스를 사용하여 반복자를 만들고 반환할 수 있습니다. 다음 코드 스니펫은 각 매핑을 목록에 패키징하고 이러한 목록에서 반복자를 빌드하는 방법을 보여줍니다.
그룹 가져오기
ID 저장소에서 모든 그룹과 구성원을 검색하려면 listGroups()
를 재정의합니다. listGroups()
메서드는 동기화할 마지막 ID를 나타내는 체크포인트를 받아들입니다. 프로세스가 중단되면 체크포인트를 사용하여 동기화를 계속할 수 있습니다. 저장소의 각 사용자별로 listGroups()
메서드에서 다음 단계를 수행합니다.
- 그룹과 구성원을 가져옵니다.
- 각 그룹과 구성원을
listGroups()
메서드에서 반환된 반복자에 패키징합니다.
그룹 ID 가져오기
다음 코드 스니펫은 CSV 파일에 저장된 그룹과 구성원을 검색하는 방법을 보여줍니다.
그룹과 구성원을 반복자에 패키징
listGroups()
메서드는 Iterator
, 특히 IdentityGroup
객체의 CheckpointCloseableIterable
를 반환합니다.
CheckpointClosableIterableImpl.Builder
클래스를 사용하여 반복자를 만들고 반환할 수 있습니다. 다음 코드 스니펫은 각 그룹과 구성원을 목록에 패키징하고 이 목록에서 반복자를 빌드하는 방법을 보여줍니다.
다음 단계
그 다음으로는 아래와 같은 옵션도 고려해 볼 수 있습니다.
- (선택사항) close() 메소드를 구현하여 종료 전에 리소스를 해제합니다.
- (선택사항) 콘텐츠 커넥터 SDK를 사용하여 콘텐츠 커넥터를 만듭니다.