ServiceNow 인스턴스 준비하기

ServiceNow용 Snowflake Connector를 설치하기 전에 ServiceNow 인스턴스를 설정해야 합니다.

ServiceNow 인스턴스를 설정하려면 다음 단계를 완료하십시오.

  1. ServiceNow 인스턴스가 공개적으로 사용 가능한지 확인하십시오. 커넥터는 VPN 뒤에 숨겨진 인스턴스와 함께 작동하지 않습니다.

  2. Snowflake로 수집하려는 데이터가 포함된 ServiceNow 테이블을 식별합니다.

  3. 커넥터의 ServiceNow 사용자를 식별하거나 생성합니다.

    ServiceNow 인스턴스에 연결하려면 커넥터가 ServiceNow 사용자로 인스턴스에 인증해야 합니다. 다음 요구 사항을 충족하는 ServiceNow 사용자를 선택합니다.

    • 사용자 이름에 콜론(:)을 포함할 수 없습니다.

    • 사용자는 수집하려는 ServiceNow 테이블의 모든 레코드에 대한 읽기 액세스 권한이 있어야 합니다. ACL(액세스 제어 목록)은 이러한 테이블의 어떤 레코드도 이 사용자로부터 숨겨서는 안 됩니다.

    • 사용자가 스키마 감지를 활성화하려면 sys_db_object (name, super_class, sys_id 필드 포함), sys_glide_object (name, scalar_type, sys_id 필드 포함), sys_dictionary (element, internal_type, name, sys_id 필드 포함) 테이블의 모든 행에 대한 읽기 액세스 권한이 있어야 합니다.

    • 커넥터가 적절한 수집 전략을 사용할 수 있도록 사용자에게 sys_table_rotation 테이블(namesys_id 필드 포함)의 모든 행에 대한 읽기 액세스 권한이 있어야 합니다.

    • 사용자는 sys_db_object, sys_glide_object, sys_dictionary, sys_table_rotation 및 저널 테이블의 sys_updated_on 필드에 대한 액세스 권한이 있어야 합니다. 그렇지 않으면 테이블은 덜 비용 효율적인 자르기 및 로드 수집 모드를 사용하여 로드됩니다.

      참고

      Snowsight에서는 대화형 사용자 로만 ServiceNow에 대한 OAuth 인증을 사용해 연결을 구성할 수 있습니다. ServiceNow 사용자는 사용자에 대해 Web service access only 설정이 비활성화된 경우 대화형 사용자가 됩니다.

      SQL 명령으로 연결을 구성한 경우에만 비대화형 사용자로 OAuth 인증을 사용할 수 있습니다. 이 경우에는 ServiceNow에 로그인할 수 없거나 Snowsight를 사용하여 OAuth 새로 고침 토큰을 받을 수 없습니다.

  4. sys_updated_on 열이 있는 ServiceNow 테이블을 수집하고 동기화하려는 경우 해당 열에 인덱스를 설정합니다. 인덱스 설정에 대한 자세한 내용은 ServiceNow 설명서의 테이블 인덱스 만들기 를 참조하십시오.

    사용자 인터페이스를 통해 인덱스를 만든 후 인덱스가 생성되는 데 시간이 걸릴 수 있습니다. 인덱싱 프로세스는 백그라운드 작업으로 실행됩니다.

    인스턴스에 큰 테이블이 있는 경우 ServiceNow 고객 지원팀에 연락해 큰 테이블을 인덱싱하는 최선의 접근 방식에 대해 문의하는 것이 좋습니다.

  5. (선택 사항) OAuth 인증 방법을 사용할 계획이고 ServiceNow 사용자에게 할당된 읽기 전용 역할 이 있는 경우 glide.security.snc_read_only_role.tables.exempt_create 시스템 속성은 값 목록에 oauth_credential 테이블이 있습니다.

    sys_properties 테이블에서 glide.security.snc_read_only_role.tables.exempt_create 속성을 생성하거나 편집합니다. 이 속성 편집에 대한 자세한 내용은 ServiceNow 기술 자료 를 참조하십시오.

    새 시스템 속성을 추가하는 방법을 알아보려면 ServiceNow 설명서에서 시스템 속성 추가 를 참조하십시오.

  6. (선택 사항) 핵심 기능에 필수적이지 않은 일부 커넥터 프로시저는 ServiceNow 엔드포인트 <service_now_instance>/<table_name>.do?SCHEMA 을 사용하여 테이블 스키마를 검색합니다. 이 엔드포인트에는 admin 역할이 필요합니다. 이 역할에 대한 자세한 내용은 ServiceNow 설명서의 기본 시스템 역할 을 참조하십시오. 이 역할이 없는 사용자로 커넥터를 구성하면 이 엔드포인트를 기반으로 하는 프로시저가 실행되지 않습니다. 영향을 받는 프로시저에는 이 요구 사항에 관한 적절한 참고 사항이 있습니다.

  7. (선택 사항) 삭제된 레코드를 전파할 수 있도록 하려면 sys_audit_delete 테이블 또는 사용자 지정 저널 테이블을 삭제된 레코드에 대한 정보 소스로 사용하십시오.

    참고

    커넥터는 모든 저널 테이블 레코드에 액세스할 수 있어야 합니다. 그렇지 않으면 설치가 실패할 수 있습니다. 그렇지 않으면 다른 테이블의 레코드 삭제가 올바르지 않을 수 있습니다.

    저널 테이블 행이 ACL로 숨겨진 경우 커넥터 동작을 예측할 수 없습니다. 설치에 성공하더라도 일부 삭제 항목은 프로세스의 후반부에서 올바르게 동기화되지 않을 수 있습니다.

    • sys_audit_delete 를 사용하려면 다음을 수행하십시오.

      1. no_audit_delete 사전 특성false 로 설정합니다.

      2. 커넥터의 ServiceNow 사용자가 sys_audit_delete 테이블과 이 테이블의 documentkey, tablename, sys_id, sys_created_on 필드에 액세스할 수 있는지 확인하십시오.

    • 사용자 지정 저널 테이블을 사용하려면 다음을 수행하십시오.

      1. documentkeytablename 이라는 문자열 열이 있는 snowflake_connector_journal 이라는 저널 테이블을 만듭니다.

      2. 커넥터의 ServiceNow 사용자가 snowflake_connector_journal 테이블과 이 테이블의 u_documentkey, u_tablename, sys_id, sys_created_on 필드에 액세스할 수 있는지 확인하십시오.

      3. 다음 코드를 사용하여 RecordChange 라는 스크립트 포함을 만듭니다.

        var RecordChange = Class.create();
        
        RecordChange.prototype= {
          initialize :function() {},
          captureChange :function(tableName, docID) {
            var changeCapture = new GlideRecord('u_snowflake_connector_journal');
            changeCapture.initialize();
            changeCapture.setValue('u_documentkey', docID);
            changeCapture.setValue('u_tablename', tableName);
            changeCapture.insert();
          },
          type :'RecordChange'
        };
        
        Copy
      4. 레코드 삭제를 캡처하는 비즈니스 규칙을 정의합니다.

        (function executeRule(current, previous /*null when async*/) {
            new RecordChange().captureChange(current.getTableName(), current.getUniqueValue());
        })(current, previous);
        
        Copy
      5. 삭제된 레코드를 전파하려는 각 테이블에 대해 레코드가 삭제된 후 실행되도록 이 비즈니스 규칙을 구성합니다.

참고

커넥터는 감사가 수행된 경우에만 삭제된 레코드를 동기화할 수 있습니다. DBDelete.setWorkflow() 를 호출하지 않는 삭제 작업은 Snowflake에서 수집되지 않습니다.

DBDelete.setWorkflow() 사용에 대한 자세한 내용은 ServiceNow 제품 설명서를 참조하십시오.

또한, 삭제된 레코드와 관련하여 유의해야 할 사항은 다음과 같습니다.

  • no_audit_delete=true 사전 속성이 포함된 테이블에 대해서는 레코드 삭제가 추적되지 않습니다.

  • sys 접두사가 포함된 테이블에서는 레코드 삭제가 기본적으로 추적되지 않습니다.

  • 감사된 테이블에 참조 필드가 있는 경우 커넥터는 연속 레코드 삭제를 통해서만 삭제된 레코드를 수집할 수 있습니다. 연속 레코드 삭제에 대한 자세한 내용은 ServiceNow 제품 설명서를 참조하십시오.

이러한 절차를 완료한 후 Snowsight로 커넥터 설치 및 구성하기 또는 SQL 명령을 사용하여 커넥터 설치 및 구성하기 의 단계를 따르십시오.