CREATE SECURITY INTEGRATION(Snowflake OAuth)

계정에 새 Snowflake OAuth 보안 통합을 만들거나 기존 통합을 바꿉니다. Snowflake OAuth 보안 통합을 통해 클라이언트는 사용자를 인증 페이지로 리디렉션하고 Snowflake에 액세스하기 위한 액세스 토큰과 선택적으로 새로 고침 토큰을 생성하기 위한 OAuth를 지원할 수 있습니다.

다른 유형의 보안 통합(예: External OAuth) 생성에 대한 자세한 내용은 CREATE SECURITY INTEGRATION 섹션을 참조하십시오.

참고 항목:

ALTER SECURITY INTEGRATION(Snowflake OAuth) , DROP INTEGRATION , SHOW INTEGRATIONS

구문

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

CREATE [ OR REPLACE ] SECURITY INTEGRATION [IF NOT EXISTS]
  <name>
  TYPE = OAUTH
  OAUTH_CLIENT = <partner_application>
  OAUTH_REDIRECT_URI = '<uri>'  -- Required when OAUTH_CLIENT=LOOKER
  [ ENABLED = { TRUE | FALSE } ]
  [ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ]
  [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
  [ OAUTH_USE_SECONDARY_ROLES = IMPLICIT | NONE ]
  [ BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ COMMENT = '<string_literal>' ]
Copy

사용자 지정 클라이언트용 Snowflake OAuth

CREATE [ OR REPLACE ] SECURITY INTEGRATION [IF NOT EXISTS]
  <name>
  TYPE = OAUTH
  OAUTH_CLIENT = CUSTOM
  OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' | 'PUBLIC'
  OAUTH_REDIRECT_URI = '<uri>'
  [ ENABLED = { TRUE | FALSE } ]
  [ OAUTH_ALLOW_NON_TLS_REDIRECT_URI = TRUE | FALSE ]
  [ OAUTH_ENFORCE_PKCE = TRUE | FALSE ]
  [ OAUTH_USE_SECONDARY_ROLES = IMPLICIT | NONE ]
  [ PRE_AUTHORIZED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ]
  [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
  [ NETWORK_POLICY = '<network_policy>' ]
  [ OAUTH_CLIENT_RSA_PUBLIC_KEY = <public_key1> ]
  [ OAUTH_CLIENT_RSA_PUBLIC_KEY_2 = <public_key2> ]
  [ COMMENT = '<string_literal>' ]
Copy

필수 매개 변수(모든 OAuth 클라이언트)

name

통합에 대한 식별자(즉, 이름)를 지정하는 문자열로, 계정에서 고유해야 합니다.

또한, 식별자는 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예: "My object")로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.

TYPE = OAUTH

통합 유형 지정:

  • OAUTH: Snowflake와 OAuth를 지원하는 클라이언트 사이에 보안 인터페이스를 만듭니다.

OAUTH_CLIENT = { CUSTOM | partner_application }

클라이언트 유형을 지정합니다.

  • CUSTOM: Snowflake와 사용자 지정 클라이언트 간의 OAuth 인터페이스를 만듭니다.

  • partner_application: Snowflake와 파트너 애플리케이션 간의 OAuth 인터페이스를 만듭니다. 지원되는 값은 다음과 같습니다.

    • TABLEAU_DESKTOP: Tableau Desktop 버전 2019.1 이상.

    • TABLEAU_SERVER: Tableau Online 또는 Tableau Server. Tableau Server가 Snowflake 서비스에 대한 비공개 연결을 사용하여 Snowflake에 연결하는 경우 대신 OAUTH_CLIENT = CUSTOM 을 지정해야 합니다.

    • LOOKER: Looker 비즈니스 인텔리전스 도구.

OAUTH_REDIRECT_URI = 'uri'

클라이언트 URI를 지정합니다. 사용자가 인증된 후에는 웹 브라우저가 이 URI로 리디렉션됩니다.

이 매개 변수는 OAUTH_CLIENT = LOOKER 일 때 필요합니다. 자세한 내용은 Looker 설명서 의 예를 참조하십시오.

추가 필수 매개 변수(사용자 지정 클라이언트)

OAUTH_CLIENT = CUSTOM일 때(즉, 사용자 지정 클라이언트의 통합을 만들 때)만 필요함

OAUTH_CLIENT_TYPE = { 'CONFIDENTIAL' | 'PUBLIC' }

등록 중인 클라이언트의 유형을 지정합니다. Snowflake는 비밀 클라이언트와 공용 클라이언트를 모두 지원합니다. 기밀 클라이언트는 시크릿을 저장할 수 있습니다. 이 클라이언트는 최종 사용자가 액세스할 수 없는 보호 영역에서 실행됩니다. 예를 들어, 클라우드에 배포된 보안 서비스는 비밀 클라이언트일 수 있습니다. 반면에, 데스크톱에서 실행 중이거나 앱 스토어를 통해 배포되는 클라이언트는 공용 클라이언트일 수 있습니다.

OAUTH_REDIRECT_URI = 'uri'

클라이언트 URI를 지정합니다. 사용자가 인증된 후에는 웹 브라우저가 이 URI로 리디렉션됩니다. 선택적인 OAUTH_ALLOW_NON_TLS_REDIRECT_URI 매개 변수를 TRUE 로 설정하지 않은 경우에는 TLS(전송 계층 보안)로 URI를 보호해야 합니다.

인증 엔드포인트 에 대한 요청에 리디렉션 URI와 함께 전송된 쿼리 매개 변수를 포함하지 마십시오. 예를 들어 권한 부여 엔드포인트에 대한 요청의 redirect_uri 쿼리 매개 변수의 값이 https://www.example.com/connect?authType=snowflake 인 경우 OAUTH_REDIRECT_URI 매개 변수가 https://www.example.com/connect 로 설정되어 있는지 확인합니다.

선택적 매개 변수(모든 OAuth 클라이언트)

ENABLED = { TRUE | FALSE }

통합 작업을 시작할지 일시 중단할지 여부를 지정합니다.

  • TRUE 로 지정하면 통합이 활성화됩니다.

  • FALSE 로 지정하면 유지 관리를 위해 통합이 비활성화됩니다. Snowflake와 서드 파티 서비스 간의 통합이 작동하지 않습니다.

기본값 FALSE 입니다. 이 매개 변수를 TRUE 로 설정하지 않고 보안 통합이 생성되는 경우 Snowflake는 이 매개 변수를 FALSE 로 설정합니다.

추가 선택적 매개 변수(파트너 애플리케이션)

OAUTH_CLIENT = <partner_application>일 때(즉, 파트너 애플리케이션의 통합을 만들 때) 유효함

OAUTH_ISSUE_REFRESH_TOKENS = { TRUE | FALSE }

현재 액세스 토큰이 만료되었을 때 클라이언트가 새로 고침 토큰을 액세스 토큰으로 교환하도록 허용할지 여부를 지정하는 부울입니다. FALSE 로 설정하면 OAUTH_REFRESH_TOKEN_VALIDITY 에서 설정된 정수 값과 관계없이 새로 고침 토큰이 발급되지 않습니다. 사용자 동의가 취소되며, 사용자는 다시 승인을 확인해야 합니다.

기본값: TRUE

참고

이 매개 변수가 FALSE 로 설정되고 보안 통합에 ENABLED = TRUE 도 설정된 경우 Snowflake OAuth 흐름이 반복되고 구성할 수 없는 액세스 토큰이 발급되고 액세스 토큰은 600초(10분) 동안 유효합니다. 이 액세스 토큰이 만료된 후에는 사용자가 다시 인증해야 합니다.

이 매개 변수를 FALSEENABLED = FALSE 로 설정하면 아무런 토큰도 발급되지 않고 통합이 비활성화됩니다.

OAUTH_REFRESH_TOKEN_VALIDITY = integer

새로 고침 토큰의 유효 기간(초)을 지정하는 정수입니다. 새로 고침 토큰을 주기적으로 만료시키는 데 사용할 수 있습니다. OAUTH_ISSUE_REFRESH_TOKENS를 TRUE 로 설정해야 합니다.

새로 고침 토큰 만료 시, 애플리케이션에서 사용자를 새로 고침 토큰을 새로 얻기 위한 승인 흐름으로 다시 안내해야 합니다.

지원되는 최소값, 최대값 및 기본값은 다음과 같습니다.

애플리케이션

최소값

최대값

기본값

Tableau Desktop

60 (1분)

36000 (10시간)

36000 (10시간)

Tableau Server 또는 Tableau Online

60 (1분)

7776000 (90일)

7776000 (90일)

사용자 지정 클라이언트

3600 (1시간)

7776000 (90일)

7776000 (90일)

최소값을 낮추거나 최대값을 높여야 할 업무상 필요가 있는 경우 계정 관리자에게 Snowflake 지원 에 요청을 보내도록 요청하십시오.

OAUTH_USE_SECONDARY_ROLES = { IMPLICIT | NONE }
  • IMPLICIT: 사용자 속성에 설정된 기본 보조 역할은 열려 있는 세션에서 기본적으로 활성화됩니다.

  • NONE: 기본 보조 역할은 열려 있는 세션에서 지원되지 않습니다.

기본값: NONE

BLOCKED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )

사용자가 인증 후 명시적으로 사용에 동의할 수 없는 Snowflake 역할이 나열된 쉼표로 구분된 목록입니다(예: 'BLOCKED_ROLES_LIST = ('custom_role1', 'custom_role2')).

기본적으로 Snowflake는 ACCOUNTADMIN, ORGADMIN 및 SECURITYADMIN 역할이 인증하지 못하게 합니다. 이러한 권한 있는 역할이 인증할 수 있도록 하려면 ALTER ACCOUNT 명령을 사용하여 OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST 계정 매개 변수를 FALSE 로 설정하십시오.

COMMENT = 'string_literal'

통합에 대한 설명을 지정합니다.

기본값: 값 없음

추가 선택적 매개 변수(사용자 지정 클라이언트)

OAUTH_CLIENT = CUSTOM일 때(즉, 사용자 지정 클라이언트의 통합을 만들 때) 유효함

OAUTH_ALLOW_NON_TLS_REDIRECT_URI = { TRUE | FALSE }

TRUE 인 경우 OAUTH_REDIRECT_URI 를 TLS로 보호되지 않는 URI로 설정할 수 있도록 허용합니다. 반드시 TLS를 사용해 중간자 OAuth 리디렉션을 피싱 공격에 사용하지 못하도록 하는 것이 좋습니다.

기본값: FALSE

OAUTH_ENFORCE_PKCE = { TRUE | FALSE }

통합에 PKCE(Proof Key for Code Exchange)를 필수 사항으로 해야 할지 여부를 지정하는 부울입니다.

기본적으로, PKCE는 선택 사항이며 code_challengecode_challenge_method 매개 변수가 둘 다 인증 엔드포인트 URL에 포함된 경우에만 적용됩니다. 하지만 Snowflake는 클라이언트의 모든 인증에서 PKCE를 요청하여 OAuth 흐름의 보안을 강화하는 것을 강력히 권장합니다. 자세한 내용은 사용자 지정 클라이언트용 Snowflake OAuth 구성하기 섹션을 참조하십시오.

기본값: FALSE

OAUTH_USE_SECONDARY_ROLES = { IMPLICIT | NONE }
  • IMPLICIT: 사용자 속성에 설정된 기본 보조 역할은 열려 있는 세션에서 기본적으로 활성화됩니다.

  • NONE: 기본 보조 역할은 열려 있는 세션에서 지원되지 않습니다.

기본값: NONE

PRE_AUTHORIZED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )

