External OAuth 개요

이 항목에서는 Snowflake에 액세스하기 위해 OAuth 2.0을 사용하는 External OAuth 서버를 구성하는 방법을 설명합니다.

External OAuth는 원활한 SSO 경험을 제공하도록 고객의 OAuth 2.0 서버를 통합하여 Snowflake에 대한 외부 클라이언트 액세스를 지원합니다.

Snowflake는 다음 외부 인증 서버, 사용자 지정 클라이언트, 파트너 애플리케이션을 지원합니다.

Snowflake 역할에 필요한 모든 OAuth 2.0 범위 매핑이 포함된 조직의 외부 OAuth 서버를 구성한 후, 사용자는 추가 인증 또는 권한 부여 요소 또는 방법을 입력할 필요 없이 프로그래밍 방식으로 안전하게 Snowflake에 연결할 수 있습니다. Snowflake 데이터에 대한 사용자 액세스는 세션에 대한 액세스 토큰에 통합된 역할 및 사용자 역할에 따라 다릅니다. 자세한 내용은 이 항목의 범위 를 참조하십시오.

사용 사례 및 이점

  1. Snowflake는 전용 인증 서버에 토큰 발급을 위임하여 OAuth 클라이언트 및 사용자가 올바르게 인증할 수 있도록 합니다. 이를 통해 Snowflake로 발급된 토큰을 중앙 집중식으로 관리할 수 있습니다.

  2. 고객은 인증(예: 다단계, 서브넷, 생체) 및 권한 부여(예: 승인 없음, 관리자 승인 필수) 정책을 인증 서버에 통합할 수 있습니다. 그 결과 보안이 대폭 향상되어 사용자에게 챌린지를 발급함으로써 데이터 보호를 강화할 수 있습니다. 사용자가 정책 챌린지를 전달하지 않으면 Snowflake 세션이 인스턴스화되지 않으며 Snowflake 데이터에 액세스할 수 없습니다.

  3. Snowflake에 액세스할 수 있는 프로그래밍 방식의 클라이언트 및 외부 OAuth를 통해서만 Snowflake 세션을 시작할 수 있는 사용자의 경우, Snowflake에 추가적인 인증 구성(즉, 비밀번호 설정)을 할 필요가 없습니다. 그 결과, 프로그래밍 방식 액세스를 위해서만 사용되는 서비스 계정 또는 사용자는 외부 OAuth로 구성된 서비스를 통해서 이동하는 경우에만 Snowflake 데이터를 사용할 수 있습니다.

  4. 클라이언트는 브라우저에 액세스하지 않고 Snowflake에 인증할 수 있어, 외부 OAuth 서버를 사용한 편리한 통합이 가능합니다.

  5. Snowflake와 외부 OAuth 서버의 통합에는 클라우드와 관련한 제약이 없습니다.

    • 인증 서버의 위치가 클라우드 공급자의 클라우드이거나 인증 서버의 위치가 온프레미스인지의 여부는 관계가 없습니다. 그러므로 Snowflake와 상호 작용하는 인증 서버를 구성하기 위한 다양한 옵션이 고객에게 제공됩니다.

일반 워크플로

지원되는 각 ID 공급자의 경우, 외부 OAuth 인증 서버와 관련된 OAuth 작업 흐름을 요약하면 다음과 같습니다. 첫 번째 단계는 1회만 발생하며 나머지 단계는 Snowflake 데이터에 액세스를 시도할 때마다 발생한다는 점에 유의하십시오.

workflow overview
  1. 사용자 환경에서 외부 OAuth 인증 서버를 구성하고 Snowflake에서 보안 통합을 구성하여 트러스트 관계를 설정합니다.

  2. 사용자는 비즈니스 인텔리전스 애플리케이션을 통해 Snowflake 데이터에 액세스하기 위해 시도하고 애플리케이션은 사용자를 확인하기 위해 시도합니다.

  3. 확인할 때 인증 서버는 JSON 웹 토큰(즉, OAuth 토큰)을 클라이언트 애플리케이션으로 전송합니다.

  4. Snowflake 드라이버는 OAuth 토큰과 함께 연결 문자열을 Snowflake로 전달합니다.

  5. Snowflake는 OAuth 토큰의 유효성을 검사합니다.

  6. Snowflake는 사용자 조회를 실행합니다.

  7. 확인할 때 Snowflake는 사용자가 역할에 따라 Snowflake의 데이터에 액세스할 수 있도록 세션을 인스턴스화합니다.

