고급 SAML SSO기능

이 항목에서는 고급 SAML SSO 기능을 Snowflake에서 구성 및 사용하는 방법에 대해 설명합니다.

이 항목의 내용:

개요

SAML2 보안 통합은 Snowflake에서 고급 SAML SSO 기능을 사용하기 위한 토대입니다.

SAML2 보안 통합을 구성한 후에는 보안 통합을 사용하여 다음을 수행할 수 있습니다.

  • SAML SSO 구성 관리.

  • SAML 어설션 암호화.

  • SAML 요청에 서명.

  • SAML NameID 형식 구성.

  • 보안 통합 메타데이터 내보내기.

  • 초기 SSO 인증 흐름 동안 Snowflake에 강제 재인증.

참고

클라이언트 리디렉션 기능이 있는 SAML SSO를 사용할 계획인 경우 이 항목의 SAML2 보안 통합을 사용해야 합니다.

자세한 내용은 클라이언트 연결 리디렉션하기 섹션을 참조하십시오.

SAML2 보안 통합으로 마이그레이션하기

SAML2 보안 통합은 Snowflake에 ID 공급자(즉, IdP) 정보를 지정하며 SAML_IDENTITY_PROVIDER 매개 변수에 포함된 정보를 대체합니다.

Snowflake에서는 IdP를 지정하기 위한 2가지 옵션을 제공합니다.

  1. 시스템 함수를 사용하여 기존 IdP 정보를 보안 통합으로 마이그레이션.

  2. 보안 통합을 생성하거나 IdP 정보를 포함하도록 바꾸기.

옵션 1은 SAML_IDENTITY_PROVIDER 매개 변수를 기반으로 Snowflake에서 페더레이션 인증을 사용하도록 IdP가 구성된 경우에 권장됩니다.

옵션 2는 계정에 SAML_IDENTITY_PROVIDER 매개 변수가 없는 경우에 권장됩니다.

옵션 1: 시스템 함수 사용

SYSTEM$MIGRATE_SAML_IDP_REGISTRATION 시스템 함수를 사용하여 기존 IdP 구성을 SAML_IDENTITY_PROVIDER 매개 변수에서 보안 통합으로 마이그레이션할 수 있습니다.

이 시스템 함수를 실행한 후에는 SAML SSO를 구성 및 관리하기 위해 SAML_IDENTITY_PROVIDER 매개 변수를 사용할 필요가 없습니다. 대신, SAML2 보안 통합 관리 에서와 같이 SAML2 보안 통합을 사용하면 됩니다.

참고

원하는 경우, 시스템 함수를 실행하기 전 다음 문을 실행하여 SAML_IDENTITY_PROVIDER의 구성을 확인할 수 있습니다.

show parameters like 'SAML_IDENTITY_PROVIDER' in account;

옵션 2: 보안 통합 생성

Snowflake에서 페더레이션 인증을 사용하도록 기존 IdP가 구성되지 않고 Snowflake에서 IdP가 페더레이션 인증을 사용하도록 구성하려면, CREATE SECURITY INTEGRATION 을 사용하여 TYPE = SAML2 인 보안 통합을 생성합니다.

중요

SSO에 대해 IdP를 구성 할 때 Snowflake 계정용 URL을 제공해야 합니다. 이 URL의 형식 은 보안 통합의 SAML2_SNOWFLAKE_ISSUER_URLSAML2_SNOWFLAKE_ACS_URL 매개 변수에 있는 URL과 일치해야 합니다. 보안 통합을 생성할 때 이러한 매개 변수를 정의하지 않으면 기본적으로 계정의 레거시 URL 로 설정됩니다.

예: 비공개 연결로 계정 이름 URL을 사용하는 IdP

