1. 개념
- Federated authentication은 안전한 SSO(Single Sign-On) 로 Snowflake에 연결하게 해준다.
- SSO를 사용하면 사용자는 Snowflake에 직접 인증하지 않고 제3자 IdP로 인증한다.
- Snowflake는 인증 책임을 SAML 2.0 호환 외부 IdP에 위임할 수 있다.
2. 핵심 구성 요소 (⭐ 중요)
| 구성 요소 | 역할 |
|---|
| SP (Service Provider) | 연합 환경에서 Snowflake가 SP 역할을 한다. |
| IdP (Identity Provider) | 사용자 자격 증명·프로필 정보를 생성·관리하고, SP에 대한 SSO 접근을 위해 사용자를 인증하는 외부의 독립 주체 |
3. 로그인 흐름
[Snowflake Interface] SSO 버튼 클릭
↓
[IdP] IdP 자격 증명 입력 → Snowflake 애플리케이션 클릭
↓
[Snowflake Interface] 로그인 성공
- 사용자가 IdP(Okta, Entra ID 또는 커스텀 IdP)로 인증에 성공하면, IdP가 Snowflake에 SAML 응답을 보내 세션을 시작한다.
4. 지원 IdP
- 강의 자료: Okta와 ADFS IdP에 네이티브 지원 (Image 1)
- 공식 문서(현행): Okta와 Microsoft Entra ID가 Snowflake에 네이티브 지원을 제공한다.
- 공통: 대부분의 SAML 2.0 호환 벤더를 IdP로 지원한다.
- Okta/Entra ID 외의 IdP를 쓰려면 IdP에 Snowflake용 커스텀 애플리케이션을 정의해야 한다.
⚠️ 강의는 "Okta + ADFS"라고 하나, 현행 공식 문서는 네이티브 지원을 "Okta + Entra ID"로 명시. 시험에서는 Okta가 핵심, ADFS/Entra ID 표현은 자료에 따라 갈릴 수 있으니 둘 다 인지.
5. 설정 방법 (⭐⭐ — 구버전 vs 신버전)
[구버전 — Deprecated] 계정 파라미터 2개
| 파라미터 | 역할 |
|---|
SAML_IDENTITY_PROVIDER | Federated Auth 설정 중 IdP를 지정 (certificate, ssoUrl, type, label) |
SSO_LOGIN_PAGE | Snowflake 메인 로그인 페이지에서 SP-initiated SSO 버튼 활성화 (= TRUE) |
ALTER ACCOUNT SET SAML_IDENTITY_PROVIDER = '{...}';
ALTER ACCOUNT SET SSO_LOGIN_PAGE = TRUE;
[신버전 — 권장] Security Integration
- SAML2 security integration이 더 이상 사용되지 않는(deprecated) SAML_IDENTITY_PROVIDER 계정 파라미터를 대체한다.
- ACCOUNTADMIN 역할로 CREATE SECURITY INTEGRATION 명령을 실행한다.
CREATE SECURITY INTEGRATION <name>
TYPE = SAML2
ENABLED = { TRUE | FALSE }
SAML2_ISSUER = '<string_literal>'
SAML2_SSO_URL = '<string_literal>'
SAML2_PROVIDER = '<string_literal>'
SAML2_X509_CERT = '<string_literal>';
마이그레이션 (구 → 신)
- 기존 단일 IdP 환경이 deprecated된 SAML_IDENTITY_PROVIDER 파라미터를 쓴다면, SYSTEM$MIGRATE_SAML_IDP_REGISTRATION 함수로 SAML security integration으로 마이그레이션해야 한다.
SYSTEM$MIGRATE_SAML_IDP_REGISTRATION('<integration_name>', '<issuer>')
- 이 함수는 SAML_IDENTITY_PROVIDER 파라미터의 데이터를 사용해 새 security integration을 생성한다. 해당 파라미터가 없으면 함수는 실패한다.
- 단, Snowflake는 구 파라미터를 사용하는 구현이 있는 한 계속 지원한다.
6. SP-initiated vs IdP-initiated (공식 문서 보강)
- IdP-initiated SSO는 Snowflake 측 구성이 필요 없으며, 사용자에게 접근 방법(예: 내부 포털)만 알려주면 된다.
- SAML2_ENABLE_SP_INITIATED 속성이 Snowflake-initiated(SP-initiated) SSO를 활성화한다.
- SAML2_SP_INITIATED_LOGIN_PAGE_LABEL 속성은 IdP를 식별하는 문자열을 정의하며, 이 문자열이 Snowflake 로그인 페이지에 표시된다.
7. 핵심 요약 (필수 암기)
- ✅ Snowflake = SP, 외부 = IdP, 프로토콜 = SAML 2.0
- ✅ 네이티브 IdP = Okta (+ Entra ID / ADFS)
- ✅ 구버전 설정 =
SAML_IDENTITY_PROVIDER + SSO_LOGIN_PAGE (둘 다 ALTER ACCOUNT, deprecated)
- ✅ 신버전 설정 =
CREATE SECURITY INTEGRATION TYPE = SAML2 (ACCOUNTADMIN, 권장)
- ✅ 마이그레이션 함수 =
SYSTEM$MIGRATE_SAML_IDP_REGISTRATION
- ✅
SSO_LOGIN_PAGE = TRUE → 로그인 페이지에 SSO 버튼 활성화