CREATE SECURITY INTEGRATION

CREATE SECURITY INTEGRATION (Snowflake OAuth)

CREATE SECURITY INTEGRATION (Snowflake OAuth) 명령은 계정에 새 Snowflake OAuth 보안 통합을 만들거나 기존 통합을 교체하는 명령이에요. Snowflake OAuth 보안 통합은 OAuth를 지원하는 클라이언트가 사용자를 인증 페이지로 리다이렉트하고 Snowflake 접근을 위한 접근 토큰(선택적으로 갱신 토큰)을 생성할 수 있게 해줍니다.

출처: CREATE SECURITY INTEGRATION (Snowflake OAuth)

본문

계정에 새 Snowflake OAuth 보안 통합을 만들거나 기존 통합을 교체하는 명령입니다. Snowflake OAuth 보안 통합은 OAuth를 지원하는 클라이언트가 사용자를 인증 페이지로 리다이렉트하고 Snowflake 접근을 위한 접근 토큰(선택적으로 갱신 토큰)을 생성할 수 있게 해줘요.

다른 유형의 보안 통합(예: External OAuth) 만들기에 대한 정보는 CREATE SECURITY INTEGRATION 문서를 참고하세요.

관련 명령: ALTER SECURITY INTEGRATION (Snowflake OAuth), DROP INTEGRATION, SHOW INTEGRATIONS

Syntax