create security integration my_idp
  type = saml2
  enabled = true
  saml2_issuer = 'https://example.com'
  saml2_sso_url = 'http://myssoprovider.com'
  saml2_provider = 'ADFS'
  saml2_x509_cert='my_x509_cert'
  saml2_sp_initiated_login_page_label = 'my_idp'
  saml2_enable_sp_initiated = true
  saml2_snowflake_issuer_url = 'https://<orgname>-<account_name>.privatelink.snowflakecomputing.com'
  saml2_snowflake_acs_url = 'https://<orgname>-<account_name>.privatelink.snowflakecomputing.com/fed/login';

/fed/loginSAML2_SNOWFLAKE_ACS_URL 매개 변수의 URL에 추가됩니다.

Snowflake 계정의 URL 형식에 대한 자세한 내용은 URL을 사용하여 연결하기 섹션을 참조하십시오.

SAML 어설션 암호화

Snowflake를 사용하면 IdP에 대한 사용자 인증 완료 후 조직의 IdP가 암호화된 SAML2 어설션을 Snowflake로 전송할 수 있습니다.

암호화된 SAML2 어설션은 보안 정보를 편리하게 전송할 수 있도록 해줄 뿐만 아니라 사용자가 페더레이션된 SSO를 통해 Snowflake에 액세스할 수 있습니다. 고객은 Snowflake의 공용 인증서를 사용하여 SAML 어설션을 암호화할 수 있습니다. 고객 IdP로부터 암호화된 어설션을 수신하면 Snowflake는 개인 키를 사용하여 암호화된 어설션의 암호를 해제합니다. Snowflake는 절대로 개인 키를 내보내거나 사용할 수 있도록 하지 않습니다.

암호화된 SAML 어설션은 SAML2 보안 통합에 통합됩니다. 사용자는 기존 SAML2 보안 통합을 사용하거나 새 SAML2 보안 통합을 생성할 수 있습니다.

암호화된 SAML 어설션을 구성 및 사용하는 일반적인 절차는 다음과 같습니다.

  1. SAML2 보안 통합을 생성합니다.

  2. Snowflake에서 공용 인증서를 PEM 형식으로 내보냅니다.

  3. SAML IdP로 공용 인증서를 가져옵니다.

  4. Snowflake에 연결합니다.

암호화된 SAML 어설션 절차

암호화된 SAML 어설션을 구성하고 Snowflake에 연결하기 위한 절차는 다음과 같습니다.

1단계: SAML2 보안 통합 생성 또는 마이그레이션

Snowflake에 기존 SAML 설정이 있고 이 기능을 사용하려면, 다음 SQL 문을 실행하여 SAML2 보안 통합으로 마이그레이션할 수 있습니다. 이 시스템 함수에 대한 자세한 내용은 SYSTEM$MIGRATE_SAML_IDP_REGISTRATION 을 참조하십시오.

select system$migrate_saml_idp_registration('<integration_name>', '<issuer>');

아니면, 다음 SQL 문을 실행하여 SAML2 보안 통합을 생성합니다. 자세한 내용은 CREATE SECURITY INTEGRATION (SAML2) 섹션을 참조하십시오.

create security integration my_idp
    type = saml2
    enabled = true
    saml2_issuer = 'https://example.com'
    saml2_sso_url = 'http://myssoprovider.com'
    saml2_provider = 'ADFS'
    saml2_x509_cert='my_x509_cert'
    saml2_sp_initiated_login_page_label = 'my_idp'
    saml2_enable_sp_initiated = true;

2단계: Snowflake에서 공용 인증서 내보내기

Snowflake에서 공용 인증서를 내보내려면 다음 단계를 수행합니다.

  1. SAML2 통합에서 다음 SQL 문을 실행하여 SAML2_SNOWFLAKE_X509_CERT 값(7행)을 가져옵니다.

    desc security integration my_idp;
    
  2. 값을 PEM 형식으로 저장합니다. BEGIN CERTIFICATEEND CERTIFICATE 구분 기호가 포함되었는지 확인합니다. 잘린 인증서(PEM 형식)의 대표적인 예는 다음과 같습니다.

    -----BEGIN CERTIFICATE-----
    MIICrTCCAZWgAwIBAgIJAOF6EPk93wjlMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
    BAMMC1RFU1RBQ0NPVU5UMB4XDTIwMDE....
    -----END CERTIFICATE-----
    

