다단계 인증(MFA)¶
다단계 인증(MFA)은 비밀번호 인증과 관련된 보안 위험을 줄여줍니다. 비밀번호 사용자가 MFA 에 등록되어 있는 경우 Snowflake에 로그인할 때 두 번째 인증 요소를 사용해야 합니다. 이러한 사용자는 비밀번호를 입력한 다음 두 번째 요소를 사용합니다. 사용자가 인증의 두 번째 요소로 사용할 수 있는 MFA 메소드를 추가하는 방법에 대한 자세한 내용은 두 번째 인증 요소 구성하기 섹션을 참조하십시오.
MFA 는 비밀번호로 인증하는 인간 사용자 를 위한 것입니다. 서비스 사용자 는 다른 형태의 인증을 사용해야 합니다. 이러한 사용자 유형에 대한 자세한 내용은 사용자 유형 섹션을 참조하십시오.
중요
모든 고객의 보안 태세를 개선하기 위해 모든 비밀번호 로그인 시 MFA 를 요구하도록 변경 사항을 적용하고 있습니다. 이번 출시에 대한 자세한 내용은 단일 요소 비밀번호 로그인 사용 중단에 대한 계획 섹션을 참조하십시오.
사용자가 MFA 에 등록하도록 요구¶
현재 조직에 MFA 를 구현하는 전략은 2024_08 동작 변경 번들 이 활성화되었을 때 계정이 존재했는지 여부에 따라 달라집니다.
2024_08 번들이 활성화되기 전에 계정이 존재했다면 사용자에게 MFA 를 사용하도록 요구하려면 계정을 구성해야 합니다. 모든 사용자가 MFA 에 등록하도록 MFA 를 구현하는 방법에 대한 자세한 내용은 MFA를 사용하여 사용자 또는 계정 인증 강화하기 섹션을 참조하십시오.
2024_08 번들을 활성화한 후에 계정을 생성한 경우 비밀번호로 인증하는 모든 사용자는 기본적으로 MFA 에 등록해야 합니다. 이 MFA 요구 사항의 경우 서비스 사용자에게는 적용되지 않습니다.
모든 사용자가 MFA 에 등록해야 한다는 요구 사항을 비활성화하려면
MFA_ENROLLMENT=OPTIONAL
로 사용자 지정 인증 정책을 생성한 다음 계정에 인증 정책을 설정하십시오. 인증 정책을 생성하고 설정하는 방법에 대한 자세한 내용은 인증 정책 섹션을 참조하십시오.필수 MFA 에서 옵트아웃하는 기능은 일시적입니다. 단일 요소 비밀번호 로그인 사용 중단에 대한 계획 섹션을 참조하십시오.
사용 가능한 MFA 방법 제한하기¶
사용자가 MFA 에 등록한 경우 두 번째 인증 요소로 MFA 방법을 사용해야 합니다. Snowflake는 다음 MFA 방법을 허용합니다.
다양한 방법으로 저장하고 액세스할 수 있는 패스키를 사용하여 인증합니다.
시간 기반 일회용 암호(TOTP)를 생성하는 인증자 앱으로 인증.
Duo로 인증하기.
팁
허용할 MFA 방법을 결정할 때 다음 사항에 유의하십시오.
보안과 사용 편의성으로 인해 패스키를 사용하는 것이 좋습니다.
Duo는 다른 MFA 방법처럼 복제되지 않습니다.
관리자는 인증 정책 을 사용하여 인증의 두 번째 요소로 사용할 수 있는 MFA 방법을 제어할 수 있습니다. 예를 들어, 다음 인증 정책에서는 사용자가 두 번째 인증 요소로 비밀번호 또는 인증자 앱을 사용할 수 있지만 Duo는 사용할 수 없습니다.
CREATE AUTHENTICATION POLICY require_mfa_policy
MFA_AUTHENTICATION_METHODS = ('PASSWORD')
MFA_ENROLLMENT = REQUIRED
MFA_POLICY = (ALLOWED_METHODS = ('PASSKEY', 'TOTP'));
사용자가 이전에 금지된 MFA 방법을 구성한 경우 다음에 로그인할 때 기존 방법을 사용하여 인증하라는 메시지가 표시된 다음 허용된 새 방법을 구성하라는 메시지가 표시됩니다.
매개 변수 MFA_POLICY 에 대한 자세한 내용은 CREATE AUTHENTICATION POLICY 섹션을 참조하십시오.
사용자의 MFA 방법 제거하기¶
사용자가 이전에 추가한 MFA 방법을 제거하여 더 이상 두 번째 인증 요소로 사용할 수 없도록 할 수 있습니다.
SHOW MFA METHODS 명령을 실행하고
name
열에서 값을 찾습니다. 예를 들어,joe
사용자에 대한 MFA 방법을 제거하려는 경우 다음을 실행하고 출력에서 MFA 방법의name
복사본을 복사합니다.SHOW MFA METHODS FOR USER joe;
+---------------+-----------------+------------------------+-------------------------------+---------------------------------+---------------------+ | name | type | comment | last_used | created_on | additional_info | +---------------+-----------------+------------------------+-------------------------------+---------------------------------+---------------------+ | TOTP-48A7 | TOTP | Authenticator App 48A7 | 2025-02-26 11:14:38.000 -0800 | 2025-02-26 11:13:19.000 -0800 | null | +---------------+-----------------+------------------------+-------------------------------+---------------------------------+---------------------+
ALTER USER … REMOVE MFA METHOD 문을 실행하여 MFA 방법을 제거합니다.
ALTER USER joe REMOVE MFA METHOD TOTP-48A7;
잠긴 사용자 복구하기¶
암호 사용자가 두 번째 인증 요소에 액세스할 수 없어 Snowflake에서 잠긴 경우 관리자는 MFA 를 일시적으로 비활성화 하거나 사용자가 새로운 MFA 방법을 설정 하는 방식으로 해당 사용자가 로그인할 수 있도록 복구할 수 있습니다.
사용자에게 새 MFA 방법을 추가하라는 메시지 표시¶
사용자가 두 번째 인증 요소로 사용하는 MFA 방법에 액세스할 수 없는 경우(예: 패스키를 저장하는 YubiKey 분실 등) 관리자는 사용자가 새로운 MFA 방법을 설정하도록 도와 Snowflake에 로그인할 수 있도록 할 수 있습니다.
사용자가 MFA 방법에 액세스할 수 없고 새 방법을 설정해야 하는 경우 관리자는 ALTER USER … ENROLL MFA 문을 실행합니다. 예를 들어, joe
사용자가 MFA 방법을 새로 설정해야 하는 경우 관리자는 다음을 실행하면 됩니다.니다.
ALTER USER joe ENROLL MFA;
사용자에게 인증 이메일 이 있는 경우, Snowflake는 MFA 인증 방법을 추가하라는 이메일을 보냅니다.
사용자에게 인증된 이메일이 없는 경우 Snowflake는 사용자에게 MFA 인증 방법을 추가하라는 메시지를 표시하는 페이지의 URL 을 반환합니다. 관리자는 이 URL 을 잠긴 사용자에게 보낼 수 있습니다.
MFA 를 일시적으로 비활성화¶
관리자가 사용자에 대해 MFA 를 일시적으로 비활성화해야 하는 경우 ALTER USER … SET MINS_TO_BYPASS_MFA 문을 실행하면 됩니다. 예를 들어, joe
사용자가 30분 동안 단일 요소 비밀번호로 인증할 수 있도록 MFA 를 일시적으로 비활성화하려면 다음을 실행합니다.
ALTER USER joe SET MINS_TO_BYPASS_MFA = 30;
break glass 액세스를 위한 관리자 설정하기¶
break glass 액세스란 정상적인 인증 방법을 우회하는 액세스를 말합니다. 예를 들어, 조직의 ID 공급자가 다운되는 등 정상적인 인증을 사용할 수 없게 되는 경우 관리자는 Snowflake에 대한 break glass 액세스가 필요합니다.
대부분의 경우 조직은 전용 Snowflake 사용자를 생성하고 암호 키 보관소에 비밀번호 자격 증명을 저장하여 보안 액세스를 제공합니다. MFA 를 적용하면 이 비밀번호를 사용하는 모든 관리자는 두 번째 인증 요소로 사용할 수 있는 자체 MFA 방법을 보유해야 합니다. 이러한 경우 각 관리자는 인증자 앱을 두 번째 요소로 사용할 수 있도록 TOTP MFA 방법을 설정하는 것이 좋습니다. MFA 방법을 구성할 때 설명적인 설명을 사용하면 관리자를 구분하는 데 도움이 될 수 있습니다.
MFA를 사용하여 Snowflake에 연결하기¶
MFA 로그인은 기본적으로 웹 인터페이스를 통해 Snowflake에 연결하도록 설계되었지만, SnowSQL 및 Snowflake JDBC, Node.js, ODBC 드라이버도 완전하게 지원됩니다.
MFA 토큰 캐싱을 사용하여 인증 도중 프롬프트 수 최소화하기 — 선택 사항¶
MFA 토큰 캐싱은 Snowflake에 연결하여 인증하는 동안, 특히 상대적으로 짧은 기간 동안 여러 연결 시도가 수행될 때 확인해야 하는 프롬프트의 수를 줄여줍니다.
캐시된 MFA 토큰은 최대 4시간 동안 유효합니다.
캐시된 MFA 토큰은 다음 조건 중 하나가 충족되는 경우 유효하지 않습니다.
계정에 대한 ALLOW_CLIENT_MFA_CACHING 매개 변수가 FALSE로 설정되었습니다.
인증 방법이 변경됩니다.
인증 자격 증명(즉, 사용자 이름 및/또는 비밀번호)이 변경됩니다.
인증 자격 증명이 유효하지 않습니다.
캐시된 토큰이 만료되거나 암호학적으로 유효하지 않습니다.
캐시된 토큰과 연결된 계정 이름이 변경됩니다.
MFA 토큰을 캐시하기 위해 Snowflake에서 사용하는 전체 프로세스는 브라우저 기반 페더레이션 SSO(single sign-on) 용 연결 토큰을 캐시하기 위해 사용되는 프로세스와 유사합니다. 클라이언트 애플리케이션은 클라이언트측 운영 체제의 키 저장소에 MFA 토큰을 저장합니다. 사용자는 언제라도 캐시된 MFA 토큰을 키 저장소에서 삭제할 수 있습니다.
Snowflake는 macOS와 Windows에서 다음 드라이버, 커넥터 및 도구로 MFA 토큰 캐싱을 지원합니다. 이 기능은 Linux에서 지원되지 않습니다.
Snowflake CLI 버전 3.0 이상
ODBC 드라이버 버전 2.23.0 이상.
JDBC 드라이버 버전 3.12.16 이상.
Snowflake용 Python Connector 버전 2.3.7 이상.
Snowflake는 내부 보안 및 컴플라이언스 책임자에게 문의한 후 MFA 토큰 캐싱을 활성화할 것을 권장합니다.
팁
MFA 토큰 캐싱은 페더레이션 SSO(single sign-on) 에서 연결 캐싱과 결합할 수 있습니다.
이 두 기능을 결합하려면 ALLOW_ID_TOKEN 매개 변수가 ALLOW_CLIENT_MFA_CACHING 매개 변수와 함께 true
로 설정되었는지 확인하십시오.
MFA 토큰 캐싱을 활성화하려면 다음 단계를 완료하십시오.
계정 관리자(즉, ACCOUNTADMIN 시스템 역할 사용자)로, ALTER ACCOUNT 명령을 사용하여 계정에 대한 ALLOW_CLIENT_MFA_CACHING 매개 변수를
true
로 설정합니다.ALTER ACCOUNT SET ALLOW_CLIENT_MFA_CACHING = TRUE;
클라이언트 연결 문자열에서 인증자 값을
authenticator = username_password_mfa
로 업데이트합니다.드라이버 또는 커넥터에 필요한 패키지 또는 라이브러리를 추가합니다.
Python용 Snowflake Connector를 사용 중인 경우에는 다음을 실행하여 옵션으로 제공되는 인증 키 패키지를 설치합니다.
pip install "snowflake-connector-python[secure-local-storage]"
명령에서와 같이 대괄호(
[
및]
)를 반드시 입력해야 합니다. 대괄호는 설치해야 하는 패키지의 추가 부분 을 지정합니다.예시와 같이 패키지 이름 주위에 따옴표를 사용하여 대괄호가 와일드카드로 해석되지 않도록 합니다.
다른 추가 항목(예: Pandas용 Python Connector APIs를 사용 하기 위한
pandas
)을 설치해야 하는 경우에는 추가 항목 사이에 쉼표를 사용합니다.pip install "snowflake-connector-python[secure-local-storage,pandas]"
Snowflake JDBC 드라이브에 대한 내용은 JNA 클래스를 클래스 경로에 추가하기 를 참조하십시오.
MFA 토큰 캐싱을 비활성화하려면 ALLOW_CLIENT_MFA_CACHING 매개 변수의 설정을 해제합니다.
ALTER ACCOUNT UNSET ALLOW_CLIENT_MFA_CACHING;
로그인하기 위한 두 번째 인증으로 MFA 토큰 캐싱을 사용하는 모든 사용자를 찾으려면 계정 관리자(ACCOUNTADMIN 역할을 가진 사용자)로 다음 SQL 문을 실행할 수 있습니다.
SELECT EVENT_TIMESTAMP,
USER_NAME,
IS_SUCCESS
FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
WHERE SECOND_AUTHENTICATION_FACTOR = 'MFA_TOKEN';
SnowSQL에서 MFA 사용하기¶
MFA를 사용하여 SnowSQL을 통해 Snowflake에 연결할 수 있습니다. 기본적으로 사용자가 MFA에 등록할 때 Duo Push 인증 방법을 사용할 수 있습니다.
푸시 방법 대신 Duo에서 생성되는 암호를 사용하려면 로그인 매개 변수에 다음 연결 옵션 중 1개를 반드시 포함해야 합니다.
--mfa-passcode <문자열>
또는--mfa-passcode-in-password
자세한 내용은 SnowSQL(CLI 클라이언트) 섹션을 참조하십시오.
JDBC에서 MFA 사용하기¶
MFA를 사용하여 Snowflake JDBC 드라이버를 통해 Snowflake에 연결할 수 있습니다. 기본적으로 사용자가 MFA에 등록할 때 Duo Push 인증 방법을 사용할 수 있으며, JDBC 연결 문자열을 변경할 필요가 없습니다.
푸시 방법 대신 Duo에서 생성되는 암호를 사용하려면 JDBC 연결 문자열에 다음 매개 변수 중 1개를 반드시 포함해야 합니다.
passcode=<암호_문자열>
또는passcodeInPassword=on
여기서
passcode_string
은 연결 중인 사용자를 위해 Duo가 생성한 암호입니다. 이 암호는 Duo Mobile 애플리케이션 또는 SMS 암호에서 생성된 암호일 수 있습니다.passcodeInPassword=on
인 경우,<비밀번호_문자열><암호_문자열>
의 형식으로 비밀번호와 암호가 연결됩니다.
자세한 내용은 JDBC 드라이버 섹션을 참조하십시오.
Duo를 사용한 JDBC 연결 문자열의 예¶
Duo 암호를 사용하여 xy12345
계정(US 서부 리전)에 연결하는 demo
사용자를 위한 JDBC 연결 문자열:
jdbc:snowflake://xy12345.snowflakecomputing.com/?user=demo&passcode=123456
비밀번호에 포함된 Duo 암호를 사용하여 xy12345
계정(US 서부 리전)에 연결하는 demo
사용자를 위한 JDBC 연결 문자열:
jdbc:snowflake://xy12345.snowflakecomputing.com/?user=demo&passcodeInPassword=on
Node.js와 함께 MFA 사용하기¶
MFA를 사용하여 Snowflake Node.js 드라이버를 통해 Snowflake에 연결할 수 있습니다. 기본적으로 사용자가 MFA에 등록할 때 Duo Push 인증 방법을 사용할 수 있습니다.
푸시 방법 대신 Duo에서 생성되는 암호를 사용하려면 로그인 매개 변수에 다음 연결 옵션 중 1개를 반드시 포함해야 합니다. 두 예제 모두에서 비밀번호는:codenowrap:abc123
을 사용하고 MFA 암호는:codenowrap:987654
를 사용하여 구성을 설명합니다.
다음과 같이 비밀번호 문자열의 일부로 비밀번호를 포함하도록
passcodeInPassword
옵션을true
로 설정합니다.authenticator: 'USERNAME_PASSWORD_MFA', password: "abc123987654", // passcode 987654 is part of the password passcodeInPassword: true // because passcodeInPassword is true
다음과 같이 비밀번호와 암호를 별도로 지정하려면
passcode
옵션을 암호의 값으로 설정합니다.authenticator: 'USERNAME_PASSWORD_MFA', password: "abc123", // password and MFA passcode are input separately passcode: "987654"
이 방법을 사용하려면
passcodeInPassword
옵션이false
(기본값)인지 확인합니다.passcodeInPassword
가 모두true
로 설정되어 있고:codenowrap:passcode
도 구성된 경우,:codenowrap:passcodeInPassword
설정이 우선 적용되며 드라이버는 인증 시:codenowrap:password
필드에 비밀번호와 MFA 암호가 모두 포함되어 있는 것으로 가정합니다.
자세한 내용은 MFA 암호 사용하기 섹션을 참조하십시오.
ODBC에서 MFA 사용하기¶
MFA를 사용하여 Snowflake ODBC 드라이버를 통해 Snowflake에 연결할 수 있습니다. 기본적으로 사용자가 MFA에 등록할 때 Duo Push 인증 방법을 사용할 수 있으며, ODBC 설정을 변경할 필요가 없습니다.
푸시 방법 대신 Duo에서 생성되는 암호를 사용하려면 드라이버에 다음 매개 변수 중 1개를 반드시 지정해야 합니다.
passcode=<암호_문자열>
또는passcodeInPassword=on
여기서
passcode_string
은 연결 중인 사용자를 위해 Duo가 생성한 암호입니다. 이 암호는 Duo Mobile 애플리케이션 또는 SMS 암호에서 생성된 암호일 수 있습니다.passcodeInPassword=on
인 경우,<비밀번호_문자열><암호_문자열>
의 형식으로 비밀번호와 암호가 연결됩니다.
자세한 내용은 ODBC 드라이버 섹션을 참조하십시오.
Python에서 MFA 사용하기¶
MFA를 사용하여 Snowflake Python Connector를 통해 Snowflake에 연결할 수 있습니다. 기본적으로 사용자가 MFA에 등록할 때 Duo Push 인증 방법을 사용할 수 있으며, Python API 호출을 변경할 필요가 없습니다.
푸시 방법 대신 Duo에서 생성되는 암호를 사용하려면 connect() 메서드에서 드라이버에 다음 매개 변수 중 1개를 반드시 지정해야 합니다.
passcode=<암호_문자열>
또는passcode_in_password=True
여기서
passcode_string
은 연결 중인 사용자를 위해 Duo가 생성한 암호입니다. 이 암호는 Duo Mobile 애플리케이션 또는 SMS 암호에서 생성된 암호일 수 있습니다.passcode_in_password=True
인 경우,<비밀번호_문자열><암호_문자열>
의 형식으로 비밀번호와 암호가 연결됩니다.
자세한 내용은 Python Connector API 설명서의 함수 섹션에서 제공되는 connect() 메서드에 대한 설명을 참조하십시오.