SQL 명령을 사용하여 커넥터 설치 및 구성하기

Snowflake Connector for ServiceNow® V2에는 Snowflake Connector 약관 이 적용됩니다.

이 항목에서는 SQL 명령을 사용하여 커넥터를 설치하고 구성하는 방법을 설명합니다. ServiceNow® 인스턴스 준비하기 에서 개술한 절차를 이미 수행했다고 가정하고 설명을 이어가겠습니다.

이 항목의 내용:

Snowflake Connector for ServiceNow®V2 설치하기

다음 절차에서는 커넥터를 설치하는 방법을 설명합니다.

  1. ACCOUNTADMIN 역할을 가진 사용자로 Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 Data Products » Marketplace 를 선택합니다.

  3. Snowflake Connector for ServiceNow®V2 를 검색한 다음 커넥터에 알맞은 타일을 선택합니다.

  4. Snowflake Connector for ServiceNow®V2 페이지에서 Get 을 선택합니다.

    그러면 설치 프로세스의 초기 부분을 시작하는 데 사용하는 대화 상자가 표시됩니다.

    대화 상자에서 다음을 구성합니다.

    1. Application name 필드에 커넥터 인스턴스의 데이터베이스로 사용할 데이터베이스의 이름을 입력합니다. 이 데이터베이스는 자동으로 생성됩니다.

    2. Warehouse used for installation 필드에서 커넥터 설치에 사용할 웨어하우스를 선택합니다.

      참고

      이 웨어하우스는 커넥터가 ServiceNow®의 데이터를 동기화하는 데 사용하는 것과 동일한 웨어하우스가 아닙니다. 이후 단계에서 이 목적으로 별도의 웨어하우스를 생성합니다.

    3. Get 을 선택합니다.

  5. 알림: Installing App After installation, an email will be sent to <user_email> 과 함께 대화 상자가 나타납니다. SQL을 사용하여 구성을 계속하려면 대화 상자를 닫고 Worksheets 로 이동합니다.

OAuth 설정하기

참고

OAuth 대신 기본 인증을 사용할 계획이라면 이 섹션을 건너뛰고 시크릿 오브젝트 만들기 섹션으로 계속 진행할 수 있습니다.

Snowflake Connector for ServiceNow®V2 가 ServiceNow® 인스턴스 인증에 OAuth를 사용하도록 구성할 수 있습니다.

  • ServiceNow에서 코드 권한 부여 흐름 과 함께 OAuth 사용을 지원하도록 인스턴스를 설정해야 합니다.

  • Snowflake Connector for ServiceNow®V2 에서

    • 커넥터는 TYPE = API_AUTHENTICATION 과의 보안 통합을 사용하여 Snowflake를 ServiceNow® 인스턴스에 연결합니다.

      보안 통합은 ServiceNow® 인스턴스 인증을 위해 ServiceNow® OAuth 클라이언트 ID, 클라이언트 시크릿, 엔드포인트 URL를 지정합니다.

    • 커넥터는 Snowflake 시크릿 오브젝트를 사용하여 인증 자격 증명을 비롯한 중요한 정보를 관리합니다.

      인증에 OAuth를 사용하는 경우, 커넥터는 ServiceNow® OAuth 새로 고침 토큰, 새로 고침 토큰 만료 시간, 보안 통합의 이름을 Snowflake 시크릿 오브젝트에 저장합니다.

OAuth를 사용하도록 Snowflake Connector for ServiceNow®V2 를 설정하려면 다음 단계를 따르십시오.

  1. 코드 권한 부여 흐름과 함께 OAuth를 사용하도록 ServiceNow® 인스턴스를 구성합니다.

    • ServiceNow® 인스턴스가 이미 OAuth 코드 권한 부여 흐름을 사용하고 있고 해당 인스턴스를 Snowflake Connector for ServiceNow®V2 와 함께 사용하려는 경우 클라이언트 ID, 클라이언트 시크릿, OAuth 토큰에 해당하는 엔드포인트 URL을 기록해 두십시오.

      자세한 내용은 OAuth 토큰 관리 를 참조하십시오. 이 정보를 기록한 후 다음 단계에서 보안 통합을 생성합니다.

    • 다른 ServiceNow® 인스턴스를 사용하려면 인스턴스에 액세스하거나 생성하고 OAuth 설정클라이언트가 인스턴스에 액세스할 수 있도록 엔드포인트 생성 에 표시된 대로 코드 권한 부여 흐름과 함께 OAuth를 사용하도록 인스턴스를 구성합니다.

  2. ServiceNow®에서 애플리케이션 레지스트리를 생성하고 이를 사용하여 커넥터를 구성합니다.

    1. ServiceNow® 인스턴스에 로그인한 다음 Homepage 를 선택합니다.

    2. OAuth를 검색한 다음 Application Registry 를 선택합니다.

    3. New 를 선택한 다음 Create an OAuth API endpoint for external clients 을 선택합니다.

      그러면 다음 이미지와 같이 애플리케이션 레지스트리에 대한 구성 페이지가 표시됩니다.

      ServiceNow®에 애플리케이션 레지스트리 페이지를 표시합니다.
    4. ServiceNow에서 Name 필드에 OAuth 애플리케이션 레지스트리의 이름을 입력합니다.

    5. 필요한 경우 ServiceNow에서 Refresh Token LifespanAccess Token Lifespan 필드의 값을 업데이트합니다.

      • 액세스 토큰의 수명을 600초 이상으로 설정하는 것이 좋습니다.

      • 새로 고침 토큰의 수명 값을 7776000(90일)으로 지정합니다.

    6. ServiceNow 에서 Submit 를 선택합니다.

      OAuth 애플리케이션 레지스트리가 애플리케이션 레지스트리 목록에 나타납니다.

    7. ServiceNow에서 방금 생성한 애플리케이션 레지스트리를 선택합니다.

      ServiceNow®가 Client IDClient Secret 필드에 대한 값을 생성했습니다. 다음 섹션에서 보안 통합을 생성 할 때 이들 값을 사용합니다.