인증서 서명 요청(CSR) 생성 — 선택 사항

기본적으로 Snowflake의 SAML2 보안 통합에서는 SAML IdP용 자체 서명 인증서를 사용하여 SAML 어설션을 암호화합니다. 조직에서 인증 기관(CA)에서 발급한 인증서를 사용해야 하는 경우에는 다음 단계를 수행하십시오.

  1. 시스템 함수 SYSTEM$GENERATE_SAML_CSR 을 사용하여 Snowflake에서 인증서 서명 요청(CSR)을 생성합니다.

  2. 선택한 CA에 CSR을 입력하여 인증서를 발급합니다.

  3. BEGIN CERTIFICATEEND CERTIFICATE 구분 기호를 제외하고 다음 ALTER 문을 사용하여 SAML 통합에 Base64로 인코딩된 인증서를 업로드합니다.

    alter security integration my_idp set SAML2_SNOWFLAKE_X509_CERT = 'AX2bv...';
    

그러면 함수를 통해 생성된 CSR을 사용하는 해당 개인 키에 대한 인증서를 Snowflake에 업로드할 수 있습니다.

3단계: SAML IdP 구성

PEM 형식으로 저장된 인증서를 조직의 IdP에 SAML 암호화 인증서로 업로드합니다.

IdP를 구성하여 Snowflake 서비스 공급자(SP)용 SAML 어설션을 암호화합니다.

4단계: Snowflake에 연결

IdP를 구성한 후에는 다음 작업을 수행합니다.

  • IdP 설정을 확인합니다.

  • Snowflake에서 사용자를 생성하고 역할을 할당합니다.

  • 사용자가 IdP에서 시작 또는 SP에서 시작하는 SSO를 통해 Snowflake에 연결하는지 결정합니다.

    • IdP에서 시작하는 SSO의 경우 사용자에게 Snowflake 액세스 방법(예: 내부 포털에 액세스)을 알립니다.

    • SP에서 시작하는 SSO(즉, 사용자가 Snowflake에 액세스한 후 고객 IdP로 리디렉션)의 경우 계정 매개 변수 SSO_LOGIN_PAGE 를 true로 설정하여 Snowflake에서 시작하는 SSO를 활성화합니다. ACCOUNTADMIN 역할의 사용자로 다음 문을 실행합니다.

      use role accountadmin;
      
      alter account set SSO_LOGIN_PAGE = true;
      
  • 페더레이션 인증 관리하기/사용하기 에서와 같이 Snowflake에 액세스합니다.

서명된 SAML 요청

서명된 SAML 요청을 Snowflake에서 IdP로 전송하여 Snowflake가 인증 서비스 공급자인지 확인합니다. Snowflake를 확인하려면, IdP가 SAML2 보안 통합에 저장된 인증서를 사용하도록 구성하여 SAML 요청의 출처가 Snowflake를 가장한 서드 파티가 아닌 Snowflake인지 확인합니다.

서명된 SAML 요청이 SAML2 보안 통합에 통합되었습니다. type = saml2 의 기존 보안 통합을 사용하거나 서명된 SAML 요청을 사용하는 새 보안 통합을 생성할 수 있습니다.

IdP가 서명된 SAML 요청의 수락을 지원하는 경우 서명된 SAML 요청을 구성 및 사용하기 위한 일반 절차는 다음과 같습니다.

  1. 보안 통합을 생성하거나 업데이트합니다.

  2. SAML2 보안 통합을 업데이트합니다.

  3. IdP가 서명된 SAML 요청을 수락하도록 구성합니다.

  4. Snowflake에 연결합니다.

서명된 SAML 요청 절차

서명된 SAML 요청을 구성하고 Snowflake에 연결하기 위한 절차는 다음과 같습니다.

1단계: SAML2 보안 통합 생성 또는 마이그레이션

