Set up Snowflake for Workday Live Data Query

Set up Snowflake for Workday Live Data Query (Snowflake for Workday Live Data Query 설정)

이 주제는 Workday LDQ(라이브 데이터 쿼리) 서비스에 연결하는 데 필요한 Snowflake 객체를 만드는 방법을 설명해요: 전용 역할과 사용자, 데이터베이스와 스키마, Python 커넥터를 보관할 스테이지, Workday에 아웃바운드 트래픽을 허용하는 네트워크 규칙, 개인 키를 저장하는 시크릿, 그리고 이들을 묶는 외부 접근 통합.

출처: Snowflake Documentation

본문

Preview 기능 — 열림

모든 계정에서 사용할 수 있어요.

Note

Snowflake용 Workday Live Data Query는 Workday에서는 Early Adopter(EA)이고 Snowflake에서는 Preview 상태예요. 접근을 요청하려면 Workday 계정 담당자에게 연락해요.

Snowflake Notebook을 만들기 전에 이 단계들을 완료해요. 전체 설정 체크리스트는 Snowflake용 Workday Live Data Query 소개를 참고해요.

Step 1: Python 커넥터 다운로드

Workday LDQ 커넥터는 .whl(wheel) 파일로 제공돼요. Snowflake 설정을 시작하기 전에 Workday Community 포털에서 다운로드해, 이후 단계에서 업로드할 수 있게 해요.

  1. Workday 자격 증명으로 Workday Community에 로그인해요.
  2. 최신 .whl 파일(예: ldq_python_client-1.0.3-py3-none-any.whl)을 로컬 컴퓨터로 다운로드해요. 다운로드는 Datacloud-LiveDataQueryPython.zip이라는 zip 파일로 패키징될 수 있어요.
  3. zip 파일을 다운로드했다면 압축을 풀어 .whl 파일을 얻어요.

Note

다운로드에 접근하려면 유효한 Workday 고객 또는 파트너 계정이 있어야 해요. 파일을 찾을 수 없다면 Workday 계정 담당자에게 연락해요.

Step 2: 역할과 사용자 생성

ACCOUNTADMIN을 사용하는 대신 LDQ 전용 역할과 사용자를 만들어요. 이 역할은 LDQ 객체를 만들고 관리하는 데 필요한 최소 권한만 가지게 돼요.

Note

이 단계는 ACCOUNTADMIN(또는 SECURITYADMIN + SYSADMIN)이 필요해요. 이후의 모든 단계는 새 WORKDAY_LDQ_TEST_ROLE 역할을 사용해요.

SQL 또는 Snowsight로 이 단계를 완료할 수 있어요.

SQL 사용

Snowsight에서 Projects > Worksheets로 이동해 + Worksheet를 클릭하고 역할을 ACCOUNTADMIN으로 설정한 뒤 실행해요:

-- Create the role
CREATE ROLE IF NOT EXISTS WORKDAY_LDQ_TEST_ROLE;

-- Create a dedicated user and assign the role
CREATE USER IF NOT EXISTS WORKDAY_LDQ_TEST_USER
  DEFAULT_ROLE = WORKDAY_LDQ_TEST_ROLE
  MUST_CHANGE_PASSWORD = TRUE
  PASSWORD = '<strong_password>';

GRANT ROLE WORKDAY_LDQ_TEST_ROLE TO USER WORKDAY_LDQ_TEST_USER;

-- Grant account-level privileges needed for setup
GRANT CREATE DATABASE  ON ACCOUNT TO ROLE WORKDAY_LDQ_TEST_ROLE;
GRANT CREATE INTEGRATION ON ACCOUNT TO ROLE WORKDAY_LDQ_TEST_ROLE;
GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE WORKDAY_LDQ_TEST_ROLE;

Note

COMPUTE_WH를 사용할 웨어하우스 이름으로 바꿔요. 다음 단계에서 데이터베이스와 스키마가 생성된 후 WORKDAY_LDQ_TEST_ROLE이 자동으로 그 객체들을 소유하고 전체 권한을 가져요.

