- 인쇄
- PDF
Snowflake 연결 정보
- 인쇄
- PDF
개요
Snowflake의 연결 정보를 생성하기 위한 도움말 페이지입니다.
참고로 Snowflake를 이용하기 위해서는 필요한 권한이 부여된 롤을 사용자에게 미리 부여해 두어야 한다.
자세한 내용은 아래 권한과 역할을 참고하세요.
입력 항목
품목명 | 필수 | 내용 |
---|---|---|
이름 | 예 | TROCCO 내부에서 사용할 연결 정보 이름을 입력합니다. |
메모 | No | TROCCO 내부에서 사용할 연결 정보 메모를 입력할 수 있습니다. |
호스트 | 예 | Snowflake의 호스트를 입력합니다. 자세한 내용은 호스트 이름 입력 형식을 참고하세요. |
사용자 | 예 | Snowflake의 사용자 이름을 입력합니다. |
인증 방식 | 예 | 인증 방식을 선택합니다. 데이터 마트 정의에 사용할 경우 키쌍 인증을 선택해야 합니다. |
비밀번호 | 예 | 인증방식에서 사용자/비밀번호 인증을 선택한 경우 입력해 주세요. Snowflake의 비밀번호를 입력합니다. |
개인키 | 예 | 인증방식에서 키페어 인증을 선택한 경우 입력합니다. Snowflake의 비밀키를 입력하세요. 자세한 내용은 키페어 인증에 대해 자세히 알아보세요. |
롤 | No | 사용자에게 부여된 역할 이름을 입력합니다. 입력하지 않으면 Snowflake의 기본 설정이 사용됩니다. 기본 설정이 없는 경우 입력해야 합니다. 역할에 대한 자세한 내용은 권한과 역할을 참조하세요. |
JDBC 드라이버 | No | Snowflake 서버에 연결할 JDBC 드라이버 버전을 선택할 수 있습니다.3.14.2 |
JDBC 드라이버가 지정되지 않은 경우 각각 다음과 같은 버전이 사용됩니다.
- Snowflake의 경우 :
3.13.5
- Snowflake의 경우 :
3.13.26
단, JDBC 드라이버 3.13
계열은 2023년 10월 31일부로 Snowflake 지원 대상에서 제외된다.
따라서 3.14
계열의 버전 사용을 권장하고 있습니다.
호스트 이름 입력 형식
다음 중 한 가지 형식으로 입력할 수 있습니다.
<LOCATOR>. <REGION>. <CLOUD>.snowflakecomputing.com
- 입력 예시:hm*****.ap-northeast-1.aws.snowflakecomputing.com
<ORGANIZATION>-<ACCOUNT_NAME>.snowflakecomputing.com
- 입력 예시: *******-km*****.snowflakecomputing.com
- 이 입력 형식은 사용자 비밀번호 인증 선택 시에만 사용할 수 있습니다. 키페어 인증 시에는 사용할 수 없습니다.
위의 각 요소는 Snowflake의 콘솔 화면 왼쪽 하단에서 확인할 수 있습니다.
키페어 인증에 대하여
공개키와 개인키를 생성하고, 공개키를 Snowflake 측에, 개인키를 TROCCO 측에 설정해야 합니다.
공개키 및 개인키 생성
터미널에서 다음 명령어를 순서대로 실행합니다.
- 개인키 생성하기
생성한 개인키를 TROCCO의 Snowflake 연결정보의 개인키란에 입력합니다.
$ openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
- 공개키 생성하기
$ openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
- 공개키 포맷하기(줄바꿈 및 불필요한 부분 제거)
$ cat rsa_key.pub | \
tr -d "\n" | \
sed "s/-----BEGIN PUBLIC KEY-----//g" | \ \
sed"s/-----END PUBLIC KEY-----//g"
Snowflake의 공개키 설정
앞서 생성한 공개키를 바탕으로 Snowflake 측에서 아래 쿼리를 실행합니다.
ALTER USER {USERNAME} SET RSA_PUBLIC_KEY='{PUBLIC_KEY}'
권한과 역할
Snowflake를 이용하기 위해서는 역할에 필요한 권한을 부여하고 사용자에게 역할을 부여해야 합니다.
또한, 전송 설정(전송원, 전송처)과 데이터마트 정의에 따라 역할에 부여해야 하는 권한이 다릅니다.
전송 설정(전송처)을 이용하는 경우
필요한 권한
항목 | 권한 | 내용 |
---|---|---|
가상 창고 권한 | OPERATE | 웨어하우스의 상태(중지, 시작, 일시정지, 재개)를 변경하고 실행 중인 쿼리를 중단할 수 있습니다. |
가상 창고 권한 | 사용방법 | 가상 웨어하우스를 사용하고, 그 결과 웨어하우스에서 쿼리를 실행합니다. |
데이터베이스 권한 | 사용방법 | 데이터베이스를 사용할 수 있도록 합니다. 데이터베이스의 객체를 보거나 작업을 수행하려면 추가 권한이 필요합니다. |
스키마 권한 | 사용방법 | 스키마를 사용할 수 있도록 합니다. |
테이블 권한 | SELECT | 테이블에서 SELECT 문을 실행할 수 있도록 합니다. |
쿼리 샘플
아래 조건을 예로 들어 역할에 권한을 부여하는 쿼리 샘플을 소개합니다.
실제 역할에 권한을 부여할 경우, 해당 내용을 적절히 수정해 주시기 바랍니다.
- 생성할 역할 :
TROCCO_INPUT_ROLE
- 롤을 부여하는 사용자 :
TROCCO_USER
- 대상 창고 :
TROCCO_WAREHOUSE
- 대상 데이터베이스 :
TROCCO_DATABASE
- 대상 스키마 :
PUBLIC
- 대상 테이블 :
TROCCO_TABLE
-- 롤을 생성 가능한 롤로 전환하기
USE ROLE ACCOUNTADMIN; USE ROLE ACCOUNTADMIN;
-- 신규 롤 생성하기
CREATE ROLE TROCCO_INPUT_ROLE; CREATE ROLE TROCCO_INPUT_ROLE;
-- 지정한 사용자에게 롤을 사용할 수 있도록 설정
GRANT ROLE TROCCO_INPUT_ROLE TO USER TROCCO_USER;
-- 사용자에 대해 생성한 롤을 기본적으로 사용할 롤로 설정한다.
ALTER USER TROCCO_USER SET DEFAULT_ROLE = TROCCO_INPUT_ROLE; ALTER USER TROCCO_USER SET DEFAULT_ROLE;
-- 창고 사용 권한을 롤에 부여하는 방법
GRANT USAGE ON WAREHOUSE TROCCO_WAREHOUSE TO ROLE TROCCO_INPUT_ROLE;
GRANT OPERATE ON WAREHOUSE TROCCO_WAREHOUSE TO ROLE TROCCO_INPUT_ROLE;
-- 역할에 데이터베이스 사용 권한 부여하기
GRANT USAGE USAGE ON DATABASE TROCCO_DATABASE TO ROLE TROCCO_INPUT_ROLE;
-- 역할에 스키마 사용 권한 부여하기
SCHEMA TROCCO_DATABASE.PUBLIC TO ROLE TROCCO_INPUT_ROLE; GRANT USAGE ON SCHEMA TROCCO_DATABASE.
-- 스키마의 모든 테이블에 대해 SELECT 쿼리를 실행할 수 있는 권한을 역할에 부여하는 경우
GRANT SELECT ON ALL TABLES IN SCHEMA TROCCO_DATABASE.PUBLIC TO ROLE TROCCO_INPUT_ROLE;
-- 개별 테이블에 대해서만 SELECT 쿼리를 실행할 수 있는 권한을 롤에 부여하는 경우
TABLE TROCCO_DATABASE.PUBLIC.TROCCO_TABLE TO ROLE TROCCO_INPUT_ROLE; GRANT SELECT on TABLE TROCCO_DATABASE.PUBLIC.
전송 설정(전송처)을 이용하는 경우
필요한 권한
항목 | 권한 | 내용 | 비고 |
---|---|---|---|
가상 창고 권한 | OPERATE | 웨어하우스의 상태(중지, 시작, 일시정지, 재개)를 변경하고 실행 중인 쿼리를 중단할 수 있습니다. | |
가상 창고 권한 | 사용방법 | 가상 웨어하우스를 사용하고, 그 결과 웨어하우스에서 쿼리를 실행합니다. | |
데이터베이스 권한 | 사용방법 | 데이터베이스를 사용할 수 있도록 합니다. 데이터베이스의 객체를 보거나 작업을 수행하려면 추가 권한이 필요합니다. | |
스키마 권한 | 사용방법 | 스키마를 사용할 수 있도록 합니다. | |
스키마 권한 | CREATE TABLE | 테이블 복제 등 스키마에서 새로운 테이블을 생성할 수 있도록 합니다. | |
스키마 권한 | CREATE STAGE | 스키마에서 스테이지 복제 등 새로운 스테이지를 생성할 수 있도록 합니다. | |
테이블 권한 | OWNERSHIP | 테이블의 소유권을 양도합니다. 이를 통해 테이블을 완전히 제어할 수 있습니다. | 전송 모드가 replace인 경우, DROP TABLE 쿼리를 수행하기 위해 필요합니다. DROP TABLE 쿼리를 사용하려면 테이블 소유권을 가진 롤을 사용해야 한다. Snowflake 문서 - 사용상의 주의사항 이미 존재하는 테이블에 대해 실행하는 경우에만 필요합니다. |
쿼리 샘플
아래 조건을 예로 들어 역할에 권한을 부여하는 쿼리 샘플을 소개합니다.
실제 역할에 권한을 부여할 경우, 해당 내용을 적절히 수정해 주시기 바랍니다.
- 생성할 역할 :
TROCCO_OUTPUT_ROLE
- 롤을 부여하는 사용자 :
TROCCO_USER
- 대상 창고 :
TROCCO_WAREHOUSE
- 대상 데이터베이스 :
TROCCO_DATABASE
- 대상 스키마 :
PUBLIC
- 대상 테이블 :
TROCCO_TABLE
-- 롤을 생성 가능한 롤로 전환하기
USE ROLE ACCOUNTADMIN; USE ROLE ACCOUNTADMIN;
-- 신규 롤 생성하기
CREATE ROLE TROCCO_OUTPUT_ROLE; CREATE ROLE TROCCO_OUTPUT_ROLE;
-- 지정한 사용자가 롤을 사용할 수 있도록 하기
GRANT ROLE TROCCO_OUTPUT_ROLE TO USER TROCCO_USER;
-- 사용자에 대해 생성한 롤을 기본적으로 사용할 롤로 설정한다.
ALTER USER TROCCO_USER SET DEFAULT_ROLE = TROCCO_OUTPUT_ROLE; ALTER USER TROCCO_USER SET DEFAULT_ROLE;
-- 창고 사용 권한을 롤에 부여하는 방법
GRANT USAGE ON WAREHOUSE TROCCO_WAREHOUSE TO ROLE TROCCO_OUTPUT_ROLE;
GRANT OPERATE ON WAREHOUSE TROCCO_WAREHOUSE TO ROLE TROCCO_OUTPUT_ROLE;
-- 역할에 데이터베이스 사용 권한 부여하기
GRANT USAGE USAGE ON DATABASE TROCCO_DATABASE TO ROLE TROCCO_OUTPUT_ROLE;
-- 역할에 스키마 사용 권한 부여하기
SCHEMA TROCCO_DATABASE.PUBLIC TO ROLE TROCCO_OUTPUT_ROLE; GRANT USAGE ON SCHEMA TROCCO_DATABASE.
-- 역할에 테이블 생성 권한 부여하기
GRANT CREATE TABLE ON SCHEMA TROCCO_DATABASE.PUBLIC TO ROLE TROCCO_OUTPUT_ROLE;
-- 역할에 스테이지 조작 권한 부여하기
SCHEMA TROCCO_DATABASE.PUBLIC에서 ROLE TROCCO_OUTPUT_ROLE에 GRANT CREATE STAGE on SCHEMA TROCCO_DATABASE.PUBLIC;
-- 테이블의 소유권을 롤로 이전하기
-- ※ 이미 존재하는 테이블에 대해 실행하는 경우에 필요합니다.
GRANT OWNERSHIP ON TABLE TROCCO_DATABASE.PUBLIC.TROCCO_TABLE TO ROLE TROCCO_OUTPUT_ROLE;
데이터마트 정의를 이용하는 경우
필요한 권한
항목 | 권한 | 내용 | 비고 |
---|---|---|---|
가상 창고 권한 | OPERATE | 웨어하우스의 상태(중지, 시작, 일시정지, 재개)를 변경하고 실행 중인 쿼리를 중단할 수 있습니다. | |
가상 창고 권한 | 사용방법 | 가상 웨어하우스를 사용하고, 그 결과 웨어하우스에서 쿼리를 실행합니다. | |
데이터베이스 권한 | 사용방법 | 데이터베이스를 사용할 수 있도록 합니다. 데이터베이스의 객체를 보거나 작업을 수행하려면 추가 권한이 필요합니다. | |
스키마 권한 | 사용방법 | 스키마를 사용할 수 있도록 합니다. | |
스키마 권한 | CREATE TABLE | 테이블 복제 등 스키마에서 새로운 테이블을 생성할 수 있도록 합니다. | |
테이블 권한 | SELECT | 테이블에서 SELECT 문을 실행할 수 있도록 합니다. | |
테이블 권한 | INSERT | 테이블에서 INSERT 문을 실행할 수 있도록 합니다. | 쓰기 모드가 추기인 경우, 출력 대상 테이블에 데이터를 등록하기 위해 필요합니다. |
테이블 권한 | OWNERSHIP | 테이블의 소유권을 양도합니다. 이를 통해 테이블을 완전히 제어할 수 있습니다. | 쓰기 모드가 전건 리필인 경우, 출력 대상 테이블을 삭제하기 위해 필요합니다. 이미 존재하는 테이블에 대해 실행하는 경우에만 필요합니다. |
쿼리 샘플
아래 조건을 예로 들어 역할에 권한을 부여하는 쿼리 샘플을 소개합니다.
실제 역할에 권한을 부여할 경우, 해당 내용을 적절히 수정해 주시기 바랍니다.
- 생성할 역할 :
TROCCO_DATAMART_ROLE
- 롤을 부여하는 사용자 :
TROCCO_USER
- 대상 창고 :
TROCCO_WAREHOUSE
- 대상 데이터베이스 :
TROCCO_DATABASE
- 대상 스키마 :
PUBLIC
- 대상 테이블 :
TROCCO_TABLE
-- 롤을 생성 가능한 롤로 전환하기
USE ROLE ACCOUNTADMIN; USE ROLE ACCOUNTADMIN;
-- 신규 롤 생성하기
CREATE ROLE TROCCO_DATAMART_ROLE; CREATE ROLE TROCCO_DATAMART_ROLE;
-- 지정한 사용자가 롤을 사용할 수 있도록 하기
GRANT ROLE TROCCO_DATAMART_ROLE TO USER TROCCO_USER;
-- 사용자에 대해 생성한 롤을 기본적으로 사용할 롤로 설정한다.
ALTER USER TROCCO_USER SET DEFAULT_ROLE = TROCCO_DATAMART_ROLE; ALTER USER TROCCO_USER SET DEFAULT_ROLE;
-- 창고 사용 권한을 롤에 부여하는 방법
WAREHOUSE TROCCO_WAREHOUSE에 대한 사용권 부여 TROCCO_DATAMART_ROLE;
GRANT OPERATE ON WAREHOUSE TROCCO_WAREHOUSE TO ROLE TROCCO_DATAMART_ROLE;
-- 역할에 데이터베이스 사용 권한 부여하기
GRANT USAGE USAGE ON DATABASE TROCCO_DATABASE TO ROLE TROCCO_DATAMART_ROLE;
-- 역할에 스키마 사용 권한 부여하기
SCHEMA TROCCO_DATABASE.PUBLIC TO ROLE TROCCO_DATAMART_ROLE; GRANT USAGE ON SCHEMA TROCCO_DATABASE.
-- 역할에 테이블 생성 권한 부여하기
GRANT CREATE TABLE ON SCHEMA TROCCO_DATABASE.PUBLIC TO ROLE TROCCO_DATAMART_ROLE;
-- 테이블에 INSERT 쿼리를 실행할 수 있는 권한을 역할에 부여한다.
GRANT INSERT ON TABLE TROCCO_DATABASE.PUBLIC.TROCCO_TABLE TO ROLE TROCCO_DATAMART_ROLE;
-- 테이블의 소유권을 롤로 이전하기
-- ※ 이미 존재하는 테이블에 대해 실행하는 경우에 필요합니다.
GRANT OWNERSHIP ON TABLE TROCCO_DATABASE.PUBLIC.TROCCO_TABLE TO ROLE TROCCO_DATAMART_ROLE;