파트너 애플리케이션용 Snowflake OAuth 구성

파트너 애플리케이션용 Snowflake OAuth 구성

이 주제는 지원되는 Snowflake 파트너 애플리케이션이 Snowflake에 대해 Snowflake OAuth로 접근하도록 구성하는 방법을 설명해요. 이 과정에는 Snowflake와 서드파티 애플리케이션(또는 서비스) 사이의 인터페이스를 정의하는 일급(first-class) Snowflake 객체인 통합(integration)을 만드는 작업이 필요해요.

출처: Configure Snowflake OAuth for partner applications

본문

중요 참고 사항

서드파티 애플리케이션으로 Snowflake에 연결할 때, Snowflake는 애플리케이션이 사용하는 통합 흐름이 조직의 내부 보안 요구 사항을 충족하는지 확인할 것을 권장해요. 이 기능에 사용하는 엔드투엔드 흐름에 대한 자세한 내용은 파트너에게 직접 문의하세요.

Snowflake OAuth에서는 세션 내 2차 역할(secondary role)로의 전환이 지원되지 않아요. 워크플로에서 이 동작이 필요하다면 External OAuth를 대신 사용하세요. 자세한 내용은 External OAuth에서 2차 역할 사용하기를 참조하세요.

현재 Snowflake OAuth는 다음 애플리케이션을 지원해요:

클라이언트 필수 클라이언트 버전 클라이언트 유형
Tableau Desktop / Cloud 2019.1 이상 공개(Public)
Looker 6.20 이상
Alation Alation 문서 참조
ThoughtSpot ThoughtSpot 문서 참조
Collibra Collibra 문서 참조
  • Tableau Cloud(버전 2024.2 이상)가 프라이빗 연결로 Snowflake 서비스에 연결하는 경우, 파트너 애플리케이션용으로 설계된 통합 대신 커스텀 보안 통합을 사용해야 해요. 커스텀 통합의 리다이렉트 URL은 https://<your_server_url>/auth/add_oauth_token 형식이어야 해요. 자세한 내용은 커스텀 클라이언트용 Snowflake OAuth 구성을 참조하세요. Tableau Desktop, Tableau Online, Tableau Server(버전 2024.2 이하)는 프라이빗 URL 사용 여부와 관계없이 계속 파트너 애플리케이션 통합을 사용해요.
  • Looker는 Looker 호스팅 인스턴스가 공개 인터넷에 접근할 수 있을 때만 OAuth를 지원해요. 이 제한은 고객이 호스팅하는 Looker 구현(예: 온프레미스 구현)에는 영향을 주지 않아요. Snowflake 서비스에 프라이빗 연결을 사용하는 고객은 Looker와 함께 OAuth를 사용할 때 문제가 발생할 수 있어요. 관련 질문이나 자세한 내용은 Looker에 문의하세요.

Snowflake OAuth 통합 구성

CREATE SECURITY INTEGRATION 명령으로 통합을 만들어요. 통합은 Snowflake OAuth를 지원하는 클라이언트와 같은 서드파티 서비스와 Snowflake 사이에 인터페이스를 제공하는 Snowflake 객체예요.

계정 관리자(즉, ACCOUNTADMIN 시스템 역할 보유자) 또는 전역 CREATE INTEGRATION 권한이 있는 역할만 이 SQL 명령을 실행할 수 있어요.

CREATE [ OR REPLACE ] SECURITY INTEGRATION [ IF NOT EXISTS ]
  <name>
  TYPE = OAUTH
  ENABLED = { TRUE | FALSE }
  OAUTH_CLIENT = <partner_application>
  oauthClientParams
  [ COMMENT = '<string_literal>' ]

여기서:

oauthClientParams ::=
  [ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ]
  [ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
  [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
  [ BLOCKED_ROLES_LIST = ('<role_name>', '<role_name>') ]

통합 사용을 차단할 역할 지정

선택적 BLOCKED_ROLES_LIST 매개변수를 사용하면 사용자가 이 통합과 함께 사용하도록 명시적으로 동의할 수 없는 Snowflake 역할을 나열할 수 있어요.

기본적으로 ACCOUNTADMIN, SECURITYADMIN, GLOBALORGADMIN, ORGADMIN 역할이 이 목록에 포함되며 제거할 수 없어요. 사용자가 이 역할들과 함께 Snowflake OAuth를 사용하도록 허용할 업무상 필요가 있고 보안 팀이 허용한다면, Snowflake 지원에 연락해 계정에서 이 역할들을 허용해 달라고 요청하세요.

로그인 빈도 제어

사용자가 성공적으로 인증되면 파트너 애플리케이션은 발급된 리프레시 토큰을 사용해 새롭고 수명이 짧은 액세스 토큰을 요청할 수 있으며, 리프레시 토큰이 만료될 때까지 사용자에게 로그인 과정을 반복하라고 요구하지 않아요. 선택적 OAUTH_REFRESH_TOKEN_VALIDITY 매개변수는 리프레시 토큰이 유효한 시간(초)을 지정해요. 이 설정으로 리프레시 토큰을 주기적으로 만료시켜 사용자가 로그인 과정을 반복하도록 강제할 수 있어요.

OAUTH_REFRESH_TOKEN_VALIDITY 매개변수의 지원되는 최솟값, 최댓값, 기본값은 다음과 같아요:

애플리케이션 최솟값 최댓값 기본값
Tableau Desktop 60 (1분) 36000 (10시간) 36000 (10시간)
Tableau Cloud 60 (1분) 7776000 (90일) 7776000 (90일)

최솟값을 낮추거나 최댓값을 높여야 할 업무상 필요가 있다면 Snowflake 지원에 연락해 계정에 대한 변경을 요청하세요.

액세스 토큰 유효 기간 제어

선택적 OAUTH_ACCESS_TOKEN_VALIDITY 매개변수는 액세스 토큰이 유효한 시간(초)을 지정해요. 액세스 토큰은 수명이 짧아요. 기본값은 600초(10분)이며, 60초(1분)에서 3600초(1시간) 사이의 값으로 설정할 수 있어요.

액세스 토큰이 만료되면 파트너 애플리케이션은 리프레시 토큰을 사용해, 리프레시 토큰이 여전히 유효한 한 사용자에게 다시 로그인하도록 요구하지 않고 새 액세스 토큰을 요청할 수 있어요.

파트너 애플리케이션용 Snowflake OAuth에서 Client Redirect 사용

Snowflake는 파트너 애플리케이션용 Snowflake OAuth에서 Client Redirect 사용을 지원하며, 지원되는 Snowflake 클라이언트와 함께 Client Redirect 및 Snowflake OAuth를 사용하는 것도 지원해요.

자세한 내용은 클라이언트 연결 리디렉션을 참조하세요.

네트워크 정책 관리

Snowflake는 Looker에 대해서는 네트워크 정책을 지원하지만 다른 파트너 애플리케이션에는 지원하지 않아요.

자세한 내용은 Snowflake OAuth 네트워크 트래픽 제한을 참조하세요.

예제

Tableau Desktop

다음 예제는 기본 설정으로 Snowflake OAuth 통합을 만들어요:

CREATE SECURITY INTEGRATION td_oauth_int1
  TYPE = OAUTH
  ENABLED = TRUE
  OAUTH_CLIENT = TABLEAU_DESKTOP;

DESCRIBE INTEGRATION으로 통합 설정을 확인해요:

DESC SECURITY INTEGRATION td_oauth_int1;

다음 예제는 리프레시 토큰이 10시간(36000초) 후에 만료되는 Snowflake OAuth 통합을 만들어요. 이 통합은 사용자가 SYSADMIN을 활성 역할로 세션을 시작하는 것을 차단해요:

CREATE SECURITY INTEGRATION td_oauth_int2
  TYPE = OAUTH
  ENABLED = TRUE
  OAUTH_REFRESH_TOKEN_VALIDITY = 36000
  BLOCKED_ROLES_LIST = ('SYSADMIN')
  OAUTH_CLIENT = TABLEAU_DESKTOP;

Tableau Cloud

다음 예제는 기본 설정으로 Snowflake OAuth 통합을 만들어요:

CREATE SECURITY INTEGRATION ts_oauth_int1
  TYPE = OAUTH
  ENABLED = TRUE
  OAUTH_CLIENT = TABLEAU_SERVER;

DESCRIBE INTEGRATION으로 통합 설정을 확인해요:

DESC SECURITY INTEGRATION ts_oauth_int1;

다음 예제는 리프레시 토큰이 1일(86400초) 후에 만료되는 Snowflake OAuth 통합을 만들어요. 이 통합은 사용자가 SYSADMIN을 활성 역할로 세션을 시작하는 것을 차단해요:

CREATE SECURITY INTEGRATION ts_oauth_int2
  TYPE = OAUTH
  ENABLED = TRUE
  OAUTH_CLIENT = TABLEAU_SERVER
  OAUTH_REFRESH_TOKEN_VALIDITY = 86400
  BLOCKED_ROLES_LIST = ('SYSADMIN');

파트너 애플리케이션에서 Snowflake로 로그인

Tableau

Tableau가 제공하는 지침에 따라 Snowflake OAuth로 Snowflake에 연결하세요.

Looker

Looker가 제공하는 단계에 따라 Snowflake OAuth로 Snowflake에 연결하세요.

Alation

Alation 커뮤니티에 접속하고 Alation이 제공하는 지침에 따라 Snowflake OAuth로 Snowflake에 연결하세요.

ThoughtSpot

ThoughtSpot 문서에 접속하고 지침에 따라 Snowflake 연결을 만드세요. 여기에는 Snowflake OAuth를 구성하는 방법에 대한 단계가 포함돼 있어요.

Collibra

Collibra 문서에 접속하고 Collibra가 제공하는 지침에 따라 Snowflake OAuth로 Snowflake에 연결하세요.

사용자 동의 관리

이 섹션은 위임된 인가(delegated authorization), 즉 사용자가 Snowflake 통합과 연결된 하나 이상의 클라이언트에게 부여한 동의를 관리하는 방법을 설명해요.

Snowflake OAuth 동의 표시

SHOW DELEGATED AUTHORIZATIONS로 접근 권한이 있는 활성 위임 인가를 나열해요:

SHOW DELEGATED AUTHORIZATIONS;

+-------------------------------+-----------+-----------+-------------------+--------------------+
| created_on                    | user_name | role_name | integration_name  | integration_status |
|-------------------------------+-----------+-----------+-------------------+--------------------|
| 2018-11-27 07:43:10.914 -0800 | JSMITH    | PUBLIC    | MY_OAUTH_INT      | ENABLED            |
+-------------------------------+-----------+-----------+-------------------+--------------------+

지정한 사용자에 대한 활성 위임 인가를 나열해요. 사용자는 자신의 위임 인가를 나열할 수 있으며, 그 외에는 이 명령 변형에 사용자에 대한 OWNERSHIP 권한이 필요해요:

SHOW DELEGATED AUTHORIZATIONS
    BY USER <username>;

지정한 통합에 대한 활성 위임 인가를 나열해요. 이 명령 변형에는 통합에 대한 OWNERSHIP 권한(즉, ACCOUNTADMIN 역할)이 필요해요:

SHOW DELEGATED AUTHORIZATIONS
    TO SECURITY INTEGRATION <integration_name>;

동의 철회

사용자는 지정한 통합에 대한 동의를 철회할 수 있어요. 이는 통합과 연결된 액세스 토큰을 철회하는 효과가 있어요.

특정 통합에 대한 사용자 동의를 철회하려면 ALTER USER … REMOVE DELEGATED AUTHORIZATIONS 명령을 실행하세요.

보안 관리자(즉, SECURITYADMIN 역할 보유자) 또는 그보다 높은 권한만 이 SQL 명령을 실행할 수 있어요.

ALTER USER <username> REMOVE DELEGATED AUTHORIZATIONS
    FROM SECURITY INTEGRATION <integration_name>

여기서:

  • username — 동의를 철회할 사용자를 지정해요.
  • integration_name — 특정 클라이언트의 액세스 토큰과 연결된 통합을 지정해요.

특정 역할과 연결된 사용자 동의를 철회하려면 명령문에 OF ROLE <role_name> 매개변수를 포함하세요:

ALTER USER <username> REMOVE DELEGATED AUTHORIZATION
    OF ROLE <role_name>
    FROM SECURITY INTEGRATION <integration_name>

여기서 role_name은 액세스 토큰과 연결된 역할을 지정해요. 역할과 연결된 모든 액세스 토큰이 철회돼요.

오류 코드

인가 흐름, 토큰 요청 또는 교환, 또는 OAuth 흐름을 완료한 후 Snowflake 세션을 만들 때 발생하는 OAuth 관련 오류 코드와 JSON blob으로 반환되는 오류 목록은 오류 코드를 참조하세요.

더 알아보기