연합 인증에 여러 ID 공급자 사용하기
연합 인증에 여러 ID 공급자 사용하기
여러 ID 공급자(IdP)로 사용자가 인증하도록 Snowflake를 구성할 수 있어요.
여러 IdP를 사용하는 연합 환경을 구현하는 것은 다음 단계로 구성돼요.
- 식별자 우선 로그인 흐름 활성화(이 주제에서)
- 각 ID 공급자 구성(SAML) 또는 IdP 애플리케이션 등록(OIDC, OpenID Connect(OIDC) 연합 인증 구성 참고)
- IdP당 보안 통합 하나 생성: SAML IdP용 SAML2 보안 통합 또는 OIDC IdP용 OIDC 보안 통합
- 사용자를 IdP와 연결(이 주제에서)
참고(Note): 여러 IdP를 사용하는 환경을 구현할 때 다음을 유의해요.
- 각 IdP에는 해당하는 SAML2 또는 OIDC 보안 통합이 있어야 해요. 더 이상 사용되지 않는 SAML_IDENTITY_PROVIDER 파라미터를 사용하는 기존 단일 IdP 환경이 있다면 SYSTEM$MIGRATE_SAML_IDP_REGISTRATION 함수를 사용해 SAML 보안 통합으로 마이그레이션해야 해요.
- 현재 일부 Snowflake 드라이버만 여러 ID 공급자 사용을 지원해요. 이러한 드라이버에는 JDBC, ODBC, Python이 포함돼요.
출처: Snowflake 문서
본문
식별자 우선 로그인 활성화
계정의 연합 환경이 여러 IdP를 사용할 때 Snowflake는 사용자에게 인증 옵션을 제시하기 전에 사용자와 연결된 IdP를 결정할 수 있어야 해요. 이 흐름에서 Snowflake는 사용자에게 이메일 주소나 사용자 이름만 요청한 다음, 사용자를 식별한 후 인증 방법을 표시해요. 사용자와 연결된 IdP만 인증 옵션으로 나타나요.
여러 IdP를 사용한다면 식별자 우선 로그인 흐름을 활성화해야 해요. 식별자 우선 로그인을 활성화하려면 ENABLE_IDENTIFIER_FIRST_LOGIN 파라미터를 TRUE로 설정해요.
- Snowsight에 로그인해요.
- 내비게이션 메뉴에서 Projects » Worksheets를 선택해요.
- 다음 SQL 문을 실행해요.
USE ROLE ACCOUNTADMIN;
ALTER ACCOUNT SET ENABLE_IDENTIFIER_FIRST_LOGIN = true;
식별자 우선 로그인 흐름에 대한 자세한 내용은 식별자 우선 로그인을 참고해요.
사용자를 IdP와 연결
여러 IdP가 있는 환경에서 사용자를 IdP와 연결하는 방식을 선택할 수 있어요. IdP와 연결된 보안 통합, 인증 정책, 또는 두 방법을 결합해 사용할 수 있어요.
보안 통합(Security Integration):
각 IdP와 연결된 SAML2 또는 OIDC 보안 통합의 ALLOWED_USER_DOMAINS 및 ALLOWED_EMAIL_PATTERNS 속성을 사용해요. 이 구성에서 사용자는 자신의 EMAIL이 보안 통합의 이메일 주소 도메인이나 패턴과 일치할 때만 IdP를 인증 옵션으로 보게 돼요.
인증 정책(Authentication Policy):
인증 정책의 SECURITY_INTEGRATIONS 속성을 사용해 사용자에게 사용 가능한 보안 통합을 지정해요. 이 구성에서 인증 정책은 전체 계정 또는 개별 사용자에게 할당돼요. 사용자는 인증 정책에 지정된 보안 통합과 연결된 IdP로만 인증할 수 있어요.
사용자가 사용하도록 허용된 ID 공급자만 보게 하려면 인증 정책을 여러 개 만들고 적절한 정책을 사용자에게 할당해요.
인증 정책으로 여러 IdP를 구현하는 예시는 계정에서 여러 ID 공급자의 인증 허용을 참고해요.
결합(Combined):
보안 통합과 인증 정책 방법을 결합해 여러 IdP가 있는 환경에서 사용자가 인증하는 방식을 더욱 세분화할 수 있어요.
두 방법을 모두 사용하면 Snowflake는 먼저 사용자의 로그인을 통제하는 인증 정책과 연결된 보안 통합을 평가해요. 보안 통합을 식별한 후 사용자의 EMAIL을 ALLOWED_USER_DOMAINS 및 ALLOWED_EMAIL_PATTERNS 속성에 따라 통합 중 하나와 일치시켜요. Snowflake는 사용자의 EMAIL과 일치하는 보안 통합에 대해서만 IdP 옵션을 표시해요.
같은 issuer ID를 사용하는 Microsoft Entra ID와 여러 SAML2 보안 통합 사용
이 섹션은 사용자가 공개 또는 개인 issuer URL을 통해 SSO로 인증할 수 있게 Snowflake와 Microsoft Entra ID를 구성하는 방법을 안내해요. Microsoft Entra ID와 함께 두 개의 서로 다른 SAML2 보안 통합을 사용해 이 경험을 구현할 수 있어요. 각 issuer URL에 다른 애플리케이션 ID를 추가해 Microsoft Entra ID가 공개·개인 issuer URL을 구분하도록 구성할 수 있어요.
계속하기 전에 식별자 우선 로그인 흐름을 활성화해야 해요.
같은 issuer ID로 Microsoft Entra ID와 여러 SAML2 보안 통합을 사용하는 방법은 아래 섹션을 따라요.
- Microsoft Entra ID가 Microsoft Entra Identifier URL에 애플리케이션 ID를 추가하도록 구성
- Login URL, Microsoft Entra identifier, 애플리케이션 ID 수집
- 공개·개인 SAML2 보안 통합 생성
Microsoft Entra ID가 Microsoft Entra Identifier URL에 애플리케이션 ID를 추가하도록 구성
- Microsoft Azure에 로그인해요.
- Azure services 아래에서 Microsoft Entra ID를 선택해요.
- 왼쪽 내비게이션에서 Manage » Enterprise applications을 선택해요.
- 애플리케이션을 선택해요.
- 왼쪽 내비게이션에서 Manage » Single sign-on을 선택해요.
- Attributes & Claims에서 Edit를 선택해요.
- Additional claims 아래에서 Advanced settings을 펼쳐요.
- Advanced SAML claims options 옆에 있는 Edit을 선택해요.
- 오른쪽에 패널이 나타나요.
- Append application ID to issuer을 선택해요.
Login URL, Microsoft Entra identifier, 애플리케이션 ID 수집
- Microsoft Entra ID를 구성했는지 확인해요.
- 왼쪽 내비게이션에서 Manage » Single sign-on을 선택해요.
- Set up <your application name> 아래에서 다음 값을 나중을 위해 저장해요.
- Login URL
- Microsoft Entra Identifier
- 왼쪽 내비게이션에서 Overview을 선택해요.
- Properties 아래에서 Application ID를 나중을 위해 저장해요.
- 추가 애플리케이션에 대해 반복해요.
공개·개인 SAML2 보안 통합 생성
- Microsoft Entra ID를 구성했는지 확인해요.
- Login URL, Microsoft Entra identifier, 애플리케이션 ID를 수집했는지 확인해요.
- Snowsight에 로그인해요.
- 내비게이션 메뉴에서 Projects » Worksheets를 선택해요.
- CREATE INTEGRATION 권한이 있는 역할로 전환해요.
- 다음 SQL 문을 실행해 SAML2 보안 통합을 만들어요.
CREATE OR REPLACE SECURITY INTEGRATION entra_id_public
TYPE = SAML2
ENABLED = TRUE
SAML2_ISSUER = '<microsoft_entra_identifier>/<application_id>'
SAML2_SSO_URL = '<login_url>'
SAML2_PROVIDER = 'CUSTOM'
SAML2_X509_CERT = 'MIIC...TAs/'
SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = 'Entra ID SSO Public'
SAML2_ENABLE_SP_INITIATED = TRUE
SAML2_SNOWFLAKE_ACS_URL = 'https://<organization_name>-<account_name>.snowflakecomputing.com/fed/login'
SAML2_SNOWFLAKE_ISSUER_URL = 'https://<organization_name>-<account_name>.snowflakecomputing.com';
다음 플레이스홀더는 앞서 수집한 값으로 대체돼요.
| 플레이스홀더 | 예시 값 |
|---|---|
| <login_url> | https://login.microsoftonline.com/91ccae45-d439-xxxx-xxxx-e22c06bfe4f9/saml2 |
| <microsoft_entra_identifier> | https://sts.windows.net/91ccae45-d439-xxxx-xxxx-e22c06bfe4f9 |
| <application_id> | 456xyz00-4567-4567-4567-4567xyz5678 |
| <organization_name> | EXAMPLE-USER12_AA12 |
| <account_name> | MSMITH |
- SAML2_ISSUER 파라미터의 Microsoft Entra Identifier에 개인 애플리케이션 ID를 추가해 또 다른 SAML2 보안 통합을 만들어요.
더 알아보기 (Learn more)
- SAML 2.0 연합 인증 구성 — SAML2 보안 통합
- 각 ID 공급자 구성 — IdP 설정
- 인증 정책 — 인증 정책과 다중 IdP