Snowflake에 기존 SAML 설정이 있고 이 기능을 사용하려면, 다음 SQL 문을 실행하여 SAML2 보안 통합으로 마이그레이션할 수 있습니다. 이 시스템 함수에 대한 자세한 내용은 SYSTEM$MIGRATE_SAML_IDP_REGISTRATION 을 참조하십시오.

select system$migrate_saml_idp_registration('<integration_name>', '<issuer>');

아니면, 다음 SQL 문을 실행하여 SAML2 보안 통합을 생성합니다. 자세한 내용은 CREATE SECURITY INTEGRATION (SAML2) 섹션을 참조하십시오.

create security integration my_idp
    type = saml2
    enabled = true
    saml2_issuer = 'https://example.com'
    saml2_sso_url = 'http://myssoprovider.com'
    saml2_provider = 'ADFS'
    saml2_x509_cert='my_x509_cert'
    saml2_sp_initiated_login_page_label = 'my_idp'
    saml2_enable_sp_initiated = true;

2단계: SAML2 보안 통합 업데이트

Snowflake에서 서명된 요청을 사용하려면 Snowflake에서 다음을 수행해야 합니다.

  • 요청에 서명하도록 보안 통합을 활성화합니다.

  • 다음 단계에서 사용하기 위해 saml2_snowflake_x509_cert 의 값을 저장합니다.

계정 관리자(즉, ACCOUNTADMIN 역할 사용자)로 다음 문을 실행합니다.

-- update the security integration

alter security integration my_idp set SAML2_SIGN_REQUEST = true;

-- view the updated security integration, save the certificate value in row 7.

desc security integration my_idp;

3단계: IdP가 서명된 요청을 수락하도록 구성

IdP가 Snowflake에서 제공된 서명된 요청을 수락하도록 구성합니다. 구성 중에 IdP에는 saml2_snowflake_x509_cert 매개 변수에 저장된 인증서가 있어야 합니다. IdP는 이 인증서를 사용하여 SAML 요청의 출처가 Snowflake인지 확인합니다.

참고

Snowflake는 IdP를 구성하지 않습니다. IdP 구성과 관련하여 지원이 필요한 경우 내부 보안 관리자에게 문의하십시오.

4단계: Snowflake에 연결

IdP를 구성한 후에는 다음 작업을 수행합니다.

  • IdP 설정을 확인합니다.

  • Snowflake에서 사용자를 생성하고 역할을 할당합니다.

  • 사용자가 IdP에서 시작 또는 SP에서 시작하는 SSO를 통해 Snowflake에 연결하는지 결정합니다.

    • IdP에서 시작하는 SSO의 경우 사용자에게 Snowflake 액세스 방법(예: 내부 포털에 액세스)을 알립니다.

    • SP에서 시작하는 SSO(즉, 사용자가 Snowflake에 액세스한 후 고객 IdP로 리디렉션)의 경우 계정 매개 변수 SSO_LOGIN_PAGE 를 true로 설정하여 Snowflake에서 시작하는 SSO를 활성화합니다. ACCOUNTADMIN 역할의 사용자로 다음 문을 실행합니다.

      use role accountadmin;
      
      alter account set SSO_LOGIN_PAGE = true;
      
  • 페더레이션 인증 관리하기/사용하기 에서와 같이 Snowflake에 액세스합니다.

SAML NameID 형식

Snowflake에서 관리자(즉, ACCOUNTADMIN 역할 사용자)는 Snowflake에서 IdP로 전송된 발신 SAML 인증 요청에서 요청될 SAML NameID 를 지정할 수 있습니다.

SAML NameID 형식을 지정하면 IdP에서 제공된 SAML 어셜션에서 사용자(즉, SAML 주체) 특성 식별의 예상되는 결과를 Snowflake가 설정하여 Snowflake에 유효한 인증인지 확인할 수 있습니다.

SAML NameID 형식은 SAML2 보안 통합에 통합할 수 있습니다. SAML NameID 는 보안 통합에서 다음 값 중 하나를 사용하여 지정할 수 있습니다.

  • urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified

  • urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress

  • urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName

  • urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName

  • urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos

  • urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

  • urn:oasis:names:tc:SAML:2.0:nameid-format:transient

