Microsoft Power BI SSO로 Snowflake에 연결

이 항목에서는 Microsoft Power BI를 사용하여 Snowflake 세션을 인스턴스화하고 Single Sign-On(SSO)을 사용하여 Snowflake에 액세스하는 방법에 대해 설명합니다.

이 항목의 내용:

개요

Snowflake를 사용하면 Microsoft Power BI 사용자는 Snowflake 데이터에 액세스하는 SSO 환경을 제공하기 위해 ID 공급자 자격 증명 및 OAuth 2.0 구현을 사용하여 Snowflake에 연결할 수 있습니다.

Power BI 서비스는 포함된 Snowflake 드라이버를 사용하여 Snowflake에 연결하므로 이 기능을 사용하면 온프레미스 Power BI 게이트웨이를 구현할 필요가 없습니다.

일반 워크플로

다음 다이어그램은 Power BI에서 Snowflake 세션을 인스턴스화하기 위한 인증 흐름에 대한 요약을 보여줍니다.

pbi sso workflow overview
  1. 사용자는 Microsoft Azure Active Directory(Azure AD)를 사용하여 Power BI 서비스에 로그인합니다.

  2. 선택적으로, Azure AD는 SAML을 통해 IdP로 사용자를 확인할 수 있습니다. 현재, Microsoft는 Power용 BI SSO용 IdP로 Azure AD만 지원합니다.

  3. 사용자가 Snowflake에 연결되면 Power BI 서비스는 Snowflake에 대한 토큰을 제공하도록 Azure AD에 요청합니다.

  4. Power BI 서비스에서는 포함된 Snowflake 드라이버를 사용하여 연결 문자열의 일부로 Azure AD를 Snowflake로 전송합니다.

  5. Snowflake는 토큰의 유효성을 검사하고 토큰에서 사용자 이름을 추출한 후 Snowflake 사용자에게 매핑하고 사용자의 기본 역할을 사용하여 Power BI 서비스를 위한 Snowflake 세션을 생성합니다.

전제 조건

Snowflake 계정에서 다음을 확인한 후 Power BI SSO 기능을 사용해야 합니다.

  • Snowflake에서 네트워크 정책 을 사용 중인 경우에는 Snowflake 계정이 호스팅되는 Azure 리전 및 필요한 기타 모든 Azure 리전이 포함된 Microsoft Azure IP 범위 를 허용해야 합니다.

    중요

    Azure 상의 Snowflake 계정이 위치한 Azure 리전 에 대한 Power BI 관련 네트워크 정책을 생성하려면 리전에 대한 Microsoft에서 JSON 다운로드를 검색합니다.

    예를 들어, Azure 상의 Snowflake 계정이 캐나다 중부 리전에 위치한 경우 PowerBI.CanadaCentral 용 JSON 다운로드를 검색합니다. addressPrefixes 목록에서 IP 주소 범위를 선택합니다. 이러한 IP 주소 범위를 사용하여 Snowflake에서 네트워크 정책을 생성하거나 업데이트합니다.

    addressPrefixes 목록이 비어 있는 경우에는 Microsoft에 문의하여 업데이트를 요청하십시오.

    여러 Microsoft Azure 서비스(예: Power BI, SCIM)를 사용하는 경우, Azure 관리자에게 올바른 IP 주소를 확인하도록 문의하여 사용자가 Snowflake 액세스하기 위한 올바른 IP 주소 범위가 Snowflake 네트워크 정책이 포함되었는지 확인하십시오.

  • Snowflake의 login_name, name 또는 email 사용자 속성은 Azure AD upn 속성으로 매핑되어야 합니다. login_name 속성을 정의하지 않은 경우 프로세스는 기본값인 name 속성으로 설정됩니다.

고려 사항

Power BI 게이트웨이 사용

Snowflake 서비스에 비공개 연결이 지원됩니다. 이러한 두 서비스 중 아무거나 사용하여 Snowflake에 연결해야 하는 경우 온프레미스 게이트웨이를 사용하여 연결하십시오.

