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에 아웃바운드 트래픽을 허용하는 네트워크 규칙, 개인 키를 저장하는 시크릿, 그리고 이들을 묶는 외부 접근 통합.
본문
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 포털에서 다운로드해, 이후 단계에서 업로드할 수 있게 해요.
- Workday 자격 증명으로 Workday Community에 로그인해요.
- 최신
.whl파일(예:ldq_python_client-1.0.3-py3-none-any.whl)을 로컬 컴퓨터로 다운로드해요. 다운로드는Datacloud-LiveDataQueryPython.zip이라는 zip 파일로 패키징될 수 있어요. - 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 사용
- Admin > Users & Roles > Roles로 이동해요.
- + Role을 클릭하고
WORKDAY_LDQ_TEST_ROLE을 입력한 뒤 Create Role을 클릭해요. - Admin > Users & Roles > Users로 이동해요.
- + User를 클릭하고
WORKDAY_LDQ_TEST_USER를 입력한 뒤 기본 역할을WORKDAY_LDQ_TEST_ROLE로 설정하고 Create User를 클릭해요. - 위 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 사용
- Catalog > Explorer로 이동해요.
- + Database를 클릭하고
WORKDAY_LDQ_TEST를 입력한 뒤 Create를 클릭해요. - 새 데이터베이스를 열고 + Schema를 클릭한 뒤
LIVEDATA를 입력하고 Create를 클릭해요.
Step 4: Python 커넥터용 스테이지 생성
wheel 파일을 저장해 notebook 안에 설치할 수 있도록 Snowflake 내부 스테이지를 만들어요. 먼저 스테이지를 만들고, 그다음 Step 1에서 다운로드한 파일을 업로드해요.
스테이지 생성
- Snowsight에서 Catalog > Explorer로 이동해요.
WORKDAY_LDQ_TEST를 검색해 클릭해요.- Schemas, 그다음 LIVEDATA, 그다음 Stages를 클릭해요.
- + Stage > Snowflake Managed를 클릭해요.
- 이름으로
LDQ_STAGE를 입력하고 Directory table을 활성화한 뒤 Create를 클릭해요.
wheel 파일 업로드
LDQ_STAGE스테이지를 열어요.- Files 탭, 그다음 + Files를 클릭해요.
- 로컬 컴퓨터에서
.whl파일을 선택해요. - 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 사용
- Admin > Security > Network Rules로 이동해요.
- + 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
- Name:
- 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 사용
- Admin > Security > Secrets로 이동해요.
- + Secret을 클릭하고 다음 필드를 채워요.
- Name:
WORKDAY_PRIVATE_KEY - Database / Schema:
WORKDAY_LDQ_TEST/LIVEDATA - Type: Generic String
- Secret value:
private-key.pem의 전체 내용을-----BEGIN-----과-----END-----줄을 포함해 붙여넣어요.
- Name:
- 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 사용
- Admin > Security > External Access Integrations로 이동해요.
- + 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: 토글 켬
- Name:
- Create External Access Integration을 클릭해요.
다음 단계
Snowflake 설정이 완료되면 Workday 연결 및 Snowflake에서 데이터 쿼리로 계속해 notebook을 만들고, 커넥터를 설치하고, 첫 쿼리를 실행해요.
더 알아보기 (Learn more)
- About Workday Live Data Query for Snowflake — LDQ 소개
- Connect to Workday and query data from Snowflake — 연결·쿼리
- Use Cortex Code with Workday data — Cortex Code 사용