Azure Active Directory와 Snowflake SSO 연결 하기

Gyosun
Snowflake Korea
Published in
7 min readJul 29, 2023

Snowflake는 사용자 정보를 인증하기 위하여 자체적으로 Username과 Password를 사용하는 방식을 제공하고 있습니다. 이러한 방식을 통해 사용자는 손쉽게 Snowflake에 사용자를 추가하고, 관리할 수 있는 옵션을 제공합니다.

Azure Active Directory와의 연결 필요성

한 조직 내에서 Snowflake의 여러 계정(Account)을 사용하거나, 조직 내의 사용자 정보와 연계가 필요할 경우 SSO와 연계가 필요하며, Snowflake 는 SAML 2.0 방식으로 다양한 iDP와 연결을 수행할 수 있는 옵션을 제공합니다.

Azure Active Directory와의 연계 기능 역시 제공이 되고 있으며, 아래와 같이 크게 2가지 기능을 제공합니다.

  1. Azure Active Directory — Snowflake SSO 를 통한 사용자 인증(SAML)
  2. Azure Active Directory — Snowflake 간 사용자 프로비저닝(SCIM)

1번의 경우 Snowflake UI에서 사용자 인증을 수행 시, AAD에 정의되어 있는 사용자 이름과 패스워드(+MFA) 를 통해 인증이 가능한 기능이며, 2번의 경우 AAD에 정의되어 있는 사용자 이름과 그룹명이 SNOWFLAKE내에 사용자 이름 및 역할로 프로비저닝 되는 기능입니다.

사용자 프로비저닝이 필요한 이유는 1번을 통해서 사용자 인증만 수행한다고 하더라고 실제 사용자는 SNOWFLAKE 내에 존재해야 하기 때문에 이를 수동으로 할 것인지 혹은 SCIM을 통해 자동으로 수행할 것인지의 차이입니다.

Snowflake for AAD(Azure Active Directory)

Azure Active Directory의 경우 Snowflake와 SAML / SCIM 연계를 손쉽게 수행할 수 있는 Application을 제공하고 있습니다.

Snowflake for AAD 설치

Azure Active Directory 에 접속 후 Enterprise Applications 메뉴를 선택 후 Snowflake for AAD 를 설치 합니다.

Snowflake SSO 설정

설치된 Snowflake for AAD를 선택 후 Single sign-on 메뉴의 SAML 설정을 선택합니다.

Snowflake 설정 정보 입력

Basic SAML Configuration의 Edit 메뉴를 선택 후, 아래 2가지 정보를 사용하는 SNOWFLAKE 접속 정보에 맞춰서 입력 합니다.

Identifier 항목에 현재 사용 중인 SNOWFLAKE의 접속 URL을 입력하며, Reply URL에 https://<SNOWFLAKE-URL>/fed/login 이라고 입력 합니다.

Azure AD와 Snowflake 연결을 위한 정보 확인하기

Snowflake for AAD의 3번 항목과 4번 항목에 존재하는 Base64 Certificate와 Login URL / Azure AD Identifier 값을 복사합니다. 이 값들은 모두 Snowflake에서 Security Integration 객체를 생성할 때 사용됩니다.

SNOWFLAKE 내에서 Azure AD 연결 설정하기

Snowflake에 접속 후 아래와 같이 Security Integration 객체를 생성합니다. 이 객체를 생성할 때, SAML2_ISSUER, SAML2_SSO_URL, SAML2_X509_CERT의 값은 앞 단계에서 복사한 Azure AD Identifier, Login URL, Certificate(Base64) 파일 안에 존재하는 값을 맵핑하여 설정합니다.

또한 Snowflake regionless URL(https://<orgname>-<accountname>.snowflakecomputing.com> 형태의 URL을 사용할 경우 아래 2가지 SQL을 실행 합니다.

위 작업을 완료 시, Snowflake와 Azure AD와의 SAML을 통한 SSO 연결이 완료됩니다. Snowflake 접속 시 아래와 같이 SSO을 통해서 접속을 수행할 수 있는 아이콘이 추가된 것을 확인할 수 있습니다.

해당 아이콘을 클릭할 경우, Azure AD 인증을 위한 창이 오픈되면서, Azure AD에 정의되어 있는 사용자명과 패스워드(+MFA)를 통해서 인증을 완료할 수 있습니다.

Azure AD와 Snowflake 사용자 프로비저닝 설정

Azure AD와 Snowflake 간 SSO 인증이 완료된 경우에도 Snowflake 내에는 Azure AD에 정의되어 있는 사용자들이 추가되어 있어야 합니다. (이 경우 Password는 ‘’ 로 설정하여 Snowflake UI에서 직접 로그인을 제한할 수 있습니다)

Snowflake for AAD는 SSO 인증 설정 뿐만 아니라 사용자 프로비저닝을 위한 기능 또한 지원하고 있습니다

SCIM 설정을 위한 토큰 설정(SNOWFLAKE)

SNOWFLAKE에 접속을 수행 한 후 아래와 같이 사용자를 생성할 수 있는 역할 및 Azure AD와 통신을 수행할 수 있는 토큰을 발행합니다.

Snowflake for AAD에 SCIM 설정하기

SSO 설정을 수행했던 Snowflake for AAD 메뉴에서 Provisioning 메뉴를 선택 합니다. 이후 Tenant URL 및 Secret Token 값을 입력 합니다. Tenant URL의 경우 https://<SNOWFLAKE-URL>/scim/v2 형태를 가지게 됩니다.

위와 같이 설정을 완료 한 후, Snowflake for AAD 메뉴에서 사용자 및 그룹을 선택할 경우 해당 사용자 및 그룹은 Snowflake로 자동 생성되어 추가적인 작업 없이 사용자 인증을 완료할 수 있습니다.

Azure AD의 사용자 정보가 Snowflake로 프로비저닝 되는 주기는 현재 40분으로 되어 있으며, 이는 현재 변경이 불가능한 것으로 보입니다. 다만 UI 내에서 메뉴얼하게 사용자 및 그룹을 지정하여 온디맨드로 프로비저닝을 할 수 있는 기능도 제공하고 있습니다.

이상 Snowflake와 Azure Active Direcoty 연계를 위한 방법에 대해서 소개드렸습니다.

감사합니다.

--

--