SAML NameID 형식이 지정되지 않은 경우, Snowflake에서 사용하는 값은 다음과 같습니다.

urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress

IdP가 SAML 어설션에서 SAML NameID 지정을 지원하는 경우에 NameID 를 구성 및 지정하는 일반 절차는 다음과 같습니다.

  1. Snowflake에서 SAML2 보안 통합으로 마이그레이션하거나 생성합니다.

  2. 보안 통합을 업데이트하여 NameId 를 지원합니다.

  3. IdP를 구성하여 SAML NameID 형식을 지정합니다.

  4. Snowflake에 연결합니다.

SAML NameID 구성 절차

이 단계를 따라 SAML NameID 형식을 구성하고 Snowflake에 연결합니다.

1단계: SAML2 보안 통합 생성 또는 마이그레이션

Snowflake에 기존 SAML 설정이 있고 이 기능을 사용하려면, 다음 SQL 문을 실행하여 SAML2 보안 통합으로 마이그레이션할 수 있습니다. 이 시스템 함수에 대한 자세한 내용은 SYSTEM$MIGRATE_SAML_IDP_REGISTRATION 을 참조하십시오.

select system$migrate_saml_idp_registration('<integration_name>', '<issuer>');

아니면, 다음 SQL 문을 실행하여 SAML2 보안 통합을 생성합니다. 자세한 내용은 CREATE SECURITY INTEGRATION (SAML2) 섹션을 참조하십시오.

create security integration my_idp
    type = saml2
    enabled = true
    saml2_issuer = 'https://example.com'
    saml2_sso_url = 'http://myssoprovider.com'
    saml2_provider = 'ADFS'
    saml2_x509_cert='my_x509_cert'
    saml2_sp_initiated_login_page_label = 'my_idp'
    saml2_enable_sp_initiated = true;

2단계: NameID 를 위한 SAML2 보안 통합 업데이트

SAML NameID 형식을 지정하려면, 계정 관리자(즉, ACCOUNTADMIN 역할 사용자)로 다음 문을 실행합니다.

-- update the security integration

alter security integration my_idp set SAML2_REQUESTED_NAMEID_FORMAT = '<string_literal>';

-- view the updated security integration

desc security integration my_idp;

3단계: IdP를 구성하여 NameID 지정

IdP를 구성하여 SAML 어설션에 SAML NameID 형식을 지정합니다.

참고

Snowflake는 IdP를 구성하지 않습니다. IdP 구성과 관련하여 지원이 필요한 경우 내부 보안 관리자에게 문의하십시오.

4단계: Snowflake에 연결

IdP를 구성한 후에는 다음 작업을 수행합니다.

  • IdP 설정을 확인합니다.

  • Snowflake에서 사용자를 생성하고 역할을 할당합니다.

  • 사용자가 IdP에서 시작 또는 SP에서 시작하는 SSO를 통해 Snowflake에 연결하는지 결정합니다.

    • IdP에서 시작하는 SSO의 경우 사용자에게 Snowflake 액세스 방법(예: 내부 포털에 액세스)을 알립니다.

    • SP에서 시작하는 SSO(즉, 사용자가 Snowflake에 액세스한 후 고객 IdP로 리디렉션)의 경우 계정 매개 변수 SSO_LOGIN_PAGE 를 true로 설정하여 Snowflake에서 시작하는 SSO를 활성화합니다. ACCOUNTADMIN 역할의 사용자로 다음 문을 실행합니다.

      use role accountadmin;
      
      alter account set SSO_LOGIN_PAGE = true;
      
  • 페더레이션 인증 관리하기/사용하기 에서와 같이 Snowflake에 액세스합니다.

SAML2 보안 통합 메타데이터 내보내기