사용자가 인증 후 명시적으로 사용에 동의할 필요가 없는 Snowflake 역할이 나열된 쉼표로 구분된 목록입니다(예: PRE_AUTHORIZED_ROLES_LIST = ('custom_role1', 'custom_role2')). ACCOUNTADMIN, ORGADMIN 및 SECURITYADMIN 역할을 이 목록에 포함할 수 없습니다.

참고

이 매개 변수는 비밀 클라이언트에만 지원됩니다.

BLOCKED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )

사용자가 인증 후 명시적으로 사용에 동의할 수 없는 Snowflake 역할이 나열된 쉼표로 구분된 목록입니다(예: BLOCKED_ROLES_LIST = ('custom_role1', 'custom_role2')).

ACCOUNTADMIN, ORGADMIN 및 SECURITYADMIN 역할은 기본적으로 이 목록에 포함되지만, 계정에 대해 이러한 역할을 제거해야 하는 경우 계정 관리자에게 Snowflake 지원 에 요청을 보내도록 요청하십시오.

OAUTH_ISSUE_REFRESH_TOKENS = { TRUE | FALSE }

현재 액세스 토큰이 만료되었을 때 클라이언트가 새로 고침 토큰을 액세스 토큰으로 교환하도록 허용할지 여부를 지정하는 부울입니다. FALSE 로 설정하면 새로 고침 토큰이 발급되지 않습니다. 사용자 동의가 취소되며, 사용자는 다시 승인을 확인해야 합니다.

기본값: TRUE