Power BI 게이트웨이 미사용

Snowflake 서비스에 비공개 연결이 지원되지 않습니다. Power BI Service 및 Power BI Desktop에서 사용할 Azure Active Directory 공용 IP 주소 범위를 허용하는 네트워크 정책을 생성하십시오. 네트워크 정책에서 허용 IP 주소의 길이는 100,000자의 제한이 있음에 유의하십시오.

토큰 및 키

Snowflake는 external_oauth_jws_keys_url 속성의 URL 값(아래 표시)을 통해 또는 네트워크 정책이 있는 경우 네트워크 정책의 허용 IP 주소를 통해 Azure Active Directory를 확인하려고 시도합니다. Microsoft는 24시간마다 토큰과 키를 업데이트합니다. Microsoft 업데이트에 대한 자세한 내용은 Azure Active Directory B2C의 토큰 개요 를 참조하십시오.

허용되는 역할 설정하기

기본적으로, ACCOUNTADMIN, ORGADMIN 및 SECURITYADMIN 시스템 역할은 Microsoft Power BI를 사용하여 Snowflake 세션을 인스턴스화하지 못하게 차단됩니다. 이러한 높은 권한의 역할을 사용해야 하는 경우 EXTERNAL_OAUTH_ALLOWED_ROLES 보안 통합 매개 변수를 업데이트하여 이러한 역할을 지정합니다. EXTERNAL_OAUTH_ALLOWED_ROLES 보안 통합 매개 변수에서 ACCOUNTADMIN, ORGADMIN 및 SECURITYADMIN 시스템 역할을 지정하기 전에 주의하십시오.

자세한 내용은 CREATE SECURITY INTEGRATIONALTER SECURITY INTEGRATION 섹션을 참조하십시오.

시작하기

이 섹션에서는 Snowflake에서 Power BI 보안 통합을 생성하는 방법과 Power BI를 통해 Snowflake에 액세스하는 방법에 대해 설명합니다.

Power BI 보안 통합 만들기

참고

Power BI 서비스용 Power BI 게이트웨이를 사용하여 Snowflake에 연결하거나 인증에서 Snowflake 사용자 이름과 비밀번호를 사용 중인 경우에는 이 단계가 필요하지 않습니다.

Power BI를 사용하여 SSO를 통해 Snowflake 데이터에 액세스하려면 아래와 같이 CREATE SECURITY INTEGRATION 를 사용하여 Power BI용 보안 통합을 생성해야 합니다.

보안 통합의 external_oauth_issuer 매개 변수 값은 반드시 정확해야 합니다. 이 값의 일부가 Azure AD tenant로 매핑됩니다. 이 값은 Power BI tenant의 About 섹션에서 확인할 수 있습니다.

조직에서 Power BI 서비스의 고급 배포를 사용하는 경우 발급자 URL을 구성하기 위해 사용할 Azure AD tenant의 올바른 값을 얻으려면 Azure AD 관리자에게 문의하십시오.

예를 들어, Azure AD tenant ID가 a828b821-f44f-4698-85b2-3c6749302698 인 경우, AZURE_AD_ISSUER 값을 https://sts.windows.net/a828b821-f44f-4698-85b2-3c6749302698/ 과 유사하게 구성합니다. 값의 마지막에 슬래시(즉, /)를 추가하는 것이 중요합니다.

AZURE_AD_ISSUER 값을 구성한 후에는 CREATE SECURITY INTEGRATION 명령을 실행합니다.

Snowflake 계정 또는 Microsoft Power BI 서비스가 Microsoft Azure Government 클라우드 리전 에 있는 경우 external_oauth_audience_list 속성 값을 https://analysis.usgovcloudapi.net/powerbi/connector/Snowflake 로 설정합니다.

Microsoft Power BI용 보안 통합

