외부 OAuth 개요

외부 OAuth는 고객의 OAuth 2.0 서버와 통합되어 특히 프로그래밍 방식으로 Snowflake에 연결하는 클라이언트 애플리케이션에서 원활한 SSO 경험을 제공합니다. 외부 OAuth 항목에서는 OAuth 2.0을 사용해 외부 OAuth를 구성하여 지원되는 인증 서버, 사용자 지정 클라이언트 및 지원되는 파트너 애플리케이션을 위한 Snowflake 데이터에 프로그래밍 방식으로 안전하게 액세스하기 위한 방법을 설명합니다.

Snowflake는 외부 OAuth 서버 3개, 사용자 지정 통합 1개 및 파트너 애플리케이션 2개를 지원합니다.

  1. Okta

  2. Microsoft Azure AD

  3. Ping Identity PingFederate

  4. 외부 OAuth 사용자 지정 클라이언트

  5. Microsoft Power BI SSO로 Snowflake에 연결

  6. Sigma

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 및 SECURITYADMIN 역할은 기본적으로 차단됨에 유의하십시오. 이러한 두 역할 중 하나 또는 모두를 사용해야 하는 경우에는 Snowflake 지원 으로 문의해 주십시오.

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

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

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

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

범위 / 역할 연결 매개 변수

설명

session:role-any

Snowflake에서 ANY 역할에 매핑됩니다. . Snowflake에서 사용자의 기본 역할이 올바른 경우 외부 OAuth 토큰에서 이 범위를 전달합니다. . 지정된 외부 OAuth 공급자에 대한 ANY 역할을 활성화하려면 external_oauth_any_role_mode 보안 통합 매개 변수를 구성해야 합니다. . 구성과 관련한 자세한 내용은 Okta, Azure AD, PingFederate 또는 사용자 지정 의 ANY 역할 섹션을 참조하십시오. Power BI에서 Snowflake로 통합 에서는 PowerBI 사용자가 이 범위를 사용하여 역할을 전환할 수 없습니다.

session:role:<사용자 지정_역할>

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

session:role:public

PUBLIC Snowflake 역할로 매핑합니다.

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

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

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

External OAuth 및 클라이언트 리디렉션

Snowflake는 지원되는 Snowflake 클라이언트에서 클라이언트 리디렉션과 OAuth 사용을 포함하여, External OAuth에서의 클라이언트 리디렉션 사용을 지원합니다.

자세한 내용은 클라이언트 연결 리디렉션하기 섹션을 참조하십시오.

문제 해결

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

  • 인증 흐름, 토큰 요청 또는 교환 중 또는 OAuth 흐름 완료 후 Snowflake 세션 생성 시 OAuth와 관련된 오류 코드 목록 및 JSON blob에 반환된 오류에 대해서는 OAuth 오류 코드 를 참조하십시오.

맨 위로 이동