파트너 애플리케이션용 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_ACCESS_TOKEN_VALIDITY = <integer> ]
  [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
  [ OAUTH_SINGLE_USE_REFRESH_TOKENS_REQUIRED = { TRUE | FALSE } ]
  [ OAUTH_USE_SECONDARY_ROLES = { IMPLICIT | NONE } ]
  [ NETWORK_POLICY = '<network_policy>' ]
  [ ALLOWED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ USE_PRIVATELINK_FOR_AUTHORIZATION_ENDPOINT = { TRUE | FALSE } ]
  [ COMMENT = '<string_literal>' ]

사용자 정의 클라이언트용 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_ALTERNATE_REDIRECT_URIS = ( '<uri>' [ , '<uri>' , ... ] ) ]
  [ OAUTH_ENFORCE_PKCE = { TRUE | FALSE } ]
  [ OAUTH_ENABLE_ROLE_SELECTION = { TRUE | FALSE } ]
  [ OAUTH_SINGLE_USE_REFRESH_TOKENS_REQUIRED = { TRUE | FALSE } ]
  [ OAUTH_USE_SECONDARY_ROLES = { IMPLICIT | NONE } ]
  [ PRE_AUTHORIZED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ ALLOWED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ OAUTH_ANY_ROLE_MODE = { DISABLE | ENABLE | ENABLE_FOR_PRIVILEGE } ]
  [ OAUTH_ISSUE_REFRESH_TOKENS = { TRUE | FALSE } ]
  [ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
  [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
  [ NETWORK_POLICY = '<network_policy>' ]
  [ OAUTH_CLIENT_RSA_PUBLIC_KEY = <public_key1> ]
  [ OAUTH_CLIENT_RSA_PUBLIC_KEY_2 = <public_key2> ]
  [ IS_AGENTIC = { TRUE | FALSE } ]
  [ USE_PRIVATELINK_FOR_AUTHORIZATION_ENDPOINT = { TRUE | FALSE } ]
  [ COMMENT = '<string_literal>' ]

Required parameters (all OAuth clients)

  • name — 통합의 식별자(이름)를 지정하는 문자열이에요. 계정 내에서 고유해야 합니다. 또한 식별자는 알파벳 문자로 시작해야 하고, 전체 식별자 문자열을 큰따옴표로 감싸지 않는 한 공백이나 특수 문자를 포함할 수 없어요 (예: "My object"). 큰따옴표로 감싼 식별자는 대소문자를 구분합니다. 자세한 내용은 Identifier requirements 문서를 참고하세요.
  • TYPE = OAUTH — 통합 유형을 지정해요.
  • OAUTH_CLIENT — 클라이언트 유형을 지정해요.
  • OAUTH_REDIRECT_URI = '<uri>' — 클라이언트 URI를 지정해요. 사용자가 인증된 후 웹 브라우저는 이 URI로 리다이렉트됩니다. 이 파라미터는 OAUTH_CLIENT = LOOKER일 때 필수입니다.

Additional required parameters (custom clients)

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

  • OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' | 'PUBLIC' — 등록되는 클라이언트의 유형을 지정해요. Snowflake는 기밀(confidential)과 공개(public) 클라이언트를 모두 지원합니다. 기밀 클라이언트는 비밀을 저장할 수 있고, 최종 사용자가 접근할 수 없는 보호된 영역에서 실행됩니다. 예를 들어 클라우드에 배포된 보안 서비스는 기밀 클라이언트일 수 있고, 데스크톱에서 실행되거나 앱 스토어를 통해 배포되는 클라이언트는 공개 클라이언트일 수 있어요.
  • OAUTH_REDIRECT_URI = '<uri>' — 클라이언트 URI를 지정해요. 사용자가 인증된 후 웹 브라우저는 이 URI로 리다이렉트됩니다. 선택적 OAUTH_ALLOW_NON_TLS_REDIRECT_URI 파라미터가 TRUE로 설정되지 않는 한 URI는 TLS(Transport Layer Security)로 보호되어야 해요. 권한 부여 엔드포인트에 대한 요청의 리다이렉트 URI와 함께 전송되는 쿼리 파라미터를 포함하지 마세요. 예를 들어 권한 부여 엔드포인트에 대한 요청의 redirect_uri 쿼리 파라미터 값이 https://www.example.com/connect?authType=snowflake라면 OAUTH_REDIRECT_URI 파라미터를 https://www.example.com/connect로 설정하세요.

Optional parameters (all OAuth clients)

  • ENABLED = { TRUE | FALSE } — 통합의 작업을 시작할지 일시 중지할지 지정해요. 값은 대소문자를 구분하지 않습니다. 기본값: TRUE
  • OAUTH_SINGLE_USE_REFRESH_TOKENS_REQUIRED = { TRUE | FALSE } — 단일 사용 갱신 토큰을 사용할지 지정해요. 기본값: FALSE
  • OAUTH_USE_SECONDARY_ROLES = { IMPLICIT | NONE } — 이 OAuth 세션에서 활성화되는 보조 역할을 지정해요. IMPLICIT는 사용자가 부여된 모든 보조 역할을 활성화한다는 의미입니다.
  • NETWORK_POLICY = '<network_policy>' — 이 클라이언트가 특정 네트워크에서만 접근할 수 있도록 네트워크 정책을 지정해요.
  • ALLOWED_ROLES_LIST — 이 통합을 통해 인증할 수 있는 역할의 목록을 지정해요. BLOCKED_ROLES_LIST와 함께 사용할 때는 상호 배타적이어야 합니다.
  • BLOCKED_ROLES_LIST — 이 통합을 통해 인증할 수 없는 역할의 목록을 지정해요.
  • OAUTH_ISSUE_REFRESH_TOKENS = { TRUE | FALSE } — 갱신 토큰 발급 여부를 지정해요. 기본값: FALSE
  • OAUTH_ACCESS_TOKEN_VALIDITY = <integer> — 접근 토큰이 유효한 기간(초)을 지정해요. 기본값: 3600
  • OAUTH_REFRESH_TOKEN_VALIDITY = <integer> — 갱신 토큰이 유효한 기간(초)을 지정해요. 기본값: 7776000 (90일)
  • USE_PRIVATELINK_FOR_AUTHORIZATION_ENDPOINT = { TRUE | FALSE }TRUE일 때 인증 서버로서의 Snowflake와 인증하는 사용자 사이의 상호작용이 프라이빗 연결을 사용합니다. Snowflake와 클라이언트 사이의 상호작용(권한 부여 엔드포인트에 대한 초기 요청 포함)은 여전히 공용 인터넷을 통해 이루어져요.

Access control requirements (접근 제어 요구 사항)

이 작업을 실행하는 데 사용되는 역할은 최소한 다음 권한을 보유해야 해요.

Examples (예제)

Snowflake OAuth 통합을 만들고 사용자 정의 클라이언트를 등록하는 예제:

CREATE SECURITY INTEGRATION my_oauth_integration
  TYPE = OAUTH
  OAUTH_CLIENT = CUSTOM
  OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
  OAUTH_REDIRECT_URI = 'https://example.com/redirect'
  ENABLED = TRUE;

더 알아보기 (Learn more)