create security integration powerbi
    type = external_oauth
    enabled = true
    external_oauth_type = azure
    external_oauth_issuer = '<AZURE_AD_ISSUER>'
    external_oauth_jws_keys_url = 'https://login.windows.net/common/discovery/keys'
    external_oauth_audience_list = ('https://analysis.windows.net/powerbi/connector/Snowflake', 'https://analysis.windows.net/powerbi/connector/snowflake')
    external_oauth_token_user_mapping_claim = 'upn'
    external_oauth_snowflake_user_mapping_attribute = 'login_name'
Copy

Microsoft Power BI용 Microsoft Azure Government 보안 통합

create security integration powerbi_mag
    type = external_oauth
    enabled = true
    external_oauth_type = azure
    external_oauth_issuer = '<AZURE_AD_ISSUER>'
    external_oauth_jws_keys_url = 'https://login.windows.net/common/discovery/keys'
    external_oauth_audience_list = ('https://analysis.usgovcloudapi.net/powerbi/connector/Snowflake', 'https://analysis.usgovcloudapi.net/powerbi/connector/snowflake')
    external_oauth_token_user_mapping_claim = 'upn'
    external_oauth_snowflake_user_mapping_attribute = 'login_name'
Copy

중요

계정 관리자(즉, ACCOUNTADMIN 역할의 사용자) 또는 전역 CREATE INTEGRATION 권한이 있는 역할만 이 SQL 명령을 실행할 수 있습니다.

보안 통합 매개 변수 값에서는 대/소문자가 구분되며 보안 통합에 입력한 값은 환경의 해당 값과 일치해야 합니다. 대/소문자가 일치하지 않으면 액세스 토큰을 확인할 수 없어 인증이 실패할 수 있습니다.

EXTERNAL_OAUTH_AUDIENCE_LIST 속성에 지정하는 목록 값은 대문자와 소문자 Snowflake 이름이 포함된 URL입니다. 클라이언트가 Microsoft에서 연결을 형성할 것으로 예상하는 값을 기반으로 Snowflake에 연결할 수 있도록 하려면 이 목록에 URL을 모두 포함하십시오.

모든 매개 변수 값이 정확히 일치하는지 확인합니다. 예를 들어, <AZURE_AD_ISSUER> URL 값이 백슬래시로 끝나지 않고 URL의 끝에 백슬래시 문자가 있는 보안 통합을 생성하는 경우에는 오류 메시지가 발생합니다. 보안 통합 오브젝트(DROPINTEGRATION 를 사용하)를 삭제한 후 CREATE SECURITY INTEGRATION을 사용하여 올바른 URL 값을 갖도록 오브젝트를 다시 생성해야 합니다.

사용자 환경에서 사용자의 UPN 속성 값 이 Snowflake의 login_name 이 아닌 사용자의 이메일 필드와 일치하는 경우 login_nameemail_address 로 바꿉니다. 예:

create security integration powerbi
    type = external_oauth
    ...
    external_oauth_snowflake_user_mapping_attribute = 'email_address';
Copy

B2B 게스트 사용자와 함께 Power BI SSO 사용하기

Azure AD Business to Business(즉, B2B) 게스트 사용자가 Microsoft Power BI에서 제공하는 SSO를 사용하여 Snowflake 액세스하도록 허용하려면 EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM 속성 값을 'unique_name' 으로 설정합니다. 예:

create security integration powerbi
  type = external_oauth
  enabled = true
  external_oauth_type = azure
  external_oauth_issuer = '<AZURE_AD_ISSUER>'
  external_oauth_jws_keys_url = 'https://login.windows.net/common/discovery/keys'
  external_oauth_audience_list = ('https://analysis.windows.net/powerbi/connector/Snowflake', 'https://analysis.windows.net/powerbi/connector/snowflake')
  external_oauth_token_user_mapping_claim = 'unique_name'
  external_oauth_snowflake_user_mapping_attribute = 'login_name';
Copy

자세한 내용은 B2B 사용자 이해 를 참조하십시오.

외부 OAuth 보안 통합 수정하기