OAUTH_REFRESH_TOKEN_VALIDITY = integer

새로 고침 토큰의 유효 기간(초)을 지정하는 정수입니다. 새로 고침 토큰을 주기적으로 만료시키는 데 사용할 수 있습니다. OAUTH_ISSUE_REFRESH_TOKENS를 TRUE 로 설정해야 합니다.

조직에서 최소값 또는 최대값을 각각 낮추거나 높이려는 경우 계정 관리자에게 Snowflake 지원 에 요청을 보내도록 요청하십시오.

86400 (1일) ~ 7776000 (90일)

기본값

7776000

NETWORK_POLICY = 'network_policy'

자신의 계정에 대해 기존의 네트워크 정책 을 활성으로 지정합니다. 네트워크 정책은 액세스 또는 새로 고침 토큰에 대한 인증 코드를 교환할 때와 새로 고침 토큰을 사용하여 새 액세스 토큰을 받을 때 사용자 IP 주소의 목록을 제한합니다. 이 매개 변수를 설정하지 않으면 계정에 대한 네트워크 정책(있는 경우)이 대신 사용됩니다.

OAUTH_CLIENT_RSA_PUBLIC_KEY = public_key1

RSA 공개 키를 지정합니다.

OAUTH_CLIENT_RSA_PUBLIC_KEY_2 = public_key2

보조 RSA 공개 키를 지정합니다. 키 순환에 사용됩니다.

COMMENT = 'string_literal'

통합에 대한 설명을 지정합니다.

기본값: 값 없음

액세스 제어 요구 사항

이 SQL 명령을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.

권한

오브젝트

참고

CREATE INTEGRATION

계정

Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed.

지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.

보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.

사용법 노트

  • 메타데이터 관련:

    주의

    고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.

  • CREATE OR REPLACE <오브젝트> 문은 원자성입니다. 즉, 오브젝트가 바뀔 때 단일 트랜잭션으로 이전 오브젝트가 삭제되고 새 오브젝트가 생성됩니다.

Tableau Desktop의 예

기본 설정을 사용하여 OAuth 통합을 만드는 예는 다음과 같습니다.

CREATE SECURITY INTEGRATION td_oauth_int1
  TYPE = oauth
  ENABLED = true
  OAUTH_CLIENT = tableau_desktop;
Copy

DESCRIBE INTEGRATION 을 사용하여 통합 설정 보기:

DESC SECURITY INTEGRATION td_oauth_int1;
Copy

다음은 10시간(36,000초) 후에 만료되는 새로 고침 토큰으로 OAuth 통합을 만드는 예입니다. 통합은 사용자가 SYSADMIN을 활성 역할로 세션을 시작하지 못하도록 차단합니다.

CREATE SECURITY INTEGRATION td_oauth_int2
  TYPE = oauth
  ENABLED = true
  OAUTH_CLIENT = tableau_desktop
  OAUTH_REFRESH_TOKEN_VALIDITY = 36000
  BLOCKED_ROLES_LIST = ('SYSADMIN');
Copy

Tableau Online 또는 Tableau Server의 예

기본 설정을 사용하여 OAuth 통합을 만드는 예는 다음과 같습니다.

CREATE SECURITY INTEGRATION ts_oauth_int1
  TYPE = oauth
  ENABLED = true
  OAUTH_CLIENT = tableau_server;
Copy

DESCRIBE INTEGRATION 을 사용하여 통합 설정 보기:

DESC SECURITY INTEGRATION ts_oauth_int1;
Copy

다음은 1일(86,400초) 후에 만료되는 새로 고침 토큰으로 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');
Copy

사용자 지정 클라이언트의 예

다음은 키 페어 인증을 사용하는 OAuth 통합을 만드는 예입니다. 통합에서는 1일(86,400초) 후에 만료되는 새로 고침 토큰을 허용합니다. 통합은 사용자가 SYSADMIN을 활성 역할로 세션을 시작하지 못하도록 차단합니다.

CREATE SECURITY INTEGRATION oauth_kp_int
  TYPE = oauth
  ENABLED = true
  OAUTH_CLIENT = custom
  OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
  OAUTH_REDIRECT_URI = 'https://localhost.com'
  OAUTH_ISSUE_REFRESH_TOKENS = TRUE
  OAUTH_REFRESH_TOKEN_VALIDITY = 86400
  PRE_AUTHORIZED_ROLES_LIST = ('MYROLE')
  BLOCKED_ROLES_LIST = ('SYSADMIN');
Copy