Snowflake OAuth 개요

Snowflake OAuth에서는 Snowflake의 기본 제공 OAuth 서비스를 사용하여 OAuth 기반 인증을 제공합니다.

이 항목에서는 Snowflake OAuth와 Snowflake를 OAuth 리소스 및 Snowflake 데이터에 안전하게 액세스하기 위한 인증 서버로 사용하는 방법에 대해 설명합니다.

Snowflake OAuth에서는 Snowflake에서 기본으로 제공되는 OAuth 서비스를 사용하고 다음 애플리케이션을 지원합니다.

Snowflake OAuth 인증 흐름

OAuth 인증 흐름은 다음과 같습니다.

Snowflake OAuth workflow
  1. 클라이언트에서 사용자가 OAuth를 사용하여 Snowflake에 연결하기 위해 시도합니다.

    애플리케이션은 Snowflake 인증 서버로 인증 요청을 전송하고 사용자에게 액세스 인증을 요청하는 인증 화면을 표시합니다.

  2. 사용자가 Snowflake 로그인 이름과 비밀번호를 제출하면 사용자 세션에서 특정 역할(예: SYSADMIN 또는 CUSTOM_ROLE1)을 사용하여 Snowflake로의 클라이언트 액세스를 허용하는 동의 화면이 표시됩니다.

    사용자는 동의를 제출하여 세션에서 특정 역할을 사용합니다.

    Snowflake 인증 서버가 클라이언트로 다시 인증 코드를 전송합니다.

  3. 클라이언트는 인증 코드를 Snowflake 인증 서버로 다시 전송하여 액세스 토큰을 요청하고, 선택적으로 클라이언트가 새 액세스 토큰을 획득할 수 있는 새로 고침 토큰을 요청합니다.

    Snowflake 인증 서버는 인증 코드를 수락하고 Snowflake 리소스 서버의 사용자 리소스에 고유한 액세스 토큰을 클라이언트에 제공합니다. 인증 요청의 설정에 따라, 인증 서버는 새로 고침 토큰을 발급하여 특정 리소스에 연결된 새 액세스 토큰을 획득합니다.

  4. 클라이언트는 Snowflake 리소스 서버로 액세스 토큰을 전송합니다.

    리소스 서버는 유효한 액세스 토큰을 인식하고 권한이 인증된 역할을 사용하여 사용자 세션을 생성합니다. 클라이언트는 이제 액세스 토큰에 의해 지정된 역할로 제한되는 Snowflake 리소스에 액세스할 수 있습니다.

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

액세스 토큰의 수명은 짧습니다(일반적으로 10분). 액세스 토큰이 만료되면 클라이언트는 새로 고침 토큰을 전송하여 새 액세스 토큰을 획득할 수 있습니다. 현재 액세스 토큰이 만료될 때마다 새로 고침 토큰이 Snowflake 인증 서버로 전송되어 새 액세스 토큰을 요청합니다(3~6단계). 새로 고침 토큰을 전송하지 않도록 통합이 구성된 경우, 사용자는 반드시 위의 단계를 반복하여 클라이언트를 다시 인증해야 합니다.

파트너 애플리케이션

지원을 구성하려면 파트너 애플리케이션용 Snowflake OAuth 구성하기 섹션을 참조하십시오.

공용 인터넷을 통과하지 않고 OAuth를 사용하는 방법에 대해 알아보려면 파트너 애플리케이션 섹션을 참조하십시오.

사용자 지정 클라이언트

Snowflake는 조직에서 구성한 사용자 지정 클라이언트를 지원합니다. 지원을 구성하려면 사용자 지정 클라이언트용 Snowflake OAuth 구성하기 섹션을 참조하십시오.

네트워크 정책

전용 네트워크 정책은 Snowflake OAuth와만 통합할 수 있습니다. External OAuth 보안 통합은 별개의 네트워크 정책 설정을 지원하지 않지만, 전체 Snowflake 계정에 적용되는 일반 네트워크 정책을 계속 사용할 수 있습니다.

Snowflake OAuth 보안 통합에는 network_policy 매개 변수가 있으므로, 일반 사용자 액세스를 위해 이러한 IP 주소를 추가하지 않고 Snowflake OAuth 통합이 사용자를 인증하고 권한을 부여할 수 있습니다.