Snowflake는 SAML 보안 통합을 위한 SAML2 2.0 메타데이터를 제공하여 편리하게 IdP에서 Snowflake 서비스 공급자를 구성할 수 있도록 해줍니다.

SAML 2.0 메타데이터는 SAML2_SNOWFLAKE_METADATA 속성에 포함되어 있으며 SAML2 보안 통합에서 DESCRIBE INTEGRATION 명령을 실행하여 얻을 수 있습니다. 예:

desc security integration my_idp;

------------------------------------+---------------+-----------------------------------------------------------------------------+------------------+
              property              | property_type |                               property_value                                | property_default |
------------------------------------+---------------+-----------------------------------------------------------------------------+------------------+
SAML2_X509_CERT                     | String        | MIICrTCCAZWgAwIBAgIJAOF6EPk93wj...                                          |                  |
SAML2_PROVIDER                      | String        | OKTA                                                                        |                  |
SAML2_ENABLE_SP_INITIATED           | Boolean       | false                                                                       | false            |
SAML2_SP_INITIATED_LOGIN_PAGE_LABEL | String        | my_idp                                                                      |                  |
SAML2_SSO_URL                       | String        | https://okta.com/sso                                                        |                  |
SAML2_ISSUER                        | String        | https://okta.com                                                            |                  |
SAML2_SNOWFLAKE_X509_CERT           | String        | MIICrTCCAZWgAwIBAgIJAOF6EPk93wj...                                          |                  |
SAML2_REQUESTED_NAMEID_FORMAT       | String        | urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress                      |                  |
SAML2_SNOWFLAKE_ACS_URL             | String        | https://example.snowflakecomputing.com/fed/login                            |                  |
SAML2_SNOWFLAKE_ISSUER_URL          | String        | https://example.snowflakecomputing.com                                      |                  |
SAML2_SNOWFLAKE_METADATA            | String        | <md:EntityDescriptor entityID="https://example.snowflakecomputing.com"> ... |                  |
SAML2_DIGEST_METHODS_USED           | String        | http://www.w3.org/2001/04/xmlenc#sha256                                     |                  |
SAML2_SIGNATURE_METHODS_USED        | String        | http://www.w3.org/2001/04/xmldsig-more#rsa-sha256                           |                  |
------------------------------------+---------------+-----------------------------------------------------------------------------+------------------+

대표적인 예에서와 같이, SAML2_SNOWFLAKE_METADATA 속성에서 형식이 지정된 SAML 2.0 XML 메타데이터는 아래와 같습니다. signingencryption 에 대한 X509certificate 값은 잘린다는 점에 유의하십시오.

<md:EntityDescriptor xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" entityID="https://example.snowflakecomputing.com">
 <md:SPSSODescriptor AuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
  <md:KeyDescriptor use="signing">
    <dsig:KeyInfo>
      <dsig:X509Data>
        <dsig:X509Certificate>MIICrTCCAZWgAwIBAgIJAOF6EPk93wj... </dsig:X509Certificate>
      </dsig:X509Data>
    </dsig:KeyInfo>
  </md:KeyDescriptor>
  <md:KeyDescriptor use="encryption">
    <dsig:KeyInfo>
      <dsig:X509Data>
        <dsig:X509Certificate>MIICrTCCAZWgAwIBAgIJAOF6EPk93wj... </dsig:X509Certificate>
      </dsig:X509Data>
    </dsig:KeyInfo>
  </md:KeyDescriptor>
  <md:AssertionConsumerService index="0" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://example.snowflakecomputing.com/fed/login" />
 </md:SPSSODescriptor>
</md:EntityDescriptor>

참고로 다음 테이블은 XML 메타데이터 태그를 Snowflake SAML2 보안 통합 속성으로 매핑합니다.

XML 출력

SAML2 보안 통합 속성

entityID

SAML2_SNOWFLAKE_ISSUER_URL

AuthnRequestsSigned

SAML2_SIGN_REQUEST

인증서 서명

SAML2_SNOWFLAKE_X509_CERT

암호화 인증서

SAML2_SNOWFLAKE_X509_CERT

