Snowflake Open Catalog가 SSO를 사용하도록 구성

Snowflake Open Catalog가 SSO를 사용하도록 구성

일반적으로 사용 가능(GA) — 정부 리전에서는 사용할 수 없어요.

이 주제는 Snowflake Open Catalog가 SAML 기반 SSO를 사용하도록 구성하는 방법을 보여줘요.

Snowflake Open Catalog가 SSO를 사용하도록 구성하기 전에 Open Catalog용 IdP를 구성해야 해요. 지침은 다음 주제를 참조하세요:

출처: Configure Snowflake Open Catalog to use SSO

본문

시작하기 전에

Snowflake Open Catalog를 SSO용으로 설정하려면 전체 Open Catalog 계정 식별자가 필요해요. 여기에는 Snowflake 조직 이름과 Open Catalog 계정 이름이 포함돼요. 예: <orgname>.<my-snowflake-open-catalog-account-name>.

Open Catalog용 Snowflake CLI 연결 만들기

Snowflake Open Catalog가 SSO를 사용하도록 구성하려면 Open Catalog용 Snowflake CLI 연결이 필요해요. 이 연결을 만들려면 다음 단계를 따르세요. 아직 Snowflake CLI가 설치되지 않았다면 Snowflake CLI 설치를 참조하세요.

이 연결을 만들려면 서비스 관리자 권한이 있는 Open Catalog 사용자여야 해요. 서비스 관리자 권한에 대한 정보는 서비스 관리자 역할을 참조하세요.

Snowflake Open Catalog용 Snowflake CLI 연결 추가

SSO를 활성화하려는 Snowflake Open Catalog 계정에 대한 연결을 추가하세요.

  • 다음 값으로 연결 추가를 수행하세요. 다른 모든 매개변수는 Enter를 눌러 값을 지정하지 않고 건너뛰세요.
연결 구성 매개변수 값
Name for this connection 연결의 이름을 지정. 예: myopencatalogconnection.
Account name <orgname>-<my-snowflake-open-catalog-account-name> 형식으로 Snowflake 조직 이름 다음에 Open Catalog 계정 이름을 지정. 예: ABCDEFG-MYACCOUNT1. 이 이름을 찾으려면 시작하기 전에를 참조.
Username Open Catalog 사용자 이름을 지정. 예: jsmith.
Password [optional] Open Catalog용 연결을 만들 때 이 매개변수는 선택이 아닙니다. Open Catalog 비밀번호를 입력하세요. 예: MyPassword123456789.
Role for the connection [optional] Open Catalog용 연결을 만들 때 이 매개변수는 선택이 아닙니다. POLARIS_ACCOUNT_ADMIN을 입력해야 해요.

Snowflake CLI 연결 테스트

  • CLI 연결을 테스트하려면 myopencatalogconnection의 연결을 테스트하는 다음 예제를 따르세요:
snow connection test -c myopencatalogconnection

응답은 다음과 같아야 해요:

+------------------------------------------------------------------------------+
| key              | value                                                     |
|----------------------------+-------------------------------------------------|
| Connection name  | myopencatalogconnection                                   |
| Status           | OK                                                        |
| Host             | ABCDEFG-MYACCOUNT1.snowflakecomputing.com                 |
| Account          | ABCDEFG-MYACCOUNT1                                        |
| User             | jsmith                                                    |
| Role             | POLARIS_ACCOUNT_ADMIN                                     |
| Database         | not set                                                   |
| Warehouse        | not set                                                   |
+------------------------------------------------------------------------------+

Snowflake Open Catalog용 Snowflake CLI 연결을 기본값으로 설정

사용 중인 연결에 항상 필요한 POLARIS_ACCOUNT_ADMIN 역할이 부여되도록 보장하려면 Open Catalog용으로 만든 Snowflake CLI 연결을 기본 연결로 설정할 수 있어요. 기본 연결에 대한 자세한 내용은 label-cli_set_default_connection을 참조하세요.

  1. myopencatalogconnection 연결을 기본값으로 설정하는 다음 예제를 따르세요:
    snow connection set-default myopencatalogconnection
    
  2. 올바른 사용자와 역할을 사용 중인지 확인하려면 다음을 실행하세요:
    snow sql -q "Select current_user(); select current_role();"
    
    응답은 Open Catalog 사용자 이름을 반환해야 하며 CURRENT ROLE은 POLARIS_ACCOUNT_ADMIN이어야 해요.
+----------------+
| CURRENT_USER() |
|----------------|
| JSMITH        |
+----------------+
select current_role();
+-----------------------+
| CURRENT_ROLE()        |
|-----------------------|
| POLARIS_ACCOUNT_ADMIN |
+-----------------------+

보안 통합 만들기

보안 통합을 만들려면 Snowflake CLI 연결을 사용해 CREATE SECURITY INTEGRATION 명령을 실행하세요. Auth0 보안 통합 또는 Okta 보안 통합을 만들 수 있어요.

기본값으로 설정한 Snowflake CLI 연결에 POLARIS_ACCOUNT_ADMIN 역할이 부여되지 않았다면 명령에 다음 문을 포함해야 해요: USE ROLE POLARIS_ACCOUNT_ADMIN.

Auth0 보안 통합

  • Auth0용 SAML 보안 통합을 만들려면 Snowflake CLI에서 다음 명령을 실행하세요:
snow sql -q "create security integration <Name>
    type = saml2
    enabled = true
    saml2_issuer = 'urn:<Auth0 Domain>'
    saml2_sso_url = '<SAML Protocol URL>'
    saml2_provider = 'Custom'
    saml2_x509_cert='<Certificate from Auth0>'
    saml2_sp_initiated_login_page_label = 'Auth0'
    saml2_enable_sp_initiated = true
    saml2_snowflake_acs_url = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.com/fed/login'
    saml2_snowflake_issuer_url = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.com'
    saml2_requested_nameid_format = 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress';"

