create user {username} password={password}
DEFAULT_ROLE=AAD_PROVISIONER
TYPE = LEGACY_SERVICE;
GRANT OWNERSHIP ON USER {username} TO ROLE ACCOUNTADMIN;Snowflake와 EntraID(구 Azure AD)간 SSO/MFA Provisioning 진행중.
Power BI account 역시 Snowflake와 연동하기 위한 작업 추가 진행 필요.
TODO
1) EntraID에 PBI account 등록
2) network policy에 PBI 서버 등록
Entra ID에 저장되어져 있는 Power BI system user를 snowflake 내에 등록
(위 1번과 동일)
Power BI에서 SSO를 사용할 수 있도록 Snowflake에서 다음 SQL 명령을 실행하여 보안 통합(Security Integration) 을 생성 필요
✅ 보안 통합 생성 (일반적인 Azure 환경)
CREATE SECURITY INTEGRATION powerbi
TYPE = external_oauth
ENABLED = true
EXTERNAL_OAUTH_TYPE = 'https://sts.windows.net/{tenant-id}/'
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 = 'email_address';
EXTERNAL_OAUTH_TYPE = azure: OAuth 공급자로 Microsoft Entra ID(Azure AD)를 사용함EXTERNAL_OAUTH_ISSUER: Azure AD 테넌트의 발급자 URL (Power BI 테넌트 정보에서 확인 가능)EXTERNAL_OAUTH_JWS_KEYS_URL: Microsoft에서 JWT 서명 키를 가져오는 URLEXTERNAL_OAUTH_AUDIENCE_LIST: Power BI 서비스에서 Snowflake 인증 요청을 보낼 때 사용하는 URL 목록 (대/소문자 구분)EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM: Azure AD에서 사용자의 UPN (User Principal Name) 값을 Snowflake의 로그인 사용자로 매핑EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE: Snowflake에서 사용자를 매핑할 속성 (login_name 기본값, 필요 시 email_address 변경 가능)Power BI와 Snowflake 간의 인증을 올바르게 설정하려면 Azure AD 테넌트 ID 를 확인
✅ Azure AD 테넌트 ID 확인 방법
예시
Azure AD 테넌트 ID가 a828b821-f44f-4698-85b2-3c6749302698 인 경우:
주의: 슬래시(/)로 끝나야 함!!
EXTERNAL_OAUTH_ISSUER = 'https://sts.windows.net/a828b821-f44f-4698-85b2-3c6749302698/' ✅ Grant appropriate role to pbi user
GRANT ROLE ENGINEER TO USER "PBI@{ACCOUNT_NM}ONMICROSOFT.COM";
ALTER USER "PBI@{ACCOUNT_NM}ONMICROSOFT.COM" SET DEFAULT_ROLE=ENGINEER;
Power BI가 Snowflake에 연결할 수 있도록 네트워크 정책을 설정해야 함.
Azure에서 Power BI 공용 IP 주소 범위 확인
2-2에서 다운로드 받은 파일에서 addressPrefixes 목록 → IP 주소 범위 확인
Snowflake 네트워크 정책에 Power BI IP 주소 추가
(Azure에서 Power BI, SCIM 등을 사용할 경우 관련된 IP 주소 모두 허용 필요)
USE ROLE ACCOUNTADMIN;
#Snowflake 계정에 네트워크 정책을 적용하는 명령
ALTER ACCOUNT SET ENFORCE_NETWORK_RULES_FOR_INTERNAL_STAGES = true;
#network policy 적용
CREATE NETWORK POLICY allow_pb_public_access
ALLOWED_IP_LIST = ('{public_ip_address}');
#Snowflake 계정에 금방 만든 network policy 적용
ALTER ACCOUNT SET NETWORK_POLICY = allow_pb_public_access;
#만약 allowed_ip_list에 추가하고 싶다면
ALTER NETWORK POLICY allow_pb_public_access
SET ALLOWED_IP_LIST = (
-- azure power bi
'20.51.0.204/30',
'20.51.1.32/28',
'20.51.5.4/30',
'20.51.5.192/26',
'40.80.184.70/31',
'40.80.188.48/28',
'40.80.188.64/27',
'40.80.188.128/25',
'40.80.189.0/24',
'135.232.168.0/27',
'172.183.7.208/28'
);
ALTER ACCOUNT SET NETWORK_POLICY = allow_pb_public_access;
각 ip_address 는 CIDR(Classless Inter-Domain Routing) 표기법을 사용하여 다양한 주소를 포함
public_ip_address 만 포함하도록 변경.
Power BI는 일주일에 한번씩 public IP가 변경되기 때문에 Snowflake network policy에 allow_ip_list를 변경하는 작업 필요
Snowflake reference) https://docs.snowflake.com/ko/user-guide/oauth-powerbi
PowerBI reference) https://learn.microsoft.com/en-us/power-bi/connect-data/service-connect-snowflake