범위

인증 서버에서 범위 매개 변수는 액세스 토큰에 의해 허용되는 작업 및 역할과 Snowflake 세션을 인스턴스화한 후 사용자가 액세스할 수 있는 항목을 제한합니다.

ACCOUNTADMIN, ORGADMIN 및 SECURITYADMIN 역할은 기본적으로 차단됨에 유의하십시오. 이러한 역할 중 하나 이상을 사용해야 하는 경우 ALTER ACCOUNT 명령을 사용하여 EXTERNAL_OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST 계정 매개 변수를 FALSE로 설정하십시오.

  • Okta, PingFederate 및 Custom의 경우, 다음 테이블의 역할 범위 패턴을 사용하십시오.

  • Azure AD의 경우 사전 필수 단계: Azure AD에서 OAuth 흐름 결정 을 참조하십시오.

  • 외부 OAuth 서버에서 Snowflake 역할을 관리하지 않으려면, 토큰의 범위 속성에서 SESSION:ROLE-ANY의 정적 값을 전달합니다.

다음 테이블은 외부 OAuth 범위를 요약하여 보여줍니다. 범위를 정의하지 않으면 Snowflake에 대한 연결 시도가 실패 함에 유의하십시오.

범위/역할 연결 매개 변수

설명

session:role-any

Snowflake의 ANY 역할에 매핑됩니다.

Snowflake에서 사용자의 기본 역할이 바람직한 경우 이 범위를 사용하십시오.

external_oauth_any_role_mode 보안 통합 매개 변수를 구성하여 지정된 External OAuth Provider에 대해 ANY 역할을 활성화해야 합니다. 구성 세부 정보는 Okta, Azure AD, PingFederate 또는 사용자 지정 의 ANY 역할 섹션을 참조하십시오.

Power BI에서 Snowflake로 통합 에서는 PowerBI 사용자가 이 범위를 사용하여 역할을 전환할 수 없습니다.

session:role:custom_role

사용자 지정 Snowflake 역할로 매핑합니다. 예를 들어, 사용자 지정 역할이 ANALYST인 경우의 범위는 session:role:analyst 입니다.

session:role:public

PUBLIC Snowflake 역할로 매핑합니다.

External OAuth가 포함된 보조 역할 사용하기

Snowflake는 External OAuth에서 보조 역할 사용을 지원합니다.

Snowflake OAuth는 보조 역할로의 세션 내 역할 전환을 지원하지 않습니다.

자세한 내용은 다음을 참조하십시오.

External OAuth 지원 구성하기

Snowflake는 External OAuth를 지원하는 파트너 애플리케이션 및 사용자 지정 클라이언트의 사용을 지원합니다.

파트너 애플리케이션 또는 사용자 지정 클라이언트를 구성해야 하는 경우 아래 목록을 참조하십시오.

OAuth 및 보조 역할

Snowflake는 External Oauth에서 보조 역할 사용을 지원합니다.

자세한 내용은 External OAuth가 포함된 보조 역할 사용하기 섹션을 참조하십시오.

오류 코드

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

오류 코드

오류

설명

390318

OAUTH_ACCESS_TOKEN_EXPIRED

OAuth액세스 토큰이 만료되었습니다. {0}

390144

JWT_TOKEN_INVALID

JWT 토큰이 유효하지 않습니다.

문제 해결

  • SYSTEM$VERIFY_EXTERNAL_OAUTH_TOKEN 함수를 사용하여 외부 OAuth 액세스 토큰이 유효하거나 다시 생성해야 하는지 결정합니다.

  • 실패한 External OAuth 로그인 시도와 관련된 오류 메시지가 나타나고 오류 메시지에 UUID가 있는 경우 SYSTEM$GET_LOGIN_FAILURE_DETAILS 함수를 사용해 자신의 역할에 오류 메시지의 UUID를 사용할 MONITOR 권한이 할당된 관리자에게 요청해 오류에 대한 자세한 설명을 받을 수 있습니다.