페더레이션 인증 관리하기/사용하기

이 항목에서는 페더레이션 인증을 구성 한 후 관리 및 사용하는 방법에 대해 설명합니다.

이 항목의 내용:

페더레이션 인증을 사용하도록 설정된 사용자 관리하기

Snowflake 사용자 비밀번호 관리하기

계정에서 페더레이션 인증을 사용하도록 설정한 경우에도 Snowflake에서는 Snowflake 사용자 자격 증명(로그인 이름 및 비밀번호)을 관리 및 사용할 수 있습니다. 즉:

  • 계정 및 보안 관리자는 Snowflake에서 관리되는 비밀번호를 사용하여 사용자를 생성할 수 있습니다.

  • 사용자는 Snowflake 로그인 자격 증명을 사용하여 Snowflake에 로그인할 수 있습니다.

그러나 계정에서 페더레이션 인증을 사용하도록 설정한 경우에는 Snowflake에서 사용자 비밀번호를 관리하지 않는 것이 좋습니다. 대신, IdP에서만 사용자 비밀번호를 관리해야 합니다.

비밀번호가 없는 사용자를 생성(또는 기존 사용자를 변경하고 비밀번호를 삭제)하는 경우 사용자에 대한 Snowflake 인증이 효과적으로 비활성화됩니다. Snowflake에 비밀번호가 없으면 사용자는 Snowflake 인증을 사용하여 로그인할 수 없으며, 대신 페더레이션 인증을 사용해야 합니다. Snowflake 웹 인터페이스를 사용하여 비밀번호가 없는 사용자를 생성하거나 기존 사용자의 비밀번호를 제거할 수 없음에 유의하십시오. CREATE USER 또는 ALTER USER 을 사용해야 합니다.

특히, 관리자가 아닌 모든 사용자에서는 Snowflake 인증을 사용하지 않도록 설정하는 것이 좋습니다.

중요

MUST_CHANGE_PASSWORD 사용자 속성은 페더레이션 인증에 적용되지 않으며 사용하지 않아야 합니다. 특히, Snowflake에서 사용자 비밀번호를 관리하지 않는 경우 이러한 사용자의 이 속성이 FALSE로 설정되었는지 확인 하십시오.

또한, Snowflake 비밀번호가 있는 Snowflake 계정 관리자가 1명 이상 있어야 합니다. 이를 통해 계정 관리자가 항상 Snowflake에 액세스하여 페더레이션 인증을 관리하고 발생하는 모든 문제를 해결할 수 있습니다.

사용자 비활성화 및 삭제하기

Snowflake 계정 또는 보안 관리자는 사용자를 삭제하거나 비활성화해야 합니다. Snowflake에서 삭제 또는 비활성화된 사용자는 Okta 계정을 사용하려 로그인할 수 있지만, Snowflake에 연결할 때 오류 메시지가 표시됩니다. 사용자는 계정 또는 보안 관리자가 사용자를 다시 생성하거나 활성화한 후에 로그인할 수 있습니다.

사용자 삭제/생성 또는 비활성화/활성화는 Snowflake 웹 인터페이스 또는 해당 SQL 명령을 사용하여 수행할 수 있습니다.

Snowflake에 연결하는 클라이언트 애플리케이션에서 SSO 사용하기

IdP가 사용자 계정 에 구성되면, Snowflake는 다음 Snowflake 지원 클라이언트에서 SSO를 사용한 연결 및 인증을 지원합니다.

SnowSQL

v1.1.43 이상

Python Connector

v1.4.8 이상

JDBC 드라이버

v3.2.7 이상

ODBC 드라이버

v2.13.11 이상

.NET 드라이버

v1.0.13 이상

Node.js 드라이버

v1.6.0 이상(웹 기반 SSO), v1.6.1 이상(Okta를 통한 기본 SSO 인증)

Go 드라이버

v1.1.5 이상

Snowflake는 다음의 두 가지 인증 방법을 지원합니다.

  • 브라우저 기반 SSO

  • 프로그래밍 방식 SSO(Okta만 해당)

중요

Snowflake에 액세스하는 클라이언트 애플리케이션에서 SSO를 사용하는 경우, 사용자는 메시지가 표시되면 로그인 자격 증명을 입력해야 하지만, 보안상의 이유로 이러한 자격 증명은 절대로 클라이언트를 통해 처리되지 않습니다. 대신, 인증을 위해 자격 증명이 IdP로 전송되고 IdP는 클라이언트를 활성화하여 Snowflake 세션을 시작하는 유요한 SAML 응답을 다시 전송합니다.