Snowsight 사용

  1. Admin > Users & Roles > Roles로 이동해요.
  2. + Role을 클릭하고 WORKDAY_LDQ_TEST_ROLE을 입력한 뒤 Create Role을 클릭해요.
  3. Admin > Users & Roles > Users로 이동해요.
  4. + User를 클릭하고 WORKDAY_LDQ_TEST_USER를 입력한 뒤 기본 역할을 WORKDAY_LDQ_TEST_ROLE로 설정하고 Create User를 클릭해요.
  5. 위 SQL에 표시된 대로 역할을 사용자에게 부여하고 계정 수준 권한을 부여해요.

Important

나머지 모든 단계에서 WORKDAY_LDQ_TEST_ROLE로 전환해요. 더 이상 ACCOUNTADMIN이 필요 없어요.

Step 3: 데이터베이스와 스키마 생성

LDQ 스테이지, 네트워크 규칙, 시크릿, 통합을 보관할 전용 데이터베이스와 스키마를 만들어요.

SQL 사용

Snowflake 워크시트를 열고 역할을 WORKDAY_LDQ_TEST_ROLE로 설정한 뒤 실행해요:

CREATE DATABASE IF NOT EXISTS WORKDAY_LDQ_TEST;
CREATE SCHEMA  IF NOT EXISTS WORKDAY_LDQ_TEST.LIVEDATA;

Snowsight 사용

  1. Catalog > Explorer로 이동해요.
  2. + Database를 클릭하고 WORKDAY_LDQ_TEST를 입력한 뒤 Create를 클릭해요.
  3. 새 데이터베이스를 열고 + Schema를 클릭한 뒤 LIVEDATA를 입력하고 Create를 클릭해요.

Step 4: Python 커넥터용 스테이지 생성

wheel 파일을 저장해 notebook 안에 설치할 수 있도록 Snowflake 내부 스테이지를 만들어요. 먼저 스테이지를 만들고, 그다음 Step 1에서 다운로드한 파일을 업로드해요.

스테이지 생성

  1. Snowsight에서 Catalog > Explorer로 이동해요.
  2. WORKDAY_LDQ_TEST를 검색해 클릭해요.
  3. Schemas, 그다음 LIVEDATA, 그다음 Stages를 클릭해요.
  4. + Stage > Snowflake Managed를 클릭해요.
  5. 이름으로 LDQ_STAGE를 입력하고 Directory table을 활성화한 뒤 Create를 클릭해요.

wheel 파일 업로드

  1. LDQ_STAGE 스테이지를 열어요.
  2. Files 탭, 그다음 + Files를 클릭해요.
  3. 로컬 컴퓨터에서 .whl 파일을 선택해요.
  4. Upload를 클릭해요.

Step 5: 네트워크 규칙 생성

기본적으로 Snowflake Notebook은 아웃바운드 네트워크 호출을 할 수 없어요. 네트워크 규칙은 허용되는 외부 호스트를 정의해요. Workday 호스트에(OAuth2와 라이브 데이터 서비스용) HTTPS 트래픽을 허용하고 PyPI로도(pip install이 커넥터 종속성을 다운로드할 수 있도록) 허용하는 규칙을 만들어요.

SQL 사용

같은 워크시트에서(WORKDAY_LDQ_TEST_ROLE로) 실행해요:

CREATE OR REPLACE NETWORK RULE WORKDAY_LDQ_TEST.LIVEDATA.WORKDAY_LDQ_TEST_RULE
  MODE       = EGRESS
  TYPE       = HOST_PORT
  VALUE_LIST = (
    'impl-services1.wd12.myworkday.com:443',
    'pypi.org:443',
    'files.pythonhosted.org:443'
  );

Snowsight 사용

  1. Admin > Security > Network Rules로 이동해요.
  2. + Network Rule을 클릭하고 다음 필드를 채워요.
    • Name: WORKDAY_LDQ_TEST_RULE
    • Database / Schema: WORKDAY_LDQ_TEST / LIVEDATA
    • Type: Host & Port
    • Mode: Egress
    • Hosts: impl-services1.wd12.myworkday.com:443, pypi.org:443, files.pythonhosted.org:443
  3. Create Network Rule을 클릭해요.