어설션 컨슈머 서비스 URL

SAML2_SNOWFLAKE_ACS_URL

Snowflake 강제 재인증

Snowflake는 초기 인증 SSO 흐름 중에 또는 현재 Snowflake 세션이 만료될 때 인증 사용자가 Snowflake에 액세스하기 위해 다시 인증하도록 요구하는 방식으로 SAML2 보안 통합을 구성하는 것을 지원합니다.

Snowflake SAML2 보안 통합에서 이 기능을 활성화할 때, Snowflake는 Snowflake에서 IdP로의 발신 SAML 요청에서 SAML 사양 ForceAuthn 매개 변수를 True 로 설정합니다. True 매개 변수가 ForceAuthn 으로 설정된 요청을 IdP가 수신하면, IdP는 Snowflake에 액세스하려면 인증 자격 증명(예: 사용자 이름, 비밀번호)을 다시 입력하라는 메시지를 사용자에게 제공하는 요청을 Snowflake로 전송합니다.

이 기능은 재인증을 통해 보안을 향상합니다. 또한, 재인증 프롬프트를 통해 사용자는 Snowflake에 액세스하기 위해 초기에 사용한 SSO와 다른 자격 증명 세트를 입력할 수 있습니다.

중요

이 기능을 구현하기 전, IdP가 SSO 인증 흐름 중 ID 전환을 지원하는지 확인하십시오.

이 기능이 Snowflake에 구현되어 있고 IdP가 초기 SSO 인증 흐름 중 ID 전환을 지원하지 않는 경우, 사용자는 재인증 프롬프트에 입력한 다른 자격 증명 세트를 사용하여 Snowflake에 액세스하지 못할 수 있습니다.

Snowflake 강제 재인증 절차

아래 단계를 따라 Snowflake 액세스 강제 재인증을 구성하십시오.

1단계: SAML2 보안 통합 생성 또는 마이그레이션

Snowflake에 기존 SAML 설정이 있고 이 기능을 사용하려면, 다음 SQL 문을 실행하여 SAML2 보안 통합으로 마이그레이션할 수 있습니다. 이 시스템 함수에 대한 자세한 내용은 SYSTEM$MIGRATE_SAML_IDP_REGISTRATION 을 참조하십시오.

select system$migrate_saml_idp_registration('<integration_name>', '<issuer>');

아니면, 다음 SQL 문을 실행하여 SAML2 보안 통합을 생성합니다. 자세한 내용은 CREATE SECURITY INTEGRATION (SAML2) 섹션을 참조하십시오.

create security integration my_idp
    type = saml2
    enabled = true
    saml2_issuer = 'https://example.com'
    saml2_sso_url = 'http://myssoprovider.com'
    saml2_provider = 'ADFS'
    saml2_x509_cert='my_x509_cert'
    saml2_sp_initiated_login_page_label = 'my_idp'
    saml2_enable_sp_initiated = true;

2단계: SAML2 보안 통합을 강제 재인증으로 업데이트

Snowflake 액세스 강제 재인증을 지원하도록 기존 SAML2 보안 통합을 업데이트하려면 ALTER SECURITY INTEGRATION 명령을 실행합니다. 보안 통합 설정은 DESCRIBE INTEGRATION 문을 사용하여 확인할 수 있습니다.

-- update the security integration
alter security integration my_idp set SAML2_FORCE_AUTHN = true;

-- verify the security integration
desc security integration my_idp;

여기서:

SAML2_FORCE_AUTHN = TRUE | FALSE

초기 인증 흐름 중에 사용자가 Snowflake에 액세스하려면 다시 인증할 수밖에 없도록 해야 할지 여부를 나타내는 부울입니다. TRUE 로 설정할 때, Snowflake는 Snowflake에서 ID 공급자로의 발신 요청에서 ForceAuthn SAML 매개 변수를 TRUE 로 설정합니다.

  • TRUE 로 설정하면 ID 공급자와의 유효한 세션이 있는 경우에도 사용자가 다시 인증해야 Snowflake에 액세스할 수 있습니다.

  • FALSE 로 설정하면 사용자가 다시 인증하지 않고도 Snowflake에 액세스할 수 있습니다.