브라우저 기반 SSO

Snowflake 제공 클라이언트 필수 버전 이상 이 설치된 경우 사용자는 브라우저 기반 SSO를 사용하여 Snowflake에 로그인할 수 있습니다.

브라우저 기반 SSO의 작동 방법

클라이언트 애플리케이션이 브라우저 기반 SSO를 사용하도록 구성된 경우, 애플리케이션은 다음 워크플로를 사용하여 사용자 인증을 수행합니다.

  1. 애플리케이션은 사용자의 운영 체제에서 기본 웹 브라우저를 실행하거나 새 브라우저 탭/창을 열어 IdP의 인증 페이지를 표시합니다.

  2. 사용자는 IdP 자격 증명(사용자 이름 및 비밀번호)을 입력합니다.

  3. 사용자가 Snowflake에 MFA(다단계 인증)를 등록한 경우에는 MFA 암호(다른 디바이스에서 전송됨)를 입력하거나 인증(다른 디바이스에서)을 확인하라는 메시지가 표시됩니다.

  4. IdP에서 사용자 자격 증명의 인증이 완료되면 브라우저에 성공 메시지가 표시됩니다. 그러면 사용자는 브라우저 탭/창(인증 후에 열 필요 없음)을 닫고 애플리케이션으로 돌아가 시작된 Snowflake 세션을 사용할 수 있습니다.

웹 기반 SSO를 사용하기 위한 요구 사항

브라우저 기반 SSO의 경우, Snowflake 제공 클라이언트(예: Snowflake JDBC 드라이버)에서 사용자의 웹 브라우저를 열 수 있어야 합니다. 이러한 이유로 Snowflake 제공 클라이언트 및 이를 사용하는 클라이언트 애플리케이션을 사용자의 시스템에 설치해야 합니다. 서버에서 실행되는 코드에서 Snowflake 제공 클라이언트를 사용하지 않는 경우 브라우저 기반 SSO가 작동하지 않습니다.

브라우저 기반 SSO 설정하기

인증을 위해 브라우저 기반 SSO를 설정하려면, authenticator 로그인 매개 변수/옵션을 클라이언트의 externalbrowser 에 설정합니다.

클라이언트

지침

SnowSQL

클라이언트를 시작할 때 명령줄 플래그 --authenticator externalbrowser 를 지정합니다.

Python

authenticator='externalbrowser'snowflake.connector.connect() 함수에 전달합니다.

JDBC

드라이버의 연결 문자열에 authenticator=externalbrowser 를 설정합니다.

ODBC(Linux/macOS)

odbc.ini 파일에 authenticator=externalbrowser 를 설정합니다.

ODBC(Windows)

ODBC 데이터 원본 관리자 도구에서 Snowflake에 대한 DSN을 편집하고 Authenticatorexternalbrowser 로 설정합니다.

.NET

드라이버의 연결 문자열에 authenticator=externalbrowser 를 설정합니다.

Node.js

snowflake.createConnection 함수를 호출할 때 authenticator=EXTERNALBROWSER 옵션을 설정합니다.

Go

드라이버의 연결 문자열에 authenticator=externalbrowser 를 설정합니다.

연결 캐싱을 사용하여 인증 프롬프트 수 최소화하기 — 선택 사항

클라이언트 애플리케이션이 Snowflake에 새로 연결할 때마다 사용자에게는 인증 메시지가 표시됩니다. 이로 인해 클라이언트 애플리케이션이 여러 번 연결하면 인증 메시지가 여러 번 표시될 수 있습니다.

사용자에게 인증 메시지가 표시되는 횟수를 최소화하기 위해 계정 관리자는 연결 캐싱을 사용하도록 설정할 수 있습니다.

연결 캐싱이 활성화되면, 클라이언트 애플리케이션은 이후 연결에서 사용하기 위해 연결 토큰을 저장합니다. 보안상의 이유로 연결 토큰은 운영 체제의 키 저장소에 저장됩니다. 연결 캐싱을 사용하도록 설정하기 전, 보안 팀에 문의하여 이러한 설정이 보안 정책을 준수하는지 확인해야 합니다.

연결 캐싱은 MFA 토큰 캐싱과 함께 사용할 수 있습니다.

이러한 두 기능을 함께 사용하는 방법에 대한 자세한 내용은 MFA 토큰 캐싱을 사용하여 인증 도중 프롬프트 수 최소화하기 — 선택 사항 을 참조하십시오.

