페더레이션 인증을 사용하도록 Snowflake 구성하기

이 항목에서는 SAML2 보안 통합을 사용하여 페더레이션 인증을 위해 Snowflake를 구성하는 방법에 대해 설명합니다. 이 항목에서는 Snowflake와 함께 작동하도록 IdP를 이미 구성 했다고 가정합니다.

참고

SAML2 보안 통합은 더 이상 사용되지 않는 SAML_IDENTITY_PROVIDER 매개 변수를 대체합니다.

더 이상 사용되지 않는 이 계정 매개 변수를 사용하는 기존 SSO 구현이 있는 경우 SAML 보안 통합으로 마이그레이션 한 후 페더레이션 인증을 위해 Snowflake를 계속 구성해야 합니다.

Snowflake는 이처럼 더 이상 사용되지 않는 계정 매개 변수를 사용하는 구현이 있는 한 계속해서 해당 매개 변수를 지원할 것입니다.

이 항목의 내용:

SAML2 보안 통합 만들기

Snowflake는 SAML2 보안 통합을 사용하여 페더레이션 인증을 구현하는 데 사용 중인 IdP와 통합합니다. CREATE SECURITY INTEGRATION 명령을 사용하여 SSO를 위해 Snowflake 구성을 시작합니다.

중요

SSO에 대해 IdP를 구성 할 때 Snowflake 계정용 URL을 제공하십시오. 이 URL의 형식 은 보안 통합의 SAML2_SNOWFLAKE_ISSUER_URLSAML2_SNOWFLAKE_ACS_URL 속성에 있는 URL과 일치해야 합니다.

보안 통합을 생성할 때 이러한 속성을 정의하지 않으면 기본적으로 계정의 레거시 URL 로 설정됩니다.

예를 들어 비공개 연결로 계정 이름 URL을 사용하는 보안 통합을 생성하려면 다음 SQL 명령을 실행하십시오.

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 = 'MIICr...'
  SAML2_SNOWFLAKE_ISSUER_URL = 'https://<orgname>-<account_name>.privatelink.snowflakecomputing.com'
  SAML2_SNOWFLAKE_ACS_URL = 'https://<orgname>-<account_name>.privatelink.snowflakecomputing.com/fed/login';
Copy

/fed/loginSAML2_SNOWFLAKE_ACS_URL 속성의 URL에 추가됩니다. Snowflake 계정의 URL 형식에 대한 자세한 내용은 URL을 사용하여 연결하기 섹션을 참조하십시오.

SAML2 보안 통합을 구성하면 보안 통합을 사용하여 다음 작업을 수행할 수 있습니다.

  • SAML 어설션 암호화

  • 서명된 SAML 요청 전송

  • SAML NameID 형식 지정

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

  • Snowflake 강제 재인증 절차

참고

계정이 Business Critical Edition 이상 인 경우 클라이언트 리디렉션과의 SAML2 보안 통합을 사용 할 수 있습니다.

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

사용자를 위한 SSO 로그인 구성하기

SAML2 보안 통합을 생성한 후 사용자가 IdP 또는 Snowflake에서 SSO 로그인을 시작할지 여부를 구성할 수 있습니다.

IdP에서 시작된 SSO는 Snowflake에서 구성할 필요가 없습니다. Snowflake에 액세스하는 방법(예: 내부 포털 사용)을 사용자에게 알리기만 하면 됩니다.

SAML2_ENABLE_SP_INITIATED 속성은 Snowflake에서 시작하는 SSO를 활성화합니다. SAML2_SP_INITIATED_LOGIN_PAGE_LABEL 속성은 IdP를 식별하는 문자열을 정의합니다. 이 문자열은 사용자가 IdP에 액세스할 수 있도록 Snowflake 로그인 페이지에 나타납니다.

ALTER SECURITY INTEGRATION 명령을 사용하여 다음 속성을 설정합니다.

ALTER SECURITY INTEGRATION my_idp SET SAML2_ENABLE_SP_INITIATED = true;
ALTER SECURITY INTEGRATION my_idp SET SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = 'My IdP';
Copy

사용자의 SSO 로그인을 구성한 후 클라이언트가 Snowflake에 연결하는 방법에 대한 자세한 내용은 Snowflake에 연결하는 클라이언트 애플리케이션에서 SSO 사용하기 섹션을 참조하십시오.

SAML 어설션 암호화하기

