카테고리:

사용자 및 보안 DDL (서드 파티 서비스 통합)

CREATE SECURITY INTEGRATION(External OAuth)

계정에 새 External OAuth 보안 통합을 만들거나 기존 통합을 바꿉니다. 클라이언트는 External OAuth 보안 통합을 통해 서드 파티 인증 서버를 사용하여 Snowflake와 상호 작용하는 데 필요한 액세스 토큰을 얻을 수 있습니다.

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

참고 항목:

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

이 항목의 내용:

구문

CREATE [ OR REPLACE ] SECURITY INTEGRATION [IF NOT EXISTS]
  <name>
  TYPE = EXTERNAL_OAUTH
  ENABLED = { TRUE | FALSE }
  EXTERNAL_OAUTH_TYPE = { OKTA | AZURE | PING_FEDERATE | CUSTOM }
  EXTERNAL_OAUTH_ISSUER = '<string_literal>'
  EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = '<string_literal>' | ('<string_literal>', '<string_literal>' [ , ... ] )
  EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'LOGIN_NAME | EMAIL_ADDRESS'
  [ EXTERNAL_OAUTH_JWS_KEYS_URL = '<string_literal>' ] -- For OKTA | PING_FEDERATE | CUSTOM
  [ EXTERNAL_OAUTH_JWS_KEYS_URL = '<string_literal>' | ('<string_literal>' [ , '<string_literal>' ... ] ) ] -- For Azure
  [ EXTERNAL_OAUTH_BLOCKED_ROLES_LIST = ( '{role_name}' [ , '{role_name}' , ... ] ) ]
  [ EXTERNAL_OAUTH_ALLOWED_ROLES_LIST = ( '{role_name}' [ , '{role_name}' , ... ] ) ]
  [ EXTERNAL_OAUTH_RSA_PUBLIC_KEY = <public_key1> ]
  [ EXTERNAL_OAUTH_RSA_PUBLIC_KEY_2 = <public_key2> ]
  [ EXTERNAL_OAUTH_AUDIENCE_LIST = ('<string_literal>') ]
  [ EXTERNAL_OAUTH_ANY_ROLE_MODE = DISABLE | ENABLE | ENABLE_FOR_PRIVILEGE ]
  [ EXTERNAL_OAUTH_SCOPE_DELIMITER = '<string_literal>' ] -- Only for EXTERNAL_OAUTH_TYPE = CUSTOM

필수 매개 변수

name

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

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

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

TYPE = EXTERNAL_OAUTH

외부 OAuth 통합과 Snowflake OAuth 통합을 구별합니다.

ENABLED = TRUE | FALSE

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

  • TRUE 로 지정하면 파이프 정의에 지정된 매개 변수를 기반으로 통합을 실행할 수 있습니다.

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

EXTERNAL_OAUTH_TYPE = OKTA | AZURE | PING_FEDERATE | CUSTOM

OAuth 2.0 인증 서버를 Okta, Microsoft Azure AD, Ping Identity PingFederate 또는 Custom OAuth 2.0 인증 서버가 되도록 지정합니다.

EXTERNAL_OAUTH_ISSUER = 'string_literal'

OAuth 2.0 인증 서버를 정의하는 URL을 지정합니다.

EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = 'string_literal' | ('string_literal', 'string_literal' [ , ... ] )

액세스 토큰을 Snowflake 사용자 레코드에 매핑하는 데 사용할 수 있는 액세스 토큰 클레임을 지정합니다.

클레임의 데이터 타입은 문자열 또는 문자열 목록이어야 합니다.

EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'LOGIN_NAME | EMAIL_ADDRESS'

액세스 토큰을 Snowflake 사용자 레코드에 매핑하는 데 어떤 Snowflake 사용자 레코드 특성을 사용해야 하는지 나타냅니다.

선택적 매개 변수

EXTERNAL_OAUTH_JWS_KEYS_URL = 'string_literal'

External OAuth 액세스 토큰의 유효성을 검사하기 위해 공개 키 또는 인증서를 다운로드할 출처가 되는 엔드포인트를 지정합니다.

이 구문은 EXTERNAL_OAUTH_TYPE = OKTA | PING_FEDERATE | CUSTOM 인 보안 통합에 적용됩니다.

EXTERNAL_OAUTH_JWS_KEYS_URL = 'string_literal' | ('string_literal' [ , 'string_literal' ... ] )

External OAuth 액세스 토큰의 유효성을 검사하기 위해 공개 키 또는 인증서를 다운로드할 출처가 되는 엔드포인트 또는 엔드포인트 목록을 지정합니다. 목록에 지정할 수 있는 URL의 최대 수는 3개입니다.

이 구문은 EXTERNAL_OAUTH_TYPE = AZURE 인 보안 통합에 적용됩니다.

EXTERNAL_OAUTH_RSA_PUBLIC_KEY = public_key1

-----BEGIN PUBLIC KEY----------END PUBLIC KEY----- 헤더 없이 Base64로 인코딩된 RSA 공개 키를 지정합니다.

EXTERNAL_OAUTH_RSA_PUBLIC_KEY_2 = public_key2

-----BEGIN PUBLIC KEY----------END PUBLIC KEY----- 헤더 없이 보조 RSA 공개 키를 지정합니다. 키 순환에 사용됩니다.

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