Snowflake가 연결 캐싱에서 지원하는 macOS 및 Windows(현재 이 기능은 Linux에서 지원되지 않음) 드라이버와 커넥터는 다음과 같습니다.

  • Go 드라이버 버전 1.6.15 이상

  • JDBC 드라이버 버전 3.12.8 이상

  • ODBC 드라이버 버전 2.21.2 이상

  • Python 2.2.8 이상용 Snowflake 커넥터

연결 캐싱을 사용하도록 설정하려면:

  1. 계정 수준 매개 변수 ALLOW_ID_TOKENtrue 로 설정합니다.

    alter account set allow_id_token = true;
    
    Copy

    참고

    계정 관리자(즉, ACCOUNTADMIN 역할 사용자)만 연결 캐싱을 사용하도록 설정할 수 있습니다.

  2. 드라이버 또는 커넥터에 필요한 패키지 또는 라이브러리를 추가합니다.

    • Python용 Snowflake Connector를 사용 중인 경우에는 다음을 실행하여 옵션으로 제공되는 인증 키 패키지를 설치합니다.

      pip install "snowflake-connector-python[secure-local-storage]"
      
      Copy

      명령에서와 같이 대괄호([])를 반드시 입력해야 합니다. 대괄호는 설치해야 하는 패키지의 추가 부분 을 지정합니다.

      예시와 같이 패키지 이름 주위에 따옴표를 사용하여 대괄호가 와일드카드로 해석되지 않도록 합니다.

      다른 추가 항목(예: Pandas용 Python Connector APIs를 사용 하기 위한 pandas)을 설치해야 하는 경우에는 추가 항목 사이에 쉼표를 사용합니다.

      pip install "snowflake-connector-python[secure-local-storage,pandas]"
      
      Copy
    • Snowflake JDBC 드라이브에 대한 내용은 클래스 경로에 JNA 클래스 추가하기 를 참조하십시오.

기본 SSO — Okta만 해당

IdP로 Okta를 사용하는 경우, Snowflake는 Okta를 통한 인증도 기본적으로 지원합니다. 이 인증 방법은 웹 브라우저에 액세스하지 않는 클라이언트(예: Python 커넥터, JDBC 드라이버 또는 ODBC 드라이버를 통해 프로그래밍 방식으로 연결)에서 SSO를 사용하는 경우에 유용합니다.

참고

클라이언트 드라이버와 함께 Native SSO 인증을 사용하는 사용자에 대해 Okta MFA를 비활성화하십시오. 자세한 내용은 Okta 관리자에게 문의하십시오.

Okta를 통해 기본 SSO를 활성화하려면 클라이언트의 authenticator 로그인 매개 변수/옵션을 Okta 계정(Okta에서 제공)의 Okta URL 엔드포인트로 설정합니다. https://<okta_계정_이름>.okta.com 의 일반적인 형식은 다음과 같습니다.

클라이언트

지침

SnowSQL

클라이언트를 시작할 때 명령줄 플래그 --authenticator https://<okta_계정_이름>.okta.com 을 지정합니다.

Python

authenticator='https://<okta_계정_이름>.okta.com'snowflake.connector.connect() 함수로 전달합니다.

JDBC

드라이버의 연결 문자열에 authenticator=https://<okta_계정_이름>.okta.com 을 설정합니다.

ODBC(Linux/macOS)

odbc.ini 파일에 authenticator=https://<okta_계정_이름>.okta.com 을 설정합니다.

ODBC(Windows)

ODBC 데이터 원본 관리자 도구에서 Snowflake에 대한 DSN을 편집하고 Authenticatorhttps://<okta_계정_이름>.okta.com 으로 설정합니다.

.NET

드라이버의 연결 문자열에 authenticator=https://<okta_계정_이름>.okta.com 을 설정합니다.

Node.js

snowflake.createConnection 을 호출할 때 authenticator 옵션을 https://<okta_계정_이름>.okta.com 으로 설정합니다.

Okta Identity Engine으로 업그레이드하기

기본 SSO용으로 Okta Classic에서 Okta Identity Engine으로 업그레이드할 경우 Snowflake 클라이언트 드라이버를 업데이트한 후에 업그레이드해야 합니다.