SAML2_SNOWFLAKE_X509_CERT 속성은 SAML2 어설션이 Snowflake의 공개 인증서를 사용하여 암호화되도록 보장하여 사용자가 페더레이션 인증을 통해 Snowflake에 액세스할 때 트래픽을 보호합니다.

고객 IdP로부터 암호화된 어설션을 수신한 후 Snowflake는 개인 키를 사용하여 암호화된 어설션의 암호를 해제합니다. Snowflake는 절대로 개인 키를 내보내거나 사용할 수 있도록 하지 않습니다.

SAML 어설션을 암호화하려면 아래 섹션을 참조하십시오.

Snowflake에서 공용 인증서 내보내기

SAML2 보안 통합을 생성한 후 아래 단계를 따르십시오.

  1. SAML2 통합에서 다음 SQL 문을 실행합니다.

    DESC SECURITY INTEGRATION my_idp;
    
    Copy
  2. 7행에서 PEM 형식의 공용 인증서인 SAML2_SNOWFLAKE_X509_CERT 값을 찾습니다.

  3. 값을 저장하며 이때 BEGIN CERTIFICATEEND CERTIFICATE 구분 기호를 포함해야 합니다. 예를 들어 아래 코드 블록에는 PEM 형식의 잘린 인증서가 포함되어 있습니다.

    -----BEGIN CERTIFICATE-----
    MIICr...
    -----END CERTIFICATE-----
    
    Copy