Snowflake OAuth 통합 고유의 네트워크 정책을 설정하면 Snowflake OAuth 네트워크 정책을 Snowflake 계정에 적용될 수 있는 다른 네트워크 정책과 구분할 수 있습니다. 그러므로 Snowflake OAuth 네트워크 정책을 사용하면 원하는 대로 사용자에 대한 인증 및 권한 부여를 수행할 수 있습니다.

Snowflake OAuth 통합에 적용된 네트워크 정책은 전체 Snowflake 계정에 적용된 네트워크 정책보다 우선하지만, 사용자에게 할당된 네트워크 정책보다는 우선 순위에서 밀립니다.

중요

사용자 또는 계정별로 네트워크 정책이 설정되고 다른 위치에서 실행되는 서비스(예: Microsoft Power BI Service)를 사용하는 경우에는 Snowflake에 연결할 수 없습니다.

Snowflake OAuth 보안 통합을 생성한 후 다음 명령을 사용하여 OAuth 네트워크 정책을 설정합니다.

ALTER SECURITY INTEGRATION <oauth_integration> SET NETWORK_POLICY = <oauth_network_policy>;
Copy

Snowflake OAuth 네트워크 정책의 설정을 해제하려면 다음 명령을 사용합니다.

ALTER SECURITY INTEGRATION <oauth_integration> UNSET <oauth_network_policy>;
Copy

여기서

<oauth_integration>

Snowflake OAuth 보안 통합의 이름을 지정합니다.

<oauth_network_policy>

Snowflake에 Snowflake OAuth 네트워크 정책을 지정합니다.

자세한 내용은 네트워크 정책ALTER SECURITY INTEGRATION 섹션을 참조하십시오.

오류 코드

Snowflake OAuth와 관련된 오류 코드에 대한 설명은 아래 표를 참조하십시오.

오류 코드

오류

설명

390302

OAUTH_CONSENT_INVALID

지정된 사용자에 대한 동의 생성 또는 유효성 검사 오류입니다.

390303

OAUTH_ACCESS_TOKEN_INVALID

Snowflake 세션을 생성할 때 사용되는 제공된 액세스 토큰이 만료되거나 유효하지 않습니다.

390304

OAUTH_AUTHORIZE_INVALID_RESPONSE_TYPE

유효하지 않은 response_type 은 인증 엔드포인트에 매개 변수로 제공됩니다(대부분 code 여야 함).

390305

OAUTH_AUTHORIZE_INVALID_STATE_LENGTH

인증 엔드포인트에 매개 변수로 제공된 상태 매개 변수의 길이가 2048자를 초과합니다.

390306

OAUTH_AUTHORIZE_INVALID_CLIENT_ID

제공된 클라이언트 ID와 연결된 통합이 없습니다.

390307

OAUTH_AUTHORIZE_INVALID_REDIRECT_URI

인증 엔드포인트에 매개 변수로 제공되된 redirect_uri 가 제공된 client_id 와 연결된 통합의 redirect_uri 와 일치하지 않거나 redirect_uri 의 형식이 올바르지 않습니다.

390308

OAUTH_AUTHORIZE_INVALID_SCOPE

요청된 범위가 유효한 범위가 아니거나 요청된 범위에 대한 모든 권한이 사용자에게 부여되지 않았습니다.

390309

OAUTH_USERNAMES_MISMATCH

인증을 시도한 사용자가 액세스 토큰과 연결된 사용자와 다릅니다.

390311

OAUTH_AUTHORIZE_INVALID_CODE_CHALLENGE_PARAMS

코드 챌린지 또는 코드 챌린지 메서드가 누락되거나 유효하지 않거나 지원되지 않습니다.

또한, RFC에서 다음 오류를 가져와 실패한 토큰 요청 또는 교환 중에 생성된 JSON blob에 반환되었습니다.

오류

설명

유효하지 않은_클라이언트

알 수 없는 클라이언트, 클라이언트 시크릿 불일치와 같은 클라이언트 인증과 관련된 실패가 발생했습니다.

유효하지 않은_권한 부여

제공된 인증 권한 부여 또는 새로 고침 토큰이 유효하지 않거나 만료되었거나 취소되었거나 인증 요청에서 사용된 리디렉션 URI와 일치하지 않거나 다른 클라이언트로 발급되었습니다.

지원되지 않는_권한_타입

Snowflake에서 현재 지원되지 않는 권한 타입이 제공되었습니다(《새로 고침_토큰》 및 《인증_코드》의 2개 권한 타입만 현재 지원됨).

유효하지 않은_요청

요청의 형식이 잘못되었거나 요청을 처리할 수 없습니다.