업그레이드 후 HTTP 429 오류가 발생하면 최신 클라이언트 드라이버에서 사용하는 인증 엔드포인트에서 적용하는 속도 제한에 도달했을 가능성이 큽니다. 자세한 내용은 이 항목의 HTTP 429 오류 섹션을 참조하십시오.

HTTP 429 오류

Okta Identity Engine은 인증 엔드포인트(/api/v1/authn)를 통해 통신해야 하는데, 현재 속도 제한은 사용자마다 5초당 20개 요청을 처리하는 수준입니다. Okta Identity Engine을 지원하기 위해 최신 Snowflake 클라이언트 드라이버는 이 인증 엔드포인트를 사용하므로 속도 제한이 적용됩니다. 이 제한으로 인해 통신할 수 없을 정도라면 Okta 지원팀에 문의하여 인증 엔드포인트의 속도 제한을 늘리십시오.

Snowflake 클라이언트 드라이버는 다음 버전에서 인증 엔드포인트로 전환했습니다.

  • Go: 1.6.20

  • JDBC: 3.13.22

  • .NET: 2.0.20

  • Node.js: 1.6.21

  • ODBC: 2.25.5

  • Python: 2.7.12

  • SnowSQL: 1.2.24

  • SQLAlchemy: 1.4.6

MFA에서 SSO 사용하기

Snowflake는 추가적인 보안 수준을 제공하기 위해 SSO와 함께 MFA를 사용할 수 있도록 지원합니다.

  • Snowflake의 개별 사용자는 MFA에 등록할 수 있습니다. Snowflake 사용자가 MFA에 등록하고 SSO를 사용하여 연결하면 MFA 로그인 워크플로가 SSO 워크플로 내에서 시작되고 인증이 완료되어야 합니다. Snowflake에서의 MFA에 대한 자세한 내용은 다단계 인증(MFA) 을 참조하십시오.

    참고

    MFA를 사용하여 Okta SSO를 통해 연결하려면 Snowflake에서 웹 기반 SSO를 사용해야 합니다. Okta용 기본 SSO를 사용 중인 경우에는 MFA가 지원되지 않습니다.

  • 또한, IdP가 MFA를 지원할 수도 있지만, 이는 Snowflake의 MFA와 별개이며 IdP를 통해 별도로 구성해야 합니다. IdP용 MFA를 사용하도록 설정한 경우에는 IdP가 워크플로를 결정합니다. IdP의 MFA 지원 여부 및 구현 방법에 대한 내용은 IdP 설명서를 참조하십시오.

  • 특정 Snowflake 제공 클라이언트의 경우 최대 4시간 동안 MFA 토큰을 캐시할 수 있습니다. 자세한 내용은 MFA 토큰 캐싱을 사용하여 인증 도중 프롬프트 수 최소화하기 — 선택 사항 섹션을 참조하십시오.

다중 대상 그룹 값이 포함된 SSO 사용하기

Snowflake는 ID 공급자에서 Snowflake로의 SAML 2.0 어설션에서 다중 대상 그룹 값(즉, 대상 또는 대상 제한 필드)을 지원합니다.

이 기능에서는 대상 그룹 값으로 Snowflake에 액세스하기 위한 URLs를 지원합니다. 각 계정에는 Snowflake에 액세스하기 위한 고유 계정 식별자 가 포함된 URL이 있기 때문에 다중 Snowflake 계정에 대한 URLs이 지원됩니다. 또한, Snowflake는 대상 그룹 값으로 Snowflake 서비스에 비공개 연결을 사용하여 Snowflake에 액세스하는 계정 도메인 이름 및 URL을 수락합니다.

SSO 및 공용 인터넷 방지에 대한 자세한 내용은 비공개 연결을 사용하는 SSO 섹션을 참조하십시오.

현재 Snowflake는 최대 4개의 다른 대상 그룹 값을 지원 및 허용합니다. Snowflake에서 구성할 필요가 없습니다. 5개 이상의 대상 그룹 값을 포함해야 하는 경우에는 Snowflake 지원 에 문의하십시오.

SAML 2.0 대상 그룹 값 구성과 관련한 지원이 필요한 경우에는 조직의 ID 공급자 관리자에게 문의하십시오.

비공개 연결을 사용하는 SSO 사용하기

Snowflake는 AWS(Amazon Web Services), Microsoft Azure, GCP(Google Cloud Platform)의 Snowflake 계정에 대해 Snowflake 서비스 비공개 연결로 SSO를 지원합니다.

자세한 내용은 비공개 연결을 사용하는 SSO 섹션을 참조하십시오.