Note

impl-services1.wd12.myworkday.com을 토큰 엔드포인트 URL의 호스트로 바꿔요. 같은 호스트가 데이터 서비스와 토큰 엔드포인트 둘 다를 제공해요. pypi.org와 files.pythonhosted.org 항목은 notebook 런타임에서 pip install이 커넥터 종속성을 다운로드할 수 있도록 필요해요.

Step 6: 개인 키를 Snowflake 시크릿으로 저장

RSA 개인 키를 Snowflake 시크릿으로 저장해 notebook이나 구성 파일에 하드코딩되지 않도록 해요. 시크릿은 저장 시 암호화되며, 7단계의 외부 접근 통합을 통해 접근이 부여된 notebook만 접근할 수 있어요.

SQL 사용

같은 워크시트에서 실행해요:

CREATE SECRET WORKDAY_LDQ_TEST.LIVEDATA.WORKDAY_PRIVATE_KEY
  TYPE          = GENERIC_STRING
  SECRET_STRING = '[REDACTED PRIVATE KEY]';

Caution

PEM 내용을 SQL 워크시트에 직접 붙여넣어요. 파일로 저장하거나 평문으로 공유하지 마세요. 생성 후 시크릿 값은 SQL로 검색할 수 없어요.

Snowsight 사용

  1. Admin > Security > Secrets로 이동해요.
  2. + Secret을 클릭하고 다음 필드를 채워요.
    • Name: WORKDAY_PRIVATE_KEY
    • Database / Schema: WORKDAY_LDQ_TEST / LIVEDATA
    • Type: Generic String
    • Secret value: private-key.pem의 전체 내용을 -----BEGIN-----과 -----END----- 줄을 포함해 붙여넣어요.
  3. Create Secret을 클릭해요.

Caution

시크릿 값은 저장 시 암호화되며, 생성 후 UI나 SQL로 검색할 수 없어요.

Step 7: 외부 접근 통합 생성

외부 접근 통합(EAI)은 네트워크 규칙과 개인 키 시크릿을 참조하며, notebook이 둘 다 사용할 수 있게 하는 Snowflake 수준 권한 부여 역할을 해요. Workday에 대한 아웃바운드 호출이 성공하기 전에 EAI를 notebook에 연결해야 해요.

Note

외부 접근 통합을 만들려면 계정에 대한 CREATE INTEGRATION 권한이 필요하며, 이 권한은 2단계에서 WORKDAY_LDQ_TEST_ROLE에 부여됐어요.

SQL 사용

같은 워크시트에서 실행해요:

CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION WORKDAY_LDQ_TEST_EAI
  ALLOWED_NETWORK_RULES        = (WORKDAY_LDQ_TEST.LIVEDATA.WORKDAY_LDQ_TEST_RULE)
  ALLOWED_AUTHENTICATION_SECRETS = (WORKDAY_LDQ_TEST.LIVEDATA.WORKDAY_PRIVATE_KEY)
  ENABLED                      = TRUE;

Snowsight 사용

  1. Admin > Security > External Access Integrations로 이동해요.
  2. + External Access Integration을 클릭하고 다음 필드를 채워요.
    • Name: WORKDAY_LDQ_TEST_EAI
    • Allowed Network Rules: WORKDAY_LDQ_TEST.LIVEDATA.WORKDAY_LDQ_TEST_RULE 선택
    • Allowed Authentication Secrets: WORKDAY_LDQ_TEST.LIVEDATA.WORKDAY_PRIVATE_KEY 선택
    • Enabled: 토글 켬
  3. Create External Access Integration을 클릭해요.

다음 단계

Snowflake 설정이 완료되면 Workday 연결 및 Snowflake에서 데이터 쿼리로 계속해 notebook을 만들고, 커넥터를 설치하고, 첫 쿼리를 실행해요.

더 알아보기 (Learn more)