기본값: FALSE.

사용자 정의 로그아웃 엔드포인트

Snowflake는 Snowflake에서 로그아웃한 후에 사용자를 리디렉션하는 사용자 지정 엔드포인트 URL 정의 기능을 지원합니다. 엔드포인트는 SAML2 보안 통합의 SAML2_POST_LOGOUT_REDIRECT_URL 속성을 통해 설정할 수 있습니다.

SAML SSO를 통해 Snowflake에 액세스하는 사용자에게 활성화된 후 classic web interface 의 Log Out 버튼을 클릭하면 Snowflake가 Snowflake 세션을 종료하고 지정된 엔드포인트로 사용자를 리디렉션합니다.

중요

이 동작은 Snowsight 에는 적용되지 않습니다.

로그아웃 엔드포인트 기능을 통해 관리자는 Snowflake 로그아웃 후 사용자가 리디렉션되는 위치를 관리할 수 있습니다. 예를 들어, 사용자 지정 엔드포인트는 스크립트를 트리거하여 IdP 세션도 동시에 종료할 수 있습니다. 이 기능의 이점은 Snowflake 및 IdP 세션이 모두 종료되므로 사용자가 Snowflake에 액세스하려면 IdP에 다시 인증해야 하도록 할 수 있다는 점입니다.

사용자 지정 로그아웃 엔드포인트를 구성하려면 아래 단계를 따르십시오.

  1. SAML2 보안 통합 으로 마이그레이션하거나 생성합니다.

    SAML2 보안 통합이 있는 경우 다음 단계로 건너뜁니다.

  2. ALTER SECURITY INTEGRATION 명령을 사용하여 사용자 지정 로그아웃 엔드포인트를 구성하도록 보안 통합을 업데이트합니다.

    -- Update the endpoint URL
    
    alter security integration my_idp set SAML2_POST_LOGOUT_REDIRECT_URL = 'https://logout.example.com';
    

SAML2 보안 통합 관리

ALTER SECURITY INTEGRATION 명령을 사용하여 SAML2 보안 통합을 관리할 수 있습니다. 예:

  • X.509 인증서를 문자열로 기존 SAML2 보안 통합에 업로드합니다.

    alter security integration my_idp set SAML2_SNOWFLAKE_X509_CERT = 'AX2bv...';
    
  • 기존 개인 키 및 자체 서명 인증서를 덮어쓰고 새 개인 키 및 자체 서명 인증서를 생성합니다.

    alter security integration my_idp refresh SAML2_SNOWFLAKE_PRIVATE_KEY;
    
  • 서명된 요청을 활성화합니다.

    alter security integration my_idp set SAML2_SIGN_REQUEST = true;
    
  • NameID 형식을 지정합니다.

    alter security integration my_idp set SAML2_REQUESTED_NAMEID_FORMAT = 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified';
    
  • Snowflake에 강제 재인증을 설정하거나 설정을 해제합니다.

    -- update an existing security integration to enable forced re-authentication
    alter security integration my_idp set SAML2_FORCE_AUTHN = true;
    
    -- unset forced re-authentication
    alter security integration my_idp unset SAML2_FORCE_AUTHN;
    
  • 사용자 지정 로그아웃 엔드포인트를 지정합니다.

    -- Update the endpoint URL
    
    alter security integration my_idp set SAML2_POST_LOGOUT_REDIRECT_URL = 'https://logout.example.com';
    

자세한 내용은 ALTER SECURITY INTEGRATION 을 참조하십시오.

SSO 구성 복제하기

Snowflake는 원본 계정에서 대상 계정으로의 SAML2 보안 통합 의 복제 및 장애 조치/장애 복구를 지원합니다.

자세한 내용은 여러 계정에 보안 통합 및 네트워크 정책 복제 섹션을 참조하십시오.

맨 위로 이동