OAuth 새로 고침 토큰 생성하기

OAuth 새로 고침 토큰을 생성하는 방법은 다음과 같습니다.

  1. Snowflake Connector for ServiceNow®V2 설치하기 에서 개술한 작업을 수행했는지 확인합니다.

  2. ServiceNow® 설명서의 REST OAuth 예제 에 설명된 대로 ServiceNow® 인스턴스의 /oauth_token.do 엔드포인트에 HTTP 요청을 보내십시오.

    예를 들어 curl을 사용하여 HTTP 요청을 보내는 경우 다음을 실행하십시오.

    curl -d "grant_type=password" --data-urlencode "client_id=<client_id>" --data-urlencode "client_secret=<client_secret>" --data-urlencode "username=<username>" --data-urlencode "password=<password>" -X POST https://<instance_name>.service-now.com/oauth_token.do
    
    Copy

    Where

    instance_name

    ServiceNow®의 이름을 지정합니다.

    client_idclient_secret

    ServiceNow® 엔드포인트를 설정할 때 얻은 값을 지정합니다.

    usernamepassword

    ServiceNow® 인스턴스에 대한 자격 증명을 지정합니다.

    참고

    위의 예제에서는 curl에서 data-urlencode 명령줄 플래그를 사용하여 ServiceNow®에 전송된 HTTP 요청의 클라이언트 시크릿, 사용자 이름, 비밀번호를 URL로 인코딩 합니다.

    다른 도구를 사용하여 HTTP 요청을 보내는 경우 요청에서 이러한 값을 URL로 인코딩해야 합니다.

    HTTP 응답 본문에는 JSON 오브젝트가 포함되어 있습니다. 이 오브젝트의 refresh_token 필드에서 새로 고침 토큰을 가져옵니다.

    {"access_token":"abcd1234","refresh_token":"cdef567","scope":"useraccount","token_type":"Bearer","expires_in":1799}
    
    Copy

필수 오브젝트 만들기

보안 통합 만들기(선택 사항)

보안 통합은 Snowflake와 서드 파티 OAuth 2.0 서비스 간의 인터페이스를 제공하는 Snowflake 오브젝트입니다.

CREATE SECURITY INTEGRATION 명령을 사용하여 다음 예와 같이 보안 통합을 생성합니다.

CREATE SECURITY INTEGRATION <name>
 TYPE = API_AUTHENTICATION
 AUTH_TYPE = OAUTH2
 OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST
 OAUTH_CLIENT_ID = '<client_id>'
 OAUTH_CLIENT_SECRET = '<client_secret>'
 OAUTH_TOKEN_ENDPOINT = 'https://<my_instance>.service-now.com/oauth_token.do'
 ENABLED = TRUE;
Copy

여기서

name

보안 통합의 이름을 지정합니다.

client_id

이전 섹션에서 ServiceNow®에서 얻은 Client ID 필드의 값을 지정합니다.

client_secret

이전 섹션에서 ServiceNow®에서 얻은 Client Secret 필드의 값을 지정합니다.

my_instance

ServiceNow®의 이름을 지정합니다. 이는 ServiceNow® 인스턴스의 호스트 이름 중 첫 번째 부분입니다. 예를 들어, ServiceNow® 인스턴스에 대한 URL이 다음과 같은 경우

https://myinstance.service-now.com
Copy

인스턴스 이름은 myinstance 가 됩니다.

시크릿 오브젝트 만들기

Snowflake Connector for ServiceNow®V2 가 인증에 사용하는 Snowflake 시크릿 오브젝트를 생성합니다.

시크릿 오브젝트를 전용 데이터베이스 및 스키마에 저장하는 것이 좋습니다. 시크릿을 관리할 역할을 선택할 수 있으며 시크릿을 저장할 데이터베이스와 스키마를 선택할 수 있습니다.

