CREATE SECURITY INTEGRATION(External OAuth)¶
계정에 새 External OAuth 보안 통합을 만들거나 기존 통합을 바꿉니다. 클라이언트는 External OAuth 보안 통합을 통해 서드 파티 인증 서버를 사용하여 Snowflake와 상호 작용하는 데 필요한 액세스 토큰을 얻을 수 있습니다.
다른 유형의 보안 통합(예: Snowflake OAuth) 생성에 대한 자세한 내용은 CREATE SECURITY INTEGRATION 섹션을 참조하십시오.
구문¶
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
External 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의 메타데이터 필드 섹션을 참조하십시오.
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;