외부 OAuth 보안 통합은 보안 통합에서 ALTER 문을 실행하여 업데이트할 수 있습니다.

자세한 내용은 ALTER SECURITY INTEGRATION(External OAuth) 섹션을 참조하십시오.

Power BI SSO가 포함된 보조 역할을 Snowflake에서 사용하기

기본 역할에 대해 원하는 범위가 외부 토큰으로 전달됩니다. 이 역할은 사용자의 사용자에게 부여된 특정 역할(session:role:<역할_이름>)입니다.

기본적으로, 세션에서 사용자(즉, DEFAULT_SECONDARY_ROLES 사용자 속성)에 대한 기본 보조 역할 은 활성화되지 않습니다.

세션에서 사용자의 기본 보조 역할을 활성화하고 External OAuth를 사용하는 동안 USE SECONDARY ROLES 명령의 실행을 허용하려면 이 단계를 완료하십시오.

  1. 연결을 위한 보안 통합을 구성합니다. (CREATE SECURITY INTEGRATION을 사용하여) 보안 통합을 만들 때나 나중에 (ALTER SECURITY INTEGRATION을 사용하여) EXTERNAL_OAUTH_ANY_ROLE_MODE 매개 변수 값을 ENABLE 또는 ENABLE_FOR_PRIVILEGE로 설정합니다.

Power BI SSO가 포함된 클라이언트 리디렉션을 Snowflake에서 사용하기

Snowflake는 Power BI SSO가 포함된 클라이언트 리디렉션을 Snowflake에서 사용하도록 지원합니다.

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

외부 BI SSO로 복제 사용하기

Snowflake는 원본 계정에서 대상 계정으로의 외부 OAuth 보안 통합의 복제 및 장애 조치/장애 복구를 지원합니다.

자세한 내용은 여러 계정에 보안 통합 및 네트워크 정책 복제 섹션을 참조하십시오.

Power BI에서 Snowflake에 연결하기

Power BI에서 Snowflake로 연결하는 방법에 대한 자세한 내용은 Power BI 설명서를 참조하십시오.

External OAuth가 포함된 네트워크 정책 사용하기

현재는 네트워크 정책을 External OAuth 보안 통합에 추가할 수 없는데, 이는 곧 Power BI 통합에만 적용되는 네트워크 정책을 정의할 수는 없다는 뜻입니다. 하지만 전체 Snowflake 계정에 광범위하게 적용되는 네트워크 정책을 계속 구현할 수 있습니다. 네트워크 정책에 포함해야 하는 Microsoft IP 범위에 대한 자세한 내용은 이 항목의 필수 구성 요소 섹션을 참조하십시오.

문제 해결

  • 웨어하우스 재개. 지정된 사용자가 일시 중단된 웨어하우스의 사용을 시도하면 오류 메시지 에 설명되지 않은 오류 메시지가 Microsoft Power BI에 표시됩니다. 확인한 후 필요한 경우 오류 메시지를 해결하기 위해 자동으로 다시 시작하도록 웨어하우스를 구성합니다. 자세한 내용은 웨어하우스 시작 또는 재개하기 를 참조하십시오.

  • Power BI를 Snowflake에 연결하려고 시도할 때 오류 메시지가 발생할 수 있습니다. 오류 메시지에 따라 Microsoft, Snowflake 또는 모두에서 문제를 해결해야 할 수 있습니다.

    • 오류 메시지 는 Power BI에 표시되도록 Snowflake에서 반환할 수 있는 일반 오류 메시지를 설명합니다.

    • 로그인 내역 은 Snowflake를 사용하여 사용자가 Snowflake에 마지막으로 액세스했는지 여부 또는 해당 시간을 확인하는 방법을 설명합니다.

오류 메시지

다음 테이블을 사용자가 Power BI에서 인증할 때 Snowflake가 반환하는 오류 메시지에 대한 설명을 제공합니다.

동작

오류 메시지

문제 해결 작업

액세스 토큰 또는 대상 그룹 값이 유효하지 않습니다.

