SQL 명령을 사용하여 커넥터 설치 및 구성하기¶
Snowflake Connector for ServiceNow® V2에는 Snowflake Connector 약관 이 적용됩니다.
이 항목에서는 SQL 명령을 사용하여 커넥터를 설치하고 구성하는 방법을 설명합니다. ServiceNow® 인스턴스 준비하기 에서 개술한 절차를 이미 수행했다고 가정하고 설명을 이어가겠습니다.
이 항목의 내용:
Snowflake Connector for ServiceNow®V2 설치하기¶
다음 절차에서는 커넥터를 설치하는 방법을 설명합니다.
ACCOUNTADMIN 역할을 가진 사용자로 Snowsight 에 로그인합니다.
탐색 메뉴에서 Data Products » Marketplace 를 선택합니다.
Snowflake Connector for ServiceNow®V2 를 검색한 다음 커넥터에 알맞은 타일을 선택합니다.
Snowflake Connector for ServiceNow®V2 페이지에서 Get 을 선택합니다.
그러면 설치 프로세스의 초기 부분을 시작하는 데 사용하는 대화 상자가 표시됩니다.
대화 상자에서 다음을 구성합니다.
Application name 필드에 커넥터 인스턴스의 데이터베이스로 사용할 데이터베이스의 이름을 입력합니다. 이 데이터베이스는 자동으로 생성됩니다.
Warehouse used for installation 필드에서 커넥터 설치에 사용할 웨어하우스를 선택합니다.
참고
이 웨어하우스는 커넥터가 ServiceNow®의 데이터를 동기화하는 데 사용하는 것과 동일한 웨어하우스가 아닙니다. 이후 단계에서 이 목적으로 별도의 웨어하우스를 생성합니다.
Get 을 선택합니다.
알림:
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 를 설정하려면 다음 단계를 따르십시오.
코드 권한 부여 흐름과 함께 OAuth를 사용하도록 ServiceNow® 인스턴스를 구성합니다.
ServiceNow® 인스턴스가 이미 OAuth 코드 권한 부여 흐름을 사용하고 있고 해당 인스턴스를 Snowflake Connector for ServiceNow®V2 와 함께 사용하려는 경우 클라이언트 ID, 클라이언트 시크릿, OAuth 토큰에 해당하는 엔드포인트 URL을 기록해 두십시오.
자세한 내용은 OAuth 토큰 관리 를 참조하십시오. 이 정보를 기록한 후 다음 단계에서 보안 통합을 생성합니다.
다른 ServiceNow® 인스턴스를 사용하려면 인스턴스에 액세스하거나 생성하고 OAuth 설정 및 클라이언트가 인스턴스에 액세스할 수 있도록 엔드포인트 생성 에 표시된 대로 코드 권한 부여 흐름과 함께 OAuth를 사용하도록 인스턴스를 구성합니다.
ServiceNow®에서 애플리케이션 레지스트리를 생성하고 이를 사용하여 커넥터를 구성합니다.
ServiceNow® 인스턴스에 로그인한 다음 Homepage 를 선택합니다.
OAuth를 검색한 다음 Application Registry 를 선택합니다.
New 를 선택한 다음 Create an OAuth API endpoint for external clients 을 선택합니다.
그러면 다음 이미지와 같이 애플리케이션 레지스트리에 대한 구성 페이지가 표시됩니다.
ServiceNow에서 Name 필드에 OAuth 애플리케이션 레지스트리의 이름을 입력합니다.
필요한 경우 ServiceNow에서 Refresh Token Lifespan 및 Access Token Lifespan 필드의 값을 업데이트합니다.
액세스 토큰의 수명을 600초 이상으로 설정하는 것이 좋습니다.
새로 고침 토큰의 수명 값을 7776000(90일)으로 지정합니다.
ServiceNow 에서 Submit 를 선택합니다.
OAuth 애플리케이션 레지스트리가 애플리케이션 레지스트리 목록에 나타납니다.
ServiceNow에서 방금 생성한 애플리케이션 레지스트리를 선택합니다.
ServiceNow®가 Client ID 및 Client Secret 필드에 대한 값을 생성했습니다. 다음 섹션에서 보안 통합을 생성 할 때 이들 값을 사용합니다.
OAuth 새로 고침 토큰 생성하기¶
OAuth 새로 고침 토큰을 생성하는 방법은 다음과 같습니다.
Snowflake Connector for ServiceNow®V2 설치하기 에서 개술한 작업을 수행했는지 확인합니다.
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
Where
instance_name
ServiceNow®의 이름을 지정합니다.
client_id
및client_secret
ServiceNow® 엔드포인트를 설정할 때 얻은 값을 지정합니다.
username
및password
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}
필수 오브젝트 만들기¶
보안 통합 만들기(선택 사항)¶
보안 통합은 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;
여기서
name
보안 통합의 이름을 지정합니다.
client_id
이전 섹션에서 ServiceNow®에서 얻은 Client ID 필드의 값을 지정합니다.
client_secret
이전 섹션에서 ServiceNow®에서 얻은 Client Secret 필드의 값을 지정합니다.
my_instance
ServiceNow®의 이름을 지정합니다. 이는 ServiceNow® 인스턴스의 호스트 이름 중 첫 번째 부분입니다. 예를 들어, ServiceNow® 인스턴스에 대한 URL이 다음과 같은 경우
https://myinstance.service-now.com인스턴스 이름은
myinstance
가 됩니다.
시크릿 오브젝트 만들기¶
Snowflake Connector for ServiceNow®V2 가 인증에 사용하는 Snowflake 시크릿 오브젝트를 생성합니다.
시크릿 오브젝트를 전용 데이터베이스 및 스키마에 저장하는 것이 좋습니다. 시크릿을 관리할 역할을 선택할 수 있으며 시크릿을 저장할 데이터베이스와 스키마를 선택할 수 있습니다.
시크릿을 관리하는 사용자 지정 역할을 만들려면 CREATE ROLE 명령을 사용하십시오. 역할에 부여할 수 있는 권한에 대한 자세한 내용은 액세스 제어 권한 을 참조하십시오.
다음 섹션에서는 별도의 데이터베이스와 스키마에 저장되고 사용자 지정 역할이 관리하는 시크릿 오브젝트를 생성하는 방법을 설명합니다.
시크릿 오브젝트의 스키마 만들기¶
먼저 CREATE DATABASE 및 CREATE SCHEMA 명령을 실행하여 시크릿 오브젝트를 저장할 데이터베이스와 스키마를 만듭니다. 스키마 및 데이터베이스의 이름은 유효한 오브젝트 식별자 여야 합니다.
예를 들어 시크릿 오브젝트에 대해 secretsdb
데이터베이스와 apiauth
스키마를 만들려면 다음 명령을 실행하십시오.
USE ROLE accountadmin; CREATE DATABASE secretsdb; CREATE SCHEMA apiauth;
시크릿을 관리할 사용자 지정 역할 만들기(선택 사항)¶
다음으로, 시크릿을 관리할 사용자 지정 역할을 만들고(기존 역할을 사용하지 않는다고 가정함) 시크릿을 만드는 데 필요한 권한을 역할에 부여합니다.
USERADMIN 시스템 역할을 사용하여 CREATE ROLE 명령을 실행하여 시크릿을 관리할 사용자 지정 역할을 만듭니다. 예를 들어 시크릿을 관리하는 사용자 지정 역할
secretadmin
을 생성하려면 다음 명령을 실행하십시오.USE ROLE useradmin; CREATE ROLE secretadmin;
SECURITYADMIN 시스템 역할을 사용하여 GRANT <권한> TO ROLE 명령을 실행하여 사용자 지정 역할에 다음 권한을 부여합니다.
시크릿용으로 생성한 데이터베이스 에 대한 USAGE 권한
시크릿용으로 생성한 스키마 에 대한 USAGE 및 CREATE SECRET 권한
이전에 생성한 보안 통합 에 대한 USAGE 권한
예:
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;
USERADMIN 시스템 역할을 사용하여 GRANT <권한> TO ROLE 명령을 실행하여 시크릿을 생성하는 사용자에게 사용자 지정 역할을 부여합니다. 예를 들어 사용자
servicenow_secret_owner
에게 역할을 부여하려면 다음 명령을 실행하십시오.USE ROLE useradmin; GRANT ROLE secretadmin TO user servicenow_secret_owner;
시크릿 만들기¶
다음으로, Snowflake가 코드 권한 부여 흐름과 함께 OAuth를 사용하여 ServiceNow® 인스턴스에 인증할 수 있도록 하는 시크릿을 만듭니다.
참고
OAuth 대신 기본 인증을 사용할 계획이라면 아래 참고 항목 을 참조하십시오.
시크릿 오브젝트를 생성하려면 다음 매개 변수와 함께 CREATE SECRET 명령을 실행하십시오.
TYPE
을OAUTH2
로 설정합니다.
OAUTH_REFRESH_TOKEN
을 OAuth 새로 고침 토큰 생성하기 에서 검색한 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;
기존 시크릿의 속성을 수정하려면(예: OAuth 새로 고침 토큰 업데이트) ALTER SECRET 명령을 사용하십시오.
참고
(OAuth가 아니라) 기본 인증을 사용할 계획이라면 CREATE SECRET 명령을 실행하여
TYPE
이PASSWORD
로 설정된 시크릿을 생성하십시오.USERNAME
및PASSWORD
를 ServiceNow® 인스턴스에 인증하는 데 사용할 ServiceNow® 사용자의 사용자 이름과 비밀번호로 설정합니다. 예:USE ROLE secretadmin; USE SCHEMA secretsdb.apiauth; CREATE SECRET servicenow_creds_pw TYPE = PASSWORD USERNAME = 'jsmith1' PASSWORD = 'W3dr@fg*7B1c4j';
이 사용자에 대해 다단계 인증이 활성화된 경우 ServiceNow® 설명서의 REST API 에 설명된 대로 비밀번호와 함께 MFA 토큰을 제공해야 합니다.
웨어하우스 만들기¶
커넥터 전용 웨어하우스를 생성하는 것이 좋습니다. 전용 웨어하우스를 사용하면 비용 관리 및 리소스 추적을 개선할 수 있습니다. 리소스 추적을 용이하게 하려면 선택적으로 전용 웨어하우스에 하나 이상의 태그를 추가 할 수 있습니다.
커넥터 웨어하우스의 경우 대규모 웨어하우스를 사용하는 것이 좋습니다.
servicenow_conn_warehouse
라는 대규모 웨어하우스를 생성하려면 다음 명령을 실행하십시오.
USE ROLE accountadmin;
CREATE WAREHOUSE servicenow_conn_warehouse WAREHOUSE_SIZE = LARGE;
주의
웨어하우스가 최소 3시간 동안 쿼리를 실행할 수 있는지 확인합니다. 커넥터가 사용하는 웨어하우스와 계정 모두에서 설정할 수 있는 매개 변수 값의 영향을 받습니다(계정 값이 우선함). 현재 값을 확인하려면 다음을 실행합니다.
SHOW PARAMETERS LIKE 'STATEMENT_TIMEOUT_IN_SECONDS' FOR ACCOUNT;
SHOW PARAMETERS LIKE 'STATEMENT_TIMEOUT_IN_SECONDS' FOR WAREHOUSE <connector_warehouse>;
두 값이 모두 10800
(즉, 3시간) 이상인 경우 변경할 필요가 없습니다. 그렇지 않으면 필요에 따라 실행합니다.
ALTER ACCOUNT SET STATEMENT_TIMEOUT_IN_SECONDS = 10800;
ALTER WAREHOUSE <connector_warehouse> SET STATEMENT_TIMEOUT_IN_SECONDS = 10800;
적절한 시간 제한이 제공되지 않으면 데이터 수집에 실패하게 됩니다.
ServiceNow® 데이터에 대한 데이터베이스 및 스키마 만들기¶
다음으로, ServiceNow® 데이터에 대한 데이터베이스와 스키마를 만듭니다. Snowflake Connector for ServiceNow®V2 는 ServiceNow® 데이터를 이 데이터베이스와 스키마로 수집합니다.
데이터베이스와 스키마를 만들 때 다음 사항에 유의하십시오.
스키마 및 데이터베이스의 이름은 유효한 오브젝트 식별자 여야 합니다.
데이터에 액세스하도록 허용되어야 하는 역할에 스키마에 대한 권한을 부여하면 Snowflake에서 수집된 ServiceNow® 데이터에 대한 액세스를 제어할 수 있습니다.
데이터베이스와 스키마를 생성하려면 CREATE DATABASE 및 CREATE SCHEMA 명령을 실행하십시오.
예를 들어 ServiceNow® 데이터에 대해 dest_db
데이터베이스와 dest_schema
스키마를 만들려면 다음 명령을 실행합니다.
USE ROLE accountadmin;
CREATE DATABASE dest_db;
CREATE SCHEMA dest_schema;
참고
커넥터를 다시 설치하는 경우 커넥터의 이전 설치를 위해 만든 스키마를 다시 사용할 수 있습니다. 커넥터의 이전 설치에서 이미 데이터를 로드했고 동일한 테이블에 데이터를 계속 로드하려는 경우에 가능한 일입니다.
데이터 로드를 계속하려면 커넥터를 다시 설치 하기 전에 스키마를 수정하지 마십시오. 커넥터의 이전 설치에서 생성된 테이블의 정의를 변경하지 마십시오.
커넥터는 주기적으로 커넥터 구성 및 상태를 스키마의 __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');
여기서
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;
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;
여기서
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
커넥터에 대한 로깅 구성하기¶
Snowflake Connector for ServiceNow®V2 는 이벤트 테이블을 사용하여 커넥터에 대한 오류 로그를 저장합니다. 이벤트 테이블을 설정하려면 이벤트 테이블 설정하기 가이드를 따르십시오.
중요
로그 공유를 활성화하는 것이 좋습니다. 이를 통해 명확하지 않은 문제를 해결하는 데 매우 귀중한 도움이 됩니다.
설치된 커넥터 설정하기¶
커넥터를 설정하려면:
Snowsight를 사용하여 커넥터 인스턴스용 데이터베이스를 만듭니다. 데이터베이스를 만드는 방법에 대한 자세한 내용은 Snowsight를 사용하여 커넥터 설치 및 구성하기 를 참조하십시오.
SQL 워크시트로 이동합니다.
ACCOUNTADMIN 역할이 있는 사용자로 로그인합니다. 예:
USE ROLE ACCOUNTADMIN;
커넥터의 인스턴스 역할을 하는 데이터베이스 에 필요한 모든 권한을 커넥터에 부여합니다.
계정에 대한 EXECUTE TASK 권한
계정에 대한 EXECUTE MANAGED TASK 권한
커넥터용으로 생성한 웨어하우스에 대한 USAGE 권한.
ServiceNow® 데이터용으로 생성한 데이터베이스 에 대한 USAGE 권한
ServiceNow ® 데이터용으로 생성한 스키마 에 대한 USAGE, CREATE TABLE, CREATE VIEW 권한
ServiceNow®용으로 생성한 외부 액세스 통합 에 대한 USAGE 권한
시크릿용으로 생성한 데이터베이스 에 대한 USAGE 권한
시크릿용으로 생성한 스키마 에 대한 USAGE 권한
자신이 생성한 시크릿 에 대한 READ 권한
예를 들어, 이름이
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;
대상 스키마의 테이블 및 뷰 소유권 이전(선택 사항)
커넥터를 다시 설치하고 이전 대상 스키마를 재사용하는 경우 대상 스키마에 있는 모든 테이블과 뷰의 소유권을 커넥터로 이전해야 합니다. 커넥터에는 스키마의 오브젝트에 대한 권한을 관리하고 수집된 테이블의 스키마가 변경될 때 평면화된 뷰를 다시 생성하기 위한 소유권 권한이 필요합니다.
소유권을 이전하려면
SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION
함수를 호출합니다.USE ROLE accountadmin; CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<connector_app>, true, <destination_database>, <destination_schema>);
SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION
은 Snowflake가 제공하는 시스템 함수으로, 지정된 데이터베이스나 스키마의 테이블과 뷰 소유권을 애플리케이션으로 이전할 수 있습니다. 일반 테이블과 일반 뷰의 소유권만 이전됩니다. 예를 들어, 동적 테이블, 외부 테이블, 구체화된 뷰 등의 소유권은 이전되지 않습니다.이 함수에는 다음과 같은 서명이 있습니다.
SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<to_app>, <should_copy_grants>, <from_database>, <from_schema>)
여기서
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');
필요한 경우, 이전에 데이터를 소유하고 있던 역할에
DATA_READER
애플리케이션 역할을 부여하여 데이터를 사용하는 기존 파이프라인의 중단을 방지합니다.GRANT APPLICATION ROLE <connector_app>.DATA_READER TO ROLE <previous_data_owner_role>;
DATA_READER
애플리케이션 역할은CONFIGURE_CONNECTOR
프로시저가 실행될 때까지 대상 스키마의 테이블 및 뷰에 대한 권한을 갖지 못한다는 점에 유의하십시오.USE DATABASE 명령을 실행하여 커넥터용 데이터베이스를 사용합니다. 예:
USE DATABASE my_connector_servicenow;
CALL 명령을 사용하여 이름이
CONFIGURE_CONNECTOR
인 저장 프로시저를 호출하여 커넥터를 구성합니다.CALL CONFIGURE_CONNECTOR({ 'warehouse': '<warehouse_name>', 'destination_database': '<dest_db>', 'destination_schema': '<dest_schema>' })
여기서
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' });
커넥터가 성공적으로 시작되면 이 저장 프로시저는 다음 응답을 반환합니다.
{ "responseCode": "OK", "message": "Connector successfully configured.", }
참고
커넥터가 시작되면 커넥터의 전달된 웨어하우스, 대상 데이터베이스 및 대상 스키마의 이름을 변경할 수 없습니다. 커넥터는 이러한 오브젝트를 이름으로 참조합니다. 결과적으로, 이러한 오브젝트의 이름을 삭제하거나 변경하려고 시도하면 커넥터의 연결이 끊어져 작동이 중지됩니다.
웨어하우스 이름을 바꾸는 대신, UPDATE_WAREHOUSE 저장 프로시저를 사용하여 커넥터가 사용하는 웨어하우스를 변경하십시오.
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>' })
여기서
servicenow_base_url
커넥터가 사용해야 하는 ServiceNow® 인스턴스의 URL을 지정합니다. URL은 다음 형식이어야 합니다.
https://<servicenow_instance_name>.service-now.com
secret_name
ServiceNow®에 인증하기 위한 자격 증명을 포함하는 시크릿 오브젝트(앞서 생성한 시크릿) 의 정규화된 이름을 지정합니다.
시크릿 오브젝트의 정규화된 이름을 다음 형식으로 지정해야 합니다.
<database_name>.<schema_name>.<secret_name>
데이터베이스, 스키마 및 시크릿의 이름은 유효한 오브젝트 식별자 여야 합니다.
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' });
연결이 성공적으로 구성되면 이 저장 프로시저는 다음 응답을 반환합니다.
{ "responseCode": "OK", "message": "Test request to ServiceNow® succeeded.", }
참고
연결이 구성된 후에는 전달된 시크릿 및 외부 액세스 통합의 이름을 변경할 수 없습니다. 커넥터는 이러한 오브젝트를 이름으로 참조합니다. 결과적으로, 이러한 오브젝트의 이름을 삭제하거나 변경하려고 시도하면 커넥터의 연결이 끊어져 작동이 중지됩니다.
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>' })
여기서
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", }
커넥터 구성을 마무리하는 동안 커넥터는 이전에 내보낸 커넥터 상태가 대상 스키마에 있는지 확인하려고 시도합니다.
__CONNECTOR_STATE_EXPORT
테이블이 존재하고 커넥터에서 액세스할 수 있는 경우 커넥터는 상태를 가져오려고 시도합니다. 가져오기가 성공적으로 완료되면 내보내기 테이블이 삭제됩니다. 가져오기 중 오류가 발생하면 오류를 수정한 후FINALIZE_CONNECTOR_CONFIGURATION
프로시저를 다시 실행할 수 있습니다. 상태를 가져오지 않거나 가져오기 오류를 수정하지 않으려면 커넥터에서 테이블의 소유권을 이전하고 테이블을 삭제합니다.
새로 생성된 데이터베이스는 커넥터의 인스턴스로, 다음을 포함합니다.
커넥터 구성에 사용하는 저장 프로시저. 자세한 내용은 SQL 문을 사용하여 데이터 수집 설정하기 섹션을 참조하십시오.
커넥터에 대해 기록된 메시지와 통계를 포함하는 뷰. 자세한 내용은 커넥터 모니터링 정보 섹션을 참조하십시오.
커넥터 애플리케이션 역할¶
Native Application으로서, Snowflake Connector for ServiceNow®V2 는 애플리케이션 역할 을 정의합니다. 이는 커넥터를 위한 역할 기반 액세스 제어 에서 검토할 수 있습니다.
다음 단계¶
커넥터를 설치 및 구성한 후 ServiceNow® 데이터에 대한 데이터 수집 설정하기 에 설명된 단계를 수행합니다.