시크릿을 관리하는 사용자 지정 역할을 만들려면 CREATE ROLE 명령을 사용하십시오. 역할에 부여할 수 있는 권한에 대한 자세한 내용은 액세스 제어 권한 을 참조하십시오.

다음 섹션에서는 별도의 데이터베이스와 스키마에 저장되고 사용자 지정 역할이 관리하는 시크릿 오브젝트를 생성하는 방법을 설명합니다.

시크릿 오브젝트의 스키마 만들기

먼저 CREATE DATABASECREATE SCHEMA 명령을 실행하여 시크릿 오브젝트를 저장할 데이터베이스와 스키마를 만듭니다. 스키마 및 데이터베이스의 이름은 유효한 오브젝트 식별자 여야 합니다.

예를 들어 시크릿 오브젝트에 대해 secretsdb 데이터베이스와 apiauth 스키마를 만들려면 다음 명령을 실행하십시오.

USE ROLE accountadmin;
CREATE DATABASE secretsdb;
CREATE SCHEMA apiauth;
Copy

시크릿을 관리할 사용자 지정 역할 만들기(선택 사항)

다음으로, 시크릿을 관리할 사용자 지정 역할을 만들고(기존 역할을 사용하지 않는다고 가정함) 시크릿을 만드는 데 필요한 권한을 역할에 부여합니다.

  1. USERADMIN 시스템 역할을 사용하여 CREATE ROLE 명령을 실행하여 시크릿을 관리할 사용자 지정 역할을 만듭니다. 예를 들어 시크릿을 관리하는 사용자 지정 역할 secretadmin 을 생성하려면 다음 명령을 실행하십시오.

    USE ROLE useradmin;
    CREATE ROLE secretadmin;
    
    Copy
  2. SECURITYADMIN 시스템 역할을 사용하여 GRANT <권한> TO ROLE 명령을 실행하여 사용자 지정 역할에 다음 권한을 부여합니다.

    예:

    USE ROLE securityadmin;
    GRANT USAGE ON DATABASE secretsdb TO ROLE secretadmin;
    GRANT USAGE ON SCHEMA secretsdb.apiauth TO role secretadmin;
    GRANT CREATE SECRET ON SCHEMA secretsdb.apiauth TO role secretadmin;
    GRANT USAGE ON INTEGRATION servicenow_oauth TO role secretadmin;
    
    Copy
  3. USERADMIN 시스템 역할을 사용하여 GRANT <권한> TO ROLE 명령을 실행하여 시크릿을 생성하는 사용자에게 사용자 지정 역할을 부여합니다. 예를 들어 사용자 servicenow_secret_owner 에게 역할을 부여하려면 다음 명령을 실행하십시오.

    USE ROLE useradmin;
    GRANT ROLE secretadmin TO user servicenow_secret_owner;
    
    Copy

시크릿 만들기

다음으로, Snowflake가 코드 권한 부여 흐름과 함께 OAuth를 사용하여 ServiceNow® 인스턴스에 인증할 수 있도록 하는 시크릿을 만듭니다.

참고

OAuth 대신 기본 인증을 사용할 계획이라면 아래 참고 항목 을 참조하십시오.

시크릿 오브젝트를 생성하려면 다음 매개 변수와 함께 CREATE SECRET 명령을 실행하십시오.

  • TYPEOAUTH2 로 설정합니다.

  • OAUTH_REFRESH_TOKENOAuth 새로 고침 토큰 생성하기 에서 검색한 OAuth 새로 고침 토큰으로 설정합니다.

  • UTC 타임존에서 OAUTH_REFRESH_TOKEN_EXPIRY_TIME 을 새로 고침 토큰 만료 타임스탬프로 설정합니다. 토큰이 발행된 날짜에 ServiceNow®의 토큰 수명을 추가하여 이를 계산할 수 있습니다. 기본적으로, 토큰은 100일 후에 만료됩니다.

  • API_AUTHENTICATION필수 오브젝트 만들기 에서 생성한 보안 통합의 이름으로 설정합니다.

예를 들어 servicenow_oauth 라는 보안 통합을 사용하는 service_now_creds_oauth_code 라는 시크릿을 생성하려면 다음 명령을 실행하십시오.

USE ROLE secretadmin;
USE SCHEMA secretsdb.apiauth;
CREATE SECRET servicenow_creds_oauth_code
  TYPE = OAUTH2
  OAUTH_REFRESH_TOKEN = '34n;vods4nQsdg09wee4qnfvadH'
  OAUTH_REFRESH_TOKEN_EXPIRY_TIME = '2022-01-06 20:00:00'
  API_AUTHENTICATION = servicenow_oauth;
Copy

기존 시크릿의 속성을 수정하려면(예: OAuth 새로 고침 토큰 업데이트) ALTER SECRET 명령을 사용하십시오.

참고

(OAuth가 아니라) 기본 인증을 사용할 계획이라면 CREATE SECRET 명령을 실행하여 TYPEPASSWORD 로 설정된 시크릿을 생성하십시오. USERNAMEPASSWORD 를 ServiceNow® 인스턴스에 인증하는 데 사용할 ServiceNow® 사용자의 사용자 이름과 비밀번호로 설정합니다. 예:

USE ROLE secretadmin;
USE SCHEMA secretsdb.apiauth;
CREATE SECRET servicenow_creds_pw
  TYPE = PASSWORD
  USERNAME = 'jsmith1'
  PASSWORD = 'W3dr@fg*7B1c4j';
Copy

이 사용자에 대해 다단계 인증이 활성화된 경우 ServiceNow® 설명서의 REST API 에 설명된 대로 비밀번호와 함께 MFA 토큰을 제공해야 합니다.

웨어하우스 만들기

커넥터 전용 웨어하우스를 생성하는 것이 좋습니다. 전용 웨어하우스를 사용하면 비용 관리 및 리소스 추적을 개선할 수 있습니다. 리소스 추적을 용이하게 하려면 선택적으로 전용 웨어하우스에 하나 이상의 태그를 추가 할 수 있습니다.

커넥터 웨어하우스의 경우 대규모 웨어하우스를 사용하는 것이 좋습니다.

servicenow_conn_warehouse 라는 대규모 웨어하우스를 생성하려면 다음 명령을 실행하십시오.

USE ROLE accountadmin;
CREATE WAREHOUSE servicenow_conn_warehouse WAREHOUSE_SIZE = LARGE;
Copy

주의

웨어하우스가 최소 3시간 동안 쿼리를 실행할 수 있는지 확인합니다. 커넥터가 사용하는 웨어하우스와 계정 모두에서 설정할 수 있는 매개 변수 값의 영향을 받습니다(계정 값이 우선함). 현재 값을 확인하려면 다음을 실행합니다.

SHOW PARAMETERS LIKE 'STATEMENT_TIMEOUT_IN_SECONDS' FOR ACCOUNT;
SHOW PARAMETERS LIKE 'STATEMENT_TIMEOUT_IN_SECONDS' FOR WAREHOUSE <connector_warehouse>;
Copy

두 값이 모두 10800 (즉, 3시간) 이상인 경우 변경할 필요가 없습니다. 그렇지 않으면 필요에 따라 실행합니다.

ALTER ACCOUNT SET STATEMENT_TIMEOUT_IN_SECONDS = 10800;
ALTER WAREHOUSE <connector_warehouse> SET STATEMENT_TIMEOUT_IN_SECONDS = 10800;
Copy

적절한 시간 제한이 제공되지 않으면 데이터 수집에 실패하게 됩니다.

ServiceNow® 데이터에 대한 데이터베이스 및 스키마 만들기

다음으로, ServiceNow® 데이터에 대한 데이터베이스와 스키마를 만듭니다. Snowflake Connector for ServiceNow®V2 는 ServiceNow® 데이터를 이 데이터베이스와 스키마로 수집합니다.

데이터베이스와 스키마를 만들 때 다음 사항에 유의하십시오.

데이터베이스와 스키마를 생성하려면 CREATE DATABASECREATE SCHEMA 명령을 실행하십시오.

예를 들어 ServiceNow® 데이터에 대해 dest_db 데이터베이스와 dest_schema 스키마를 만들려면 다음 명령을 실행합니다.

USE ROLE accountadmin;
CREATE DATABASE dest_db;
CREATE SCHEMA dest_schema;
Copy

참고

커넥터를 다시 설치하는 경우 커넥터의 이전 설치를 위해 만든 스키마를 다시 사용할 수 있습니다. 커넥터의 이전 설치에서 이미 데이터를 로드했고 동일한 테이블에 데이터를 계속 로드하려는 경우에 가능한 일입니다.

데이터 로드를 계속하려면 커넥터를 다시 설치 하기 전에 스키마를 수정하지 마십시오. 커넥터의 이전 설치에서 생성된 테이블의 정의를 변경하지 마십시오.

커넥터는 주기적으로 커넥터 구성 및 상태를 스키마의 __CONNECTOR_STATE_EXPORT 테이블로 내보내 나중에 다시 설치하는 동안 커넥터 구성을 복구하는 데 사용할 수 있습니다. 또는 내보내기 테이블이 없거나 수동으로 삭제된 경우에도 나중에 ENABLE_TABLES 저장 프로시저 를 호출하여 이전에 수집한 테이블을 다시 활성화할 수 있습니다. 저장 프로시저는 필요한 모든 오브젝트가 이미 존재하는지 확인하고 이를 다시 만들려고 시도하지 않으므로 이미 수집된 데이터가 손실될 위험이 없습니다.

ServiceNow® 인스턴스와의 통신을 위한 네트워크 규칙 만들기

다음으로, 계정에서 ServiceNow® 인스턴스로의 아웃바운드 트래픽을 허용하려면 네트워크 규칙을 만듭니다. 다음 구문을 사용하여 CREATE NETWORK RULE 명령을 실행합니다.