데이터 소스 자격 증명 업데이트 실패: ODBC:ERROR [28000] 유효하지 않은 OAuth 액세스 토큰. [<번호>].

external_oauth_issuer 매개 변수의 값이 올바른지 확인하십시오. . Azure AD에서 액세스 토큰이 있는지 확인하십시오.

Snowflake 계정에서 AAD 사용자를 찾을 수 없습니다.

데이터 소스 자격 증명 업데이트 실패: ODBC:ERROR [28000] 지정된 사용자 이름 또는 비밀번호가 올바르지 않습니다.

Snowflake에 사용자가 있는지 확인하십시오(name 또는 login_name 속성 값이 Azure AD의 사용자 UPN 값과 일치하는 확인). 사용자를 추가하는 경우 UPN 값이 Azure AD에 이미 존재하지 않는지 확인하십시오.

Snowflake 사용자가 있지만, 비활성화되었습니다.

데이터 소스 자격 증명 업데이트 실패: ODBC:ERROR [28000] 사용자 액세스 비활성화됨. 로컬 시스템 관리자에게 문의하십시오.

Snowflake에서 desc user <사용자 이름> 을 실행하여 disabled 속성이 true 로 설정되었는지 확인합니다. 이 사용자를 허용하려면 alter user <사용자 이름> set disabled = true; 을 실행합니다. Power BI에서 Snowflake로 다시 액세스합니다.

Snowflake가 Power BI로부터 만료된 AAD 토큰을 수신합니다.

데이터 소스 자격 증명 업데이트 실패: ODBC:ERROR [28000] OAuth 액세스 토큰 만료됨. [<번호>].

Snowflake 지원에 문의하십시오.

Snowflake 계정에서 보안 통합이 생성되지 않거나 비활성화되었습니다.

데이터 소스 자격 증명 업데이트 실패: ODBC:ERROR [28000] OAuth 인증 서버 통합이 활성화되지 않음.

desc <보안_통합_이름> 을 실행하여 보안 통합을 확인하거나 다시 생성합니다.

사용자에 대한 기본 역할이 설정되지 않았습니다.

데이터 소스 자격 증명 업데이트 실패: ODBC: ERROR [28000] 사용자에 기본 역할이 할당되지 않았습니다. 로컬 시스템 관리자에게 문의하여 기본 역할을 할당한 후 다시 시도하십시오.

사용자에 대한 기본 역할을 설정하십시오.

사용자에 대한 기본 역할이 사용자에게 부여되지 않았습니다.

250001로 인한 테스트 실패(08001): DB: <호스트>에 연결하지 못했습니다. 사용자가 구성한 기본 역할 〈<ROLE>〉이(가) 이 사용자에게 부여되지 않았습니다. 로컬 시스템 관리자에게 문의하거나 다른 역할(예: PUBLIC)을 선택하는 연결 문자열과 함께 CLI 클라이언트를 사용하여 로그인하십시오.

사용자에 대한 기본 역할을 확인한 후 부여하십시오.

로그인 내역

사용자가 Power BI에 액세스할 수 있지만 Snowflake 세션을 인스턴스화할 수 없는 경우 지원되는 커넥터 또는 Snowflake 웹 인터페이스를 사용해 다음 명령을 실행하여 사용자가 마지막으로 Snowflake에 액세스한 시간을 결정할 수 있습니다. 성공한 인증만 기록됨에 유의하십시오.

use role accountadmin;
select *
from table(information_schema.login_history(dateadd('hours',-1,current_timestamp()),current_timestamp()))
order by event_timestamp;
Copy

각 결과에서 USER_NAMEFIRST_AUTHENTICATION_FACTOR 열을 평가합니다.

  • USER_NAME 값은 전제 조건 섹션에 설명된 속성 매핑과 일치해야 합니다.

  • FIRST_AUTHENTICATION_FACTOROAUTH_ACCESS_TOKEN 으로 설정되어야 합니다.