연합 인증에 여러 ID 공급자 사용하기

연합 인증에 여러 ID 공급자 사용하기

여러 ID 공급자(IdP)로 사용자가 인증하도록 Snowflake를 구성할 수 있어요.

여러 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를 추가하도록 구성

  • 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 보안 통합 생성

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)