클라이언트가 기본 역할 로 설정할 수 없는 역할의 목록을 지정합니다. External OAuth 인증 서버의 액세스 토큰을 기반으로 Snowflake 세션을 생성할 때 이 목록의 역할을 사용할 수 없습니다.

기본적으로, 이 목록에는 ACCOUNTADMIN 및 SECURITYADMIN 역할이 포함됩니다. 목록에서 이러한 권한 있는 역할을 제거하려면 ALTER ACCOUNT 명령을 사용하여 EXTERNAL_OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST 계정 매개 변수를 FALSE 로 설정하십시오.

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

클라이언트가 기본 역할로서 설정할 수 있는 역할 목록을 지정합니다.

External OAuth 인증 서버의 액세스 토큰을 기반으로 Snowflake 세션을 생성할 때 이 목록의 역할을 사용할 수 있습니다.

조심

이 매개 변수는 ACCOUNTADMIN 및 SECURITYADMIN 시스템 역할을 지원합니다.

이러한 높은 권한을 가진 역할을 기본 역할로 설정하여 Snowflake 세션을 만들 때는 주의하십시오.

EXTERNAL_OAUTH_AUDIENCE_LIST = ('string_literal')

고객의 Snowflake 계정 URL(즉, <계정_식별자>.snowflakecomputing.com)을 사용하는 것 외에 액세스 토큰의 대상 그룹 확인에 사용할 수 있는 추가적인 값을 지정합니다. 자세한 내용은 계정 식별자 섹션을 참조하십시오.

Power BI SSO 사용 시 이 속성에 대한 자세한 내용은 Power BI SSO 보안 통합 을 참조하십시오.

현재, External OAuth 사용자 지정 클라이언트 에 대해서만 여러 대상 그룹 URLs을 지정할 수 있습니다. 각 URL을 작은따옴표로 묶고, 쉼표로 각 URL을 구분해야 합니다. 예:

external_oauth_audience_list = ('https://example.com/api/v2/', 'https://example.com')
EXTERNAL_OAUTH_ANY_ROLE_MODE = DISABLE | ENABLE | ENABLE_FOR_PRIVILEGE

OAuth 클라이언트 또는 사용자가 OAuth 액세스 토큰에 정의되지 않은 역할을 사용할 수 있는지 여부를 지정합니다. Snowflake로의 Power BI 통합 을 사용하면 이 매개 변수가 사용될 때도 PowerBI 사용자가 역할을 전환할 수 없습니다.

  • DISABLE 로 지정하면 OAuth 클라이언트 또는 사용자가 역할(즉, use role <역할>;)을 전환할 수 없습니다. 기본값입니다.

  • ENABLE 로 지정하면 OAuth 클라이언트 또는 사용자가 역할을 전환할 수 있습니다.

  • ENABLE_FOR_PRIVILEGE 로 지정하면 OAuth 클라이언트 또는 사용자가 USE_ANY_ROLE 권한을 가진 클라이언트 또는 사용자에 대해서만 역할을 전환할 수 있습니다. 사용자가 사용할 수 있는 1개 이상의 역할에 이 권한을 부여하고 취소할 수 있습니다. 예:

값은 선택적으로 작은따옴표로 묶을 수 있습니다(예: DISABLE 또는 'DISABLE').

grant USE_ANY_ROLE on integration external_oauth_1 to role1;
revoke USE_ANY_ROLE on integration external_oauth_1 from role1;
EXTERNAL_OAUTH_SCOPE_DELIMITER = 'string_literal'

인증 토큰의 범위 구분 기호를 지정합니다.

구분 기호는 쉼표(',') 또는 공백(' ')과 같은 단일 문자일 수 있습니다.

이 보안 통합 속성은 선택 사항이며 기본 쉼표 구분 기호를 재정의하는 데 사용할 수 있습니다. 이 속성은 다음과 같은 사용자 지정 외부 OAuth 통합에만 지원됩니다.

EXTERNAL_OAUTH_TYPE = CUSTOM

Snowflake 계정에서 이 속성을 활성화하려면 Snowflake 지원 에 문의하십시오.

액세스 제어 요구 사항

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

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

Microsoft Azure AD의 예

다음은 Microsoft Azure AD OAuth 2.0 인증 서버에 대한 외부 OAuth 보안 통합을 만드는 예입니다.

create security integration external_oauth_azure_1
    type = external_oauth
    enabled = true
    external_oauth_type = azure
    external_oauth_issuer = '<AZURE_AD_ISSUER>'
    external_oauth_jws_keys_url = '<AZURE_AD_JWS_KEY_ENDPOINT>'
    external_oauth_token_user_mapping_claim = 'upn'
    external_oauth_snowflake_user_mapping_attribute = 'login_name';

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

DESC SECURITY INTEGRATION external_oauth_azure_1;

Okta의 예

다음은 Okta OAuth 2.0 인증 서버에 대한 외부 OAuth 보안 통합을 만드는 예입니다.

create security integration external_oauth_okta_1
    type = external_oauth
    enabled = true
    external_oauth_type = okta
    external_oauth_issuer = '<OKTA_ISSUER>'
    external_oauth_jws_keys_url = '<OKTA_JWS_KEY_ENDPOINT>'
    external_oauth_token_user_mapping_claim = 'sub'
    external_oauth_snowflake_user_mapping_attribute = 'login_name';

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

DESC SECURITY INTEGRATION external_oauth_okta_1;

Microsoft Power BI SSO의 예

예는 다음을 참조하십시오.

맨 위로 이동