인증서 서명 요청(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...';
    
    Copy
  4. 업데이트된 보안 통합을 보려면 DESCRIBE INTEGRATION 명령을 실행하십시오.

    DESC SECURITY INTEGRATION my_idp;
    
    Copy

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

SAML IdP 구성하기

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

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

서명된 SAML 요청 전송

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

SAML2_SIGN_REQUEST 속성 설정하기

처음으로 SAML2 보안 통합을 생성 하는 경우 SAML2_SIGN_REQUEST 속성을 설정해야 합니다.

SAML2_SIGN_REQUEST 매개 변수를 설정하지 않고 SAML2 보안 통합을 생성한 경우 아래 단계를 따르십시오.

  1. ACCOUNTADMIN 역할이 있는 사용자로 ALTER SECURITY INTEGRATION 명령을 실행하여 보안 통합을 업데이트합니다.

    ALTER SECURITY INTEGRATION my_idp SET SAML2_SIGN_REQUEST = true;
    
    Copy
  2. 업데이트된 보안 통합을 보려면 DESCRIBE INTEGRATION 명령을 실행하십시오.

    DESC SECURITY INTEGRATION my_idp;
    
    Copy

IdP가 서명된 요청을 수락하도록 구성하기

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

참고

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

  1. DESCRIBE INTEGRATION 명령을 실행합니다.

    DESC SECURITY INTEGRATION my_idp;
    
    Copy
  2. 7행에서 IdP 설정에 사용할 SAML2_SNOWFLAKE_X509_CERT 속성 값을 저장합니다.

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

SAML2_REQUESTED_NAMEID_FORMAT 속성 설정하기

처음으로 SAML2 보안 통합을 생성 하는 경우 SAML2_REQUESTED_NAMEID_FORMAT 속성을 설정해야 합니다.

SAML2_REQUESTED_NAMEID_FORMAT 매개 변수를 설정하지 않고 SAML2 보안 통합을 생성한 경우 아래 단계를 따르십시오.

  1. ACCOUNTADMIN 역할이 있는 사용자로서 ALTER SECURITY INTEGRATION 명령을 실행하여 SAML NameId 형식을 지정합니다.

    ALTER SECURITY INTEGRATION my_idp SET SAML2_REQUESTED_NAMEID_FORMAT = '<string_literal>';
    
    Copy
  2. 업데이트된 보안 통합을 보려면 DESCRIBE INTEGRATION 명령을 실행하십시오.

    DESC SECURITY INTEGRATION my_idp;
    
    Copy

IdP를 구성하여 NameID 지정하기

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

참고

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

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

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

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

DESC SECURITY INTEGRATION my_idp;
Copy
------------------------------------+---------------+-----------------------------------------------------------------------------+------------------+
              property              | property_type |                               property_value                                | property_default |
------------------------------------+---------------+-----------------------------------------------------------------------------+------------------+
SAML2_X509_CERT                     | String        | MIICr...                                                                    |                  |
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        | MIICr...                                                                    |                  |
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>MIICr...</dsig:X509Certificate>
      </dsig:X509Data>
    </dsig:KeyInfo>
  </md:KeyDescriptor>
  <md:KeyDescriptor use="encryption">
    <dsig:KeyInfo>
      <dsig:X509Data>
        <dsig:X509Certificate>MIICr...</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>
Copy

참고로 다음 테이블은 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에 액세스하지 못할 수 있습니다.

처음으로 SAML2 보안 통합을 생성 하는 경우 SAML2_FORCE_AUTHN 속성을 설정해야 합니다.

Snowflake 액세스 강제 재인증을 지원하도록 기존 SAML2 보안 통합을 업데이트하려면 아래 단계를 따르십시오.

  1. ALTER SECURITY INTEGRATION 명령을 실행하여 보안 통합을 업데이트합니다.

    ALTER SECURITY INTEGRATION my_idp SET SAML2_FORCE_AUTHN = true;
    
    Copy
  2. 업데이트된 보안 통합을 보려면 DESCRIBE INTEGRATION 명령을 실행하십시오.

    DESC SECURITY INTEGRATION my_idp;
    
    Copy

여기서:

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 Console 의 Log Out 버튼을 클릭하면 Snowflake가 Snowflake 세션을 종료하고 지정된 엔드포인트로 사용자를 리디렉션합니다.

중요

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

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

처음으로 SAML2 보안 통합을 생성 하는 경우 SAML2_POST_LOGOUT_REDIRECT_URL 속성을 설정해야 합니다.

SAML2_POST_LOGOUT_REDIRECT_URL 속성을 설정하지 않고 SAML2 보안 통합을 생성한 경우 ALTER SECURITY INTEGRATION 명령을 실행하여 사용자 지정 로그아웃 엔드포인트를 구성합니다.

ALTER SECURITY INTEGRATION my_idp SET SAML2_POST_LOGOUT_REDIRECT_URL = 'https://logout.example.com';
Copy

SAML2 보안 통합 관리하기

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

  • X.509 인증서를 문자열로 기존 SAML2 보안 통합으로 업데이트합니다.

    ALTER SECURITY INTEGRATION my_idp SET SAML2_X509_CERT = 'AX2bv...';
    
    Copy
  • SAML 요청 서명을 확인하거나 SAML 응답을 암호화하도록 IdP를 구성하는 고객인 경우에는 기존 개인 키와 자체 서명 인증서를 덮어쓰고 새 개인 키와 자체 서명 인증서를 생성할 수 있습니다.

    1. 새 개인 키를 생성합니다.

      조심

      아래 명령을 실행한 후 IdP가 이전 SAML2_SNOWFLAKE_X509_CERT 인증서를 계속 사용하므로 SAML 인증이 작동을 멈춥니다. 중단을 최소화하려면 사용자가 활동하지 않을 때 아래 명령을 실행해야 합니다.

      ALTER SECURITY INTEGRATION my_idp REFRESH SAML2_SNOWFLAKE_PRIVATE_KEY;
      
      Copy
    2. 보안 통합에서 SAML2_SNOWFLAKE_X509_CERT 속성 값을 검색합니다.

      DESCRIBE SECURITY INTEGRATION my_idp;
      SELECT "property_value" FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
        WHERE "property" = 'SAML2_SNOWFLAKE_X509_CERT';
      
      Copy
    3. 검색된 값을 IdP에 업로드하여 IdP에서 이전 인증서를 새 인증서로 교체합니다.

  • 서명된 요청을 활성화합니다.

    ALTER SECURITY INTEGRATION my_idp SET SAML2_SIGN_REQUEST = true;
    
    Copy
  • NameID 형식을 지정합니다.

    ALTER SECURITY INTEGRATION my_idp SET SAML2_REQUESTED_NAMEID_FORMAT = 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified';
    
    Copy
  • 강제 재인증을 활성화하려면 기존 보안 통합을 업데이트하십시오.

    ALTER SECURITY INTEGRATION my_idp SET SAML2_FORCE_AUTHN = true;
    
    Copy
  • 강제 재인증을 비활성화하려면 기존 보안 통합을 업데이트하십시오.

    ALTER SECURITY INTEGRATION my_idp UNSET SAML2_FORCE_AUTHN;
    
    Copy
  • 사용자 지정 로그아웃 엔드포인트를 업데이트합니다.

    ALTER SECURITY INTEGRATION my_idp SET SAML2_POST_LOGOUT_REDIRECT_URL = 'https://logout.example.com';
    
    Copy

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

SSO 구성 복제하기

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

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