.. _gsuite: Google G Suite ======================= Genian NAC는 G Suite 디렉토리를 사용자 및 조직 정보의 소스로 사용할 수 있습니다. G Suite 동기화를 통해 사용자 계정을 로컬에서 생성하여 관리 또는 정책에 사용 할 수 있습니다. 기본적인 동작방식은 정책서버가 G suite에서 생성한 Oauth Client ID를 사용하여 G suite workspace 에 접근하고 정보를 동기화하는 방식이 사용됩니다. 다음은 G Suite를 기반으로 사용자 및 조직 정보를 동기화하는 방법에 대해 설명합니다. 접속 테스트 하기 ----------------------- 접속 테스트를 수행하기 위해서는 다음에 기본값이 입력되어야 합니다. +----------------+----------------------+-------------------------------------------------------------------------------------------------+ | 항목 | 설정값 | 설명 | +----------------+----------------------+-------------------------------------------------------------------------------------------------+ | Google G Suite | 구글 인증 코드 | 정보동기화 세부설정 내 구글 인증 코드가 삽입되어있어야합니다. | | +----------------------+-------------------------------------------------------------------------------------------------+ | | DOMAIN | 워크스페이스내 별도의 도메인에 대해서만 동기화 하는 경우 입력 | | +----------------------+-------------------------------------------------------------------------------------------------+ | | VIEW TYPE | 데이터를 읽어올 VIEW를 선택합니다. | | | | admin_view : 관리자 권한 | | | | domain_public : 공개 권한 | | +----------------------+-------------------------------------------------------------------------------------------------+ | | 데이터소스 구분 값 | 다수의 동기화 설정을 사용하는 경우 설정 | +----------------+----------------------+-------------------------------------------------------------------------------------------------+ | 정책서버 | 구글 API Client 정보 | 구글 API Oauth 클라이언트 ID와 키, 리디렉트 URI 정보가 설정 > 기타설정에 입력되어 있어야합니다. | +----------------+----------------------+-------------------------------------------------------------------------------------------------+ .. note:: 접속 테스트가 정상적으로 되지 않을 경우 **정책서버** 와 **동기화 서버** 간 정상적인 통신 여부를 우선적으로 확인하시기 바랍니다. .. note :: 유튜브를 통해 Google G suit 가이드 영상을 확인 할 수 있습니다 |gsuit| G Suite 사전 설정하기 -------------------------- Oauth 동의 화면 설정 '''''''''''''''''''''''''' #. https://console.cloud.google.com/ 에 접속하여 API 및 서비스 메뉴로 이동합니다. #. 좌측 패널 Oauth 동의화면 메뉴로 이동합니다. #. User Type 을 외부를 선택하고 팝업창이 표시되면 테스트를 선택하고 ``만들기`` 버튼을 클릭합니다. #. 앱 이름 등 필수 항목을 입력하고 ``저장`` 버튼을 클릭합니다. #. 정보 접근 범위에서 ``범위 추가 또는 삭제`` 버튼을 클릭합니다. #. 하단 직접 범위 추가 항목에 하단 2줄을 입력하고 ``업데이트`` 버튼을 클릭합니다. .. code-block:: https://www.googleapis.com/auth/admin.directory.orgunit.readonly https://www.googleapis.com/auth/admin.directory.user.readonly #. ``저장 후 계속`` 버튼을 클릭합니다. #. Oauth 앱에 접근허용하는 계정을 ``ADD USERS`` 버튼을 클릭하여 추가합니다.(인증 코드 발급 시 1회만 사용) #. 저장 후 계속 버튼을 클릭하여 설정한 내용을 확인하고 하단 ``대시보드로 돌아가기`` 를 클릭합니다. 사용자 인증 정보 설정(Oauth client ID) ''''''''''''''''''''''''''''''''''''''''' #. 좌측 패널 사용자 인증 정보 메뉴로 이동합니다. #. 상단 ``사용자 인증 정보 만들기`` 버튼을 클릭하고 ``Oauth 클라이언트 ID`` 를 클릭합니다. #. 애플리케이션 유형은 ``웹 애플리케이션`` 을 선택합니다. #. 승인된 리디렉션 URI 항목에는 하단 URL을 추가합니다. .. code-block:: https://developers.google.com/oauthplayground #. ``만들기`` 버튼을 클릭합니다. #. 생성 결과화면에서 클라이언트ID, 클라이언트 보안 비밀번호, 리디렉션 URI를 복사해 놓습니다. NAC 관리콘솔에 Oauth 클라이언트 ID 등록 '''''''''''''''''''''''''''''''''''''''''''' #. 정책서버 관리콘솔에 로그인합니다. #. 상단 설정메뉴로 이동합니다. #. 좌측 패널 환경설정 > 기타설정 으로 이동합니다. #. 하단 구글 API 클라이언트 ID 및 인증키 설정 항목으로 이동합니다. #. 클라이언트 ID, 클라이언트 인증키, 승인된 리디렉션 URI를 입력하고 하단 ``수정`` 버튼을 클릭합니다. NAC 정보 동기화 설정하기 ---------------------------- #. 상단 항목의 **설정** 으로 이동합니다. #. 왼쪽 설정 항목에서 **사용자인증 > 정보 동기화** 로 이동합니다. #. **작업선택 > 생성** 을 클릭합니다. **기본설정** 옵션 #. **ID** : 고유의 이름을 입력합니다. #. **동기화 수행주기** : 동기화에 대해 지정된 시간 또는 주기적인 간격을 선택합니다. #. **정책적용여부** : 동기화 후 변경사항 반영을 위해 ``적용함`` 을 선택합니다. 동기화 설정이 여러 개인 경우 ``적용안함`` 으로 설정하고 마지막 동기화만 사용하도록 설정 할 수 있습니다. #. **환경변수 설정** : 기본적인 동기화 작업 시에는 입력할 필요가 없습니다. 단, 외부 시스템과의 연동 등을 위해 별도로 작성된 커스텀 쉘 스크립트를 보조로 실행하는 경우, 해당 스크립트 내에서 공통적으로 참조할 변수 값을 정의할 때 사용합니다. .. warning:: **설정 주의**: 잘못된 환경변수 선언은 연동 스크립트의 오작동이나 시스템 오류를 유발할 수 있습니다. 설정 전에 스크립트 내에서 해당 변수가 올바르게 처리되는지 반드시 확인하십시오. **활용 시나리오: 로그 레벨 제어** 외부 스크립트 실행 시 **로그 레벨(Log Level)** 이나 **재시도 횟수** 등 단순 동작 옵션을 제어할 수 있는 경우 사용합니다. .. code-block:: bash export LOG_LEVEL='ERROR' #. **사용자정의쿼리** : 정보 동기화가 완료된 직후 수행할 SQL 쿼리를 입력합니다. 동기화된 정보를 바탕으로 특정 조건에 따라 2차 가공이 필요한 경우 작성합니다. .. warning:: **데이터 손실 위험**: 이 기능은 데이터베이스에 직접 영향을 미칩니다. 특히 ``UPDATE`` 나 ``DELETE`` 구문 사용 시 **되돌릴 수 없는 데이터 손실** 이 발생할 수 있습니다. **활용 시나리오: 재직 상태에 따른 계정 잠금 처리** 정보 동기화 후, 인사 정보의 '재직 상태' 코드에 따라 퇴사자(또는 휴직자)의 NAC 계정 사용을 자동으로 중지하고 싶은 경우 사용합니다. **선행 작업** 1. **[설정] > [속성관리] > [추가필드] > [사용자 추가필드]** 에서 재직상태를 관리할 필드(예: ``USER_CUSTOM08``)를 생성합니다. 2. **[정보동기화]** 의 **[사용자정보]** - **[추가정보]** 에 1번에서 생성한 사용자 추가필드를 할당합니다. **작성 예시** ``USER_CUSTOM08`` 값이 '001'(퇴사/휴직 등)인 경우, ``USER_STATUS`` 를 '0'(사용 중지)으로 업데이트합니다. .. code-block:: sql UPDATE USER SET USER_STATUS = 0 WHERE USER_CUSTOM08 = '001'; **데이터베이스** 옵션 #. **DB타입** : ``Google G Suite`` #. **구글 인증 코드** : 동기화 수행 계정 인증을 위한 코드를 입력합니다. 상단의 ``구글 인증 코드 발급`` 버튼을 클릭하고, 팝업창에서 계정 로그인 및 권한 ``허용`` 버튼 클릭 후 출력되는 ``Authorization code`` 를 복사하여 입력합니다.(팝업창은 닫습니다.) #. **DOMAIN**: 도메인 입력시 해당 도메인의 정보만 동기화합니다. 미입력시 계정이 속한 모든 도메인에 대한 정보를 동기화합니다. #. **VIEW TYPE** : 권한에 따른 데이터 동기화 범위를 선택합니다다. 일반적으로 admin 권한의 계정인 경우 ``admin_view`` 를, 그렇지 않은 경우 ``domain_public`` 을 선택합니다. **사용자정보** 옵션 #. **사용자테이블명** : ``users`` 을 입력합니다. #. **사용자ID컬럼명** : ``primaryEmail`` 을 입력합니다. #. **사용자이름컬럼명** : ``name/fullName`` 을 입력합니다. #. **부서ID컬럼명** : ``orgUnitPath`` 을 입력합니다. **부서정보** 옵션 #. **Table Name** : ``orgunits`` 을 입력합니다. #. **출력정렬순서** : 부서명을 기준으로 출력하기 위해 ``@NAMEPATH`` 을 입력합니다. #. **부서ID컬럼명** : ``orgUnitId`` 을 입력합니다. #. **부서이름컬럼명** : ``name`` 을 입력합니다. #. **상위부서컬럼명** : ``parentOrgUnitId`` 을 입력합니다. #. **생성** 버튼을 클릭합니다. .. attention:: G Suite는 API 사용시 password 속성을 제공하지 않으므로 사용자 비밀번호를 동기화할 수 없습니다. 따라서 별도의 연동을 설정해야합니다. :doc:`../integrate-external` 의 ``SAML 2.0`` 을 참조합니다. .. |gsuit| image:: /images/youtube.png :target: https://www.youtube.com/watch?v=ZECnzRlEQIs :width: 35px