CREATE NETWORK RULE <name>
  MODE = 'EGRESS'
  TYPE = 'HOST_PORT'
  VALUE_LIST = ('<servicenow_instance_name>.service-now.com');
Copy

여기서

name

네트워크 규칙의 이름을 지정합니다. 이름은 유효한 오브젝트 식별자 여야 합니다.

VALUE_LIST = ('servicenow_instance_name.service-now.com')

요청을 보낼 수 있는 허용된 ServiceNow® 인스턴스 목록을 지정합니다.

참고

사용자 지정 역할로 시크릿을 만든 경우 네트워크 규칙을 만들기 전에 ACCOUNTADMIN 에 해당 시크릿에 대한 USAGE 권한을 추가로 부여해야 합니다.

USE ROLE secretadmin;
GRANT USAGE ON SECRET secretsdb.apiauth.<secret_name> TO ROLE ACCOUNTADMIN;
Copy

ServiceNow® 인스턴스와의 통신을 위한 외부 액세스 통합 만들기

다음으로, ServiceNow® 인스턴스와의 통신을 위한 외부 액세스 통합을 만듭니다. 다음 구문을 사용하여 CREATE EXTERNAL ACCESS INTEGRATION 명령을 실행합니다.

CREATE EXTERNAL ACCESS INTEGRATION <integration_name>
  ALLOWED_NETWORK_RULES = (<network_rule_name>)
  ALLOWED_AUTHENTICATION_SECRETS = (<secret_name>)
  ENABLED = TRUE;
Copy

여기서

integration_name

외부 액세스 통합의 이름을 지정합니다. 이름은 유효한 오브젝트 식별자 여야 합니다. 계정에서 이름은 API 통합 간에 고유해야 합니다.

ALLOWED_NETWORK_RULES = (network_rule_name)

ServiceNow® 인스턴스에 대한 액세스를 허용하는 네트워크 규칙을 지정합니다. 이렇게 하면 이 통합 기능은 네트워크 규칙에 지정된 URLs이 있는 인스턴스로 사용이 제한됩니다.

ServiceNow® 인스턴스와의 통신을 위한 네트워크 규칙 만들기 에서 생성한 네트워크 규칙의 이름으로 설정합니다.

ALLOWED_AUTHENTICATION_SECRETS = (secret_name)

API 통합 범위에서 사용하도록 허용되는 시크릿 이름의 목록을 지정합니다.

이를 시크릿 오브젝트 만들기 에서 생성한 시크릿 오브젝트의 이름으로 설정합니다.

ENABLED = TRUE

이 API 통합을 사용할지, 사용하지 않을지 지정합니다. API 통합을 사용하지 않을 경우 이 통합에 의존하는 어떤 외부 함수도 작동하지 않습니다.

TRUE

통합 정의에 지정된 매개 변수를 기반으로 통합을 실행할 수 있습니다.

FALSE

유지 관리를 위해 통합이 일시 중단됩니다. Snowflake와 서드 파티 서비스 간의 통합이 작동하지 않습니다.

예를 들어, 이름이 servicenow_external_access_integration 인 외부 액세스 통합을 만들려면 다음 명령을 실행합니다.

USE ROLE accountadmin;
CREATE EXTERNAL ACCESS INTEGRATION servicenow_external_access_integration
  ALLOWED_NETWORK_RULES = (secretsdb.apiauth.servicenow_network_rule)
  ALLOWED_AUTHENTICATION_SECRETS = (secretsdb.apiauth.servicenow_creds_pw)
  ENABLED = TRUE
Copy

커넥터에 대한 로깅 구성하기

Snowflake Connector for ServiceNow®V2 는 이벤트 테이블을 사용하여 커넥터에 대한 오류 로그를 저장합니다. 이벤트 테이블을 설정하려면 이벤트 테이블 설정하기 가이드를 따르십시오.

중요

로그 공유를 활성화하는 것이 좋습니다. 이를 통해 명확하지 않은 문제를 해결하는 데 매우 귀중한 도움이 됩니다.

설치된 커넥터 설정하기