여기서:

  • <Name>은 보안 통합의 식별자를 지정하며 계정에 대해 고유해야 해요.
  • <Auth0 Domain>은 Auth0 콘솔에서 복사한 값이에요. 이 값을 찾으려면 Auth0에서 Applications > Applications > Snowflake Open Catalog 애플리케이션 > Settings > Basic Information의 Domain 필드로 이동하세요.
  • <SAML Protocol URL>은 Auth0 콘솔에서 복사한 값이에요. 이 값을 찾으려면 Auth0에서 Applications > Applications > Snowflake Open Catalog 애플리케이션 > Settings > Advanced settings > Endpoints 탭의 SAML Protocol URL 필드로 이동하세요.
  • <Certificate from Auth0>은 Auth0 콘솔에서 복사한 값이에요. 이 값을 찾으려면 Auth0에서 Applications > Applications > Snowflake Open Catalog 애플리케이션 > Settings > Advanced Settings > Certificate 탭의 Signing Certificates 필드로 이동하세요. <BEGIN CERTIFICATE>와 <END CERTIFICATE> 사이의 값을 복사하세요.
  • <orgname>은 Snowflake 조직의 이름이에요. 이 이름을 찾으려면 시작하기 전에를 참조하세요.
  • <my-snowflake-open-catalog-account-name>은 Snowflake Open Catalog 계정의 이름이에요. 이 이름을 찾으려면 시작하기 전에를 참조하세요.

Okta 보안 통합

  • Okta용 SAML 보안 통합을 만들려면 Snowflake CLI에서 다음 명령을 실행하세요:
snow sql -q "CREATE SECURITY INTEGRATION <Name>
    TYPE = SAML2
    ENABLED = TRUE
    SAML2_ISSUER = '<ENTITY ID>'
    SAML2_SSO_URL = '<IDP SSO URL>'
    SAML2_PROVIDER = 'OKTA'
    SAML2_X509_CERT='<Authentication Certificate>'
    SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = 'OKTA SSO'
    SAML2_ENABLE_SP_INITIATED = TRUE
    SAML2_SNOWFLAKE_ACS_URL = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.com/fed/login'
    SAML2_SNOWFLAKE_ISSUER_URL = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.com';"

여기서:

  • <Name>은 보안 통합의 식별자를 지정하며 계정에 대해 고유해야 해요.
  • <ENTITY ID>는 Okta에서 애플리케이션을 만들 때 복사한 Entity ID 값이에요.
  • <IDP SSO URL>은 Okta에서 애플리케이션을 만들 때 복사한 IDP SSO URL 값이에요.
  • <Authentication Certificate>은 Okta에서 애플리케이션을 만들 때 복사한 IDP Authentication Certificate 값이에요.
  • <orgname>은 Snowflake 조직의 이름이에요. 이 이름을 찾으려면 시작하기 전에를 참조하세요.
  • <my-snowflake-open-catalog-account-name>은 Snowflake Open Catalog 계정의 이름이에요. 이 이름을 찾으려면 시작하기 전에를 참조하세요.

보안 통합 확인

한 번에 하나의 보안 통합만 사용할 수 있으며, 사용하려는 통합이 활성화되어 있어야 해요.

기본값으로 설정한 Snowflake CLI 연결에 POLARIS_ACCOUNT_ADMIN 역할이 부여되지 않았다면 명령에 다음 문을 포함해야 해요: USE ROLE POLARIS_ACCOUNT_ADMIN.

  1. 사용하려는 보안 통합이 활성화되어 있는지 확인하려면 다음 명령을 실행하세요:
    snow sql -q "desc security integration <saml2-security-integration-name>;"
    
    응답에 SAML2_ENABLE_SP_INITIATED=true가 포함되면 SAML2 보안 통합이 활성화된 것이에요.
  2. 선택 사항: 응답에 SAML2_ENABLE_SP_INITIATED=false가 포함되면 다음 명령을 실행해 활성화하세요:
    snow sql -q "ALTER SECURITY INTEGRATION <saml-security-integration-name> SET ENABLED = TRUE;"
    

Open Catalog 계정에서 사용자 만들기

사용자에게 SSO가 작동하려면 IdP에서 만든 사용자에 해당하는 Open Catalog 사용자를 만들어야 해요.

사용자를 만들려면 Snowflake CLI를 사용해야 해요. Open Catalog UI로 사용자를 만들면 비밀번호를 지정해야 하며, 이로 인해 사용자가 SSO 또는 Open Catalog 자격 증명으로 로그인할 수 있게 돼요.

  • 사용자를 만들려면 다음 명령을 실행하세요:
    snow sql -q "CREATE USER \"<login-name>\" EMAIL='<email>';"
    
    여기서:
    • <login-name>은 다음 중 하나와 일치해야 해요:
      • Auth0에서 사용자에 대해 지정한 Email.
      • Okta에서 사용자에 대해 지정한 Username.
    • <email>은 사용자의 이메일 주소예요. Auth0를 사용한다면 이 값은 <login-name>과 일치해요.
    • 예를 들어:
    snow sql -q "CREATE USER \"[email protected]\" EMAIL='[email protected]';"
    
  • 사용자를 올바르게 설정했는지 확인하려면 다음 명령을 실행하세요:
    snow sql -q "show users;"
    
    응답에서 LOGIN_NAME 열의 값은 Auth0의 Email 또는 Okta의 Username과 일치해야 해요.

더 알아보기