커넥터를 설정하려면:

  1. Snowsight를 사용하여 커넥터 인스턴스용 데이터베이스를 만듭니다. 데이터베이스를 만드는 방법에 대한 자세한 내용은 Snowsight를 사용하여 커넥터 설치 및 구성하기 를 참조하십시오.

  2. SQL 워크시트로 이동합니다.

  3. ACCOUNTADMIN 역할이 있는 사용자로 로그인합니다. 예:

    USE ROLE ACCOUNTADMIN;
    
    Copy
  4. 커넥터의 인스턴스 역할을 하는 데이터베이스 에 필요한 모든 권한을 커넥터에 부여합니다.

    예를 들어, 이름이 my_connector_servicenow 인 커넥터에 다음 권한을 부여하려고 합니다.

    • 계정에 대한 EXECUTE TASK 권한

    • 계정에 대한 EXECUTE MANAGED TASK 권한

    • 웨어하우스 servicenow_conn_warehouse 에 대한 USAGE 권한

    • dest_db 데이터베이스에 대한 USAGE 권한

    • dest_db.dest_schema 스키마에 대한 USAGE, CREATE TABLE, CREATE VIEW 권한

    • servicenow_external_access_integration 통합에 대한 USAGE 권한

    • secretsdb 데이터베이스에 대한 USAGE 권한

    • secretsdb.apiauth 스키마에 대한 USAGE 권한

    • secretsdb.apiauth.servicenow_creds_oauth_code secret 시크릿에 대한 READ 권한

    그러면 다음 명령을 실행하십시오.

    USE ROLE accountadmin;
    
    GRANT EXECUTE TASK ON ACCOUNT TO APPLICATION my_connector_servicenow;
    GRANT EXECUTE MANAGED TASK ON ACCOUNT TO APPLICATION my_connector_servicenow;
    
    GRANT USAGE ON WAREHOUSE servicenow_conn_warehouse TO APPLICATION my_connector_servicenow;
    
    GRANT USAGE ON DATABASE dest_db TO APPLICATION my_connector_servicenow;
    GRANT USAGE ON SCHEMA dest_db.dest_schema TO APPLICATION my_connector_servicenow;
    GRANT CREATE TABLE ON SCHEMA dest_db.dest_schema TO APPLICATION my_connector_servicenow;
    GRANT CREATE VIEW ON SCHEMA dest_db.dest_schema TO APPLICATION my_connector_servicenow;
    
    GRANT USAGE ON INTEGRATION servicenow_external_access_integration TO APPLICATION my_connector_servicenow;
    
    GRANT USAGE ON DATABASE secretsdb TO APPLICATION my_connector_servicenow;
    GRANT USAGE ON SCHEMA secretsdb.apiauth TO APPLICATION my_connector_servicenow;
    GRANT READ ON SECRET secretsdb.apiauth.servicenow_creds_oauth_code TO APPLICATION my_connector_servicenow;
    
    Copy
  5. 대상 스키마의 테이블 및 뷰 소유권 이전(선택 사항)

    커넥터를 다시 설치하고 이전 대상 스키마를 재사용하는 경우 대상 스키마에 있는 모든 테이블과 뷰의 소유권을 커넥터로 이전해야 합니다. 커넥터에는 스키마의 오브젝트에 대한 권한을 관리하고 수집된 테이블의 스키마가 변경될 때 평면화된 뷰를 다시 생성하기 위한 소유권 권한이 필요합니다.

    소유권을 이전하려면 SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION 함수를 호출합니다.

    USE ROLE accountadmin;
    CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<connector_app>, true, <destination_database>, <destination_schema>);
    
    Copy

    SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION 은 Snowflake가 제공하는 시스템 함수으로, 지정된 데이터베이스나 스키마의 테이블과 뷰 소유권을 애플리케이션으로 이전할 수 있습니다. 일반 테이블과 일반 뷰의 소유권만 이전됩니다. 예를 들어, 동적 테이블, 외부 테이블, 구체화된 뷰 등의 소유권은 이전되지 않습니다.

    이 함수에는 다음과 같은 서명이 있습니다.

    SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<to_app>, <should_copy_grants>, <from_database>, <from_schema>)
    
    Copy

    여기서

    to_app

    오브젝트 소유권을 이전할 애플리케이션의 이름을 지정합니다.

    should_copy_grants

    그런 다음 TRUE 인 경우 기존 권한 부여를 복사하고, 그렇지 않으면 취소합니다. 권한 부여를 복사하려면 호출자에게 MANAGE GRANTS 권한이 필요합니다.

    from_database

    소유권을 변경해야 하는 오브젝트가 들어 있는 데이터베이스의 이름입니다.

    from_schema

    (선택 사항) 소유권을 변경해야 하는 오브젝트가 포함된 스키마의 이름입니다. 스키마가 지정되지 않으면 제공된 데이터베이스의 모든 스키마에 있는 테이블과 뷰의 소유권이 이전됩니다. 소유권 이전 중 관리되는 스키마의 오브젝트는 생략됩니다.

    함수를 실행하려면 호출자가 다음 조건 중 하나를 충족해야 합니다.

    • MANAGE GRANTS 권한(예: ACCOUNTADMIN 또는 SECURITYADMIN 역할)이 있어야 합니다. 또는

    • 여기에는 애플리케이션 인스턴스를 소유하는 역할과 소유권을 이전하기 위한 모든 오브젝트를 소유하는 역할이 포함되어 있습니다. 소유권이 없는 오브젝트는 함수에 의해 생략됩니다.

    예를 들어, 소유권을 이전하려면 다음과 같은 커넥터를 사용합니다.

    • my_connector_servicenow 라는 이름의 애플리케이션으로 설치되었습니다.

    • Snowflake의 ServiceNow® 데이터에 이름이 dest_db.dest_schema 인 스키마를 사용합니다.

    다음 명령을 실행합니다.

    USE ROLE accountadmin;
    CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION('my_connector_servicenow', true, 'dest_db', 'dest_schema');
    
    Copy

    필요한 경우, 이전에 데이터를 소유하고 있던 역할에 DATA_READER 애플리케이션 역할을 부여하여 데이터를 사용하는 기존 파이프라인의 중단을 방지합니다.

    GRANT APPLICATION ROLE <connector_app>.DATA_READER TO ROLE <previous_data_owner_role>;
    
    Copy

    DATA_READER 애플리케이션 역할은 CONFIGURE_CONNECTOR 프로시저가 실행될 때까지 대상 스키마의 테이블 및 뷰에 대한 권한을 갖지 못한다는 점에 유의하십시오.

  6. USE DATABASE 명령을 실행하여 커넥터용 데이터베이스를 사용합니다. 예:

    USE DATABASE my_connector_servicenow;
    
    Copy
  7. CALL 명령을 사용하여 이름이 CONFIGURE_CONNECTOR 인 저장 프로시저를 호출하여 커넥터를 구성합니다.

    CALL CONFIGURE_CONNECTOR({
      'warehouse': '<warehouse_name>',
      'destination_database': '<dest_db>',
      'destination_schema': '<dest_schema>'
    })
    
    Copy

    여기서

    warehouse_name

    커넥터의 웨어하우스 이름을 지정합니다.

    웨어하우스 이름은 유효한 오브젝트 식별자 여야 합니다.

    dest_db

    Snowflake에서 ServiceNow® 데이터의 데이터베이스 이름(이전에 생성한 데이터베이스)을 지정합니다.

    데이터베이스 이름은 유효한 오브젝트 식별자 여야 합니다.

    dest_schema

    Snowflake에서 ServiceNow® 데이터의 스키마 이름(이전에 생성한 스키마)을 지정합니다.

    스키마 이름은 유효한 오브젝트 식별자 여야 합니다.

    예를 들어, 다음과 같은 커넥터를 구성하려면:

    • servicenow_conn_warehouse 웨어하우스를 사용합니다.

    • Snowflake의 ServiceNow® 데이터에 이름이 dest_db.dest_schema 인 스키마를 사용합니다.

    다음 명령을 실행합니다.

    CALL CONFIGURE_CONNECTOR({
      'warehouse': 'servicenow_conn_warehouse',
      'destination_database': 'dest_db',
      'destination_schema': 'dest_schema'
    });
    
    Copy

    커넥터가 성공적으로 시작되면 이 저장 프로시저는 다음 응답을 반환합니다.

    {
      "responseCode": "OK",
      "message": "Connector successfully configured.",
    }
    
    Copy

    참고

    커넥터가 시작되면 커넥터의 전달된 웨어하우스, 대상 데이터베이스 및 대상 스키마의 이름을 변경할 수 없습니다. 커넥터는 이러한 오브젝트를 이름으로 참조합니다. 결과적으로, 이러한 오브젝트의 이름을 삭제하거나 변경하려고 시도하면 커넥터의 연결이 끊어져 작동이 중지됩니다.

    웨어하우스 이름을 바꾸는 대신, UPDATE_WAREHOUSE 저장 프로시저를 사용하여 커넥터가 사용하는 웨어하우스를 변경하십시오.

  8. CALL 명령으로 SET_CONNECTION_CONFIGURATION 이라는 저장 프로시저를 호출하여 ServiceNow® 인스턴스에 대한 연결을 구성합니다.

    CALL SET_CONNECTION_CONFIGURATION({
      'service_now_url': '<servicenow_base_url>',
      'secret': '<secret_name>',
      'external_access_integration': '<external_access_integration_name>'
    })
    
    Copy

    여기서

    servicenow_base_url

    커넥터가 사용해야 하는 ServiceNow® 인스턴스의 URL을 지정합니다. URL은 다음 형식이어야 합니다.

    https://<servicenow_instance_name>.service-now.com
    
    Copy
    secret_name

    ServiceNow®에 인증하기 위한 자격 증명을 포함하는 시크릿 오브젝트(앞서 생성한 시크릿) 의 정규화된 이름을 지정합니다.

    시크릿 오브젝트의 정규화된 이름을 다음 형식으로 지정해야 합니다.

    <database_name>.<schema_name>.<secret_name>
    
    Copy

    데이터베이스, 스키마 및 시크릿의 이름은 유효한 오브젝트 식별자 여야 합니다.

    external_access_integration_name

    ServiceNow®를 위한 외부 액세스 통합(앞서 생성한 외부 액세스 통합) 의 이름을 지정합니다.

    통합 이름은 유효한 오브젝트 식별자 여야 합니다.

    다음과 같은 ServiceNow® 인스턴스에 대한 연결을 구성하는 방법을 예로 들겠습니다.

    • URL https://myinstance.service-now.com 이 있음.

    • secretsdb.apiauth.servicenow_creds_oauth_code 에 저장된 시크릿을 사용함.

    • 이름이 servicenow_external_access_integration 인 외부 액세스 통합을 사용합니다.

    다음 명령을 실행합니다.

    CALL SET_CONNECTION_CONFIGURATION({
      'service_now_url': 'https://myinstance.service-now.com',
      'secret': 'SECRETSDB.APIAUTH.SERVICENOW_CREDS_OAUTH_CODE',
      'external_access_integration': 'SERVICENOW_API_INTEGRATION'
    });
    
    Copy

    연결이 성공적으로 구성되면 이 저장 프로시저는 다음 응답을 반환합니다.

    {
      "responseCode": "OK",
      "message": "Test request to ServiceNow® succeeded.",
    }
    
    Copy

    참고

    연결이 구성된 후에는 전달된 시크릿 및 외부 액세스 통합의 이름을 변경할 수 없습니다. 커넥터는 이러한 오브젝트를 이름으로 참조합니다. 결과적으로, 이러한 오브젝트의 이름을 삭제하거나 변경하려고 시도하면 커넥터의 연결이 끊어져 작동이 중지됩니다.

  9. CALL 명령을 사용하여 이름이 FINALIZE_CONNECTOR_CONFIGURATION 인 저장 프로시저를 호출하여 커넥터 구성을 마무리합니다.

    CALL FINALIZE_CONNECTOR_CONFIGURATION({
      'journal_table': '<name_of_journal_table>',
      'table_name': '<name_of_audited_table>',
      'sys_id': '<sys_id_of_audited_entry>'
    })
    
    Copy

    여기서

    name_of_journal_table

    삭제된 레코드에 대한 정보가 있는 테이블의 이름을 지정합니다. 자세한 내용은 ServiceNow® 인스턴스 준비하기 섹션을 참조하십시오.

    삭제된 레코드에 대한 정보는 삭제된 레코드를 전파하도록 설정한 테이블에만 사용할 수 있습니다.

    삭제된 레코드의 전파를 방지하려면 이 인자에 null 을 지정합니다.

    name_of_audited_table

    (선택 사항) 저널 테이블에 표시되어야 하는 감사 테이블의 이름을 지정하고 커넥터가 액세스할 수 있는 테이블의 이름을 지정합니다. 저널 테이블에 대한 액세스를 유효성 검사하는 동안 커넥터는 이 테이블과 관련된 감사 항목을 찾습니다. ServiceNow®에 대한 쿼리가 성공했지만 결과를 제공하지 않아 프로시저가 실패하는 경우 이 옵션을 제공합니다. 커넥터의 ServiceNow® 사용자에게 지정된 테이블의 모든 항목에 대한 액세스 권한이 있는지 확인합니다.

    이 옵션은 sys_id 매개 변수와 함께 사용할 수 없습니다.

    sys_id_of_audited_entry

    (선택 사항) 저널 테이블에 있어야 하고 커넥터가 액세스 권한을 가져야 하는 일부 감사된 테이블의 항목 sys_id 를 지정합니다. 저널 테이블에 대한 액세스의 유효성을 검사하는 동안 커넥터는 이 sys_id 와 관련된 감사 항목을 찾습니다. ServiceNow®에 대한 쿼리가 성공했지만 결과를 제공하지 않아 프로시저가 실패하는 경우 이 옵션을 제공합니다. 커넥터의 ServiceNow® 사용자에게 지정된 항목에 대한 액세스 권한이 있는지 확인합니다.

    이 옵션은 table_name 매개 변수와 함께 사용할 수 없습니다.

    커넥터가 성공적으로 시작되면 이 저장 프로시저는 다음 응답을 반환합니다.

    {
        "responseCode": "OK",
    }
    
    Copy

    커넥터 구성을 마무리하는 동안 커넥터는 이전에 내보낸 커넥터 상태가 대상 스키마에 있는지 확인하려고 시도합니다. __CONNECTOR_STATE_EXPORT 테이블이 존재하고 커넥터에서 액세스할 수 있는 경우 커넥터는 상태를 가져오려고 시도합니다. 가져오기가 성공적으로 완료되면 내보내기 테이블이 삭제됩니다. 가져오기 중 오류가 발생하면 오류를 수정한 후 FINALIZE_CONNECTOR_CONFIGURATION 프로시저를 다시 실행할 수 있습니다. 상태를 가져오지 않거나 가져오기 오류를 수정하지 않으려면 커넥터에서 테이블의 소유권을 이전하고 테이블을 삭제합니다.

새로 생성된 데이터베이스는 커넥터의 인스턴스로, 다음을 포함합니다.

커넥터 애플리케이션 역할

Native Application으로서, Snowflake Connector for ServiceNow®V2 는 애플리케이션 역할 을 정의합니다. 이는 커넥터를 위한 역할 기반 액세스 제어 에서 검토할 수 있습니다.

다음 단계

커넥터를 설치 및 구성한 후 ServiceNow® 데이터에 대한 데이터 수집 설정하기 에 설명된 단계를 수행합니다.