CREATE AUTHENTICATION POLICY

CREATE AUTHENTICATION POLICY

현재 또는 지정된 스키마에 새 인증 정책(authentication policy)을 만들거나 기존 인증 정책을 교체하는 명령이에요. 인증 정책을 사용해 계정이나 사용자에 대한 인증 컨트롤과 보안 요구사항을 정의할 수 있어요.

출처: 문서

본문

이 명령은 다음 변형을 지원해요:

관련 명령: ALTER AUTHENTICATION POLICY, DESCRIBE AUTHENTICATION POLICY, DROP AUTHENTICATION POLICY, SHOW AUTHENTICATION POLICIES

구문 (Syntax)

CREATE [ OR REPLACE ] AUTHENTICATION POLICY [ IF NOT EXISTS ] <name>
  [ AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ CLIENT_POLICY = ( <client_type> = ( MINIMUM_VERSION = '<version>' ) [ , ... ] ) ]
  [ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
  [ MFA_ENROLLMENT = { 'REQUIRED' | 'REQUIRED_PASSWORD_ONLY' | 'OPTIONAL' } ]
  [ MFA_POLICY = ( <list_of_properties> ) ]
  [ PAT_POLICY = ( <list_of_properties> ) ]
  [ WORKLOAD_IDENTITY_POLICY = ( <list_of_properties> ) ]
  [ COMMENT = '<string_literal>' ]

변형 구문 (Variant syntax)

CREATE OR ALTER AUTHENTICATION POLICY

인증 정책이 없으면 새로 만들고, 있으면 문에 정의된 인증 정책으로 수정해요. CREATE OR ALTER AUTHENTICATION POLICY 문은 CREATE AUTHENTICATION POLICY 문의 구문 규칙을 따르고 ALTER AUTHENTICATION POLICY 문과 같은 제한이 있어요.

자세한 내용은 CREATE OR ALTER 를 참고하세요.

CREATE OR ALTER AUTHENTICATION POLICY <name>
  [ AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ CLIENT_POLICY = ( <client_type> = ( MINIMUM_VERSION = '<version>' ) [ , ... ] ) ]
  [ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
  [ MFA_ENROLLMENT = { 'REQUIRED' | 'REQUIRED_PASSWORD_ONLY' | 'OPTIONAL' } ]
  [ MFA_POLICY = ( <list_of_properties> ) ]
  [ PAT_POLICY = ( <list_of_properties> ) ]
  [ WORKLOAD_IDENTITY_POLICY = ( <list_of_properties> ) ]
  [ COMMENT = '<string_literal>' ]

필수 파라미터 (Required parameters)

*name*

인증 정책의 식별자를 지정해요.

식별자는 영문자로 시작해야 하고, 전체 식별자 문자열을 큰따옴표로 감싸지 않는 한 공백이나 특수 문자를 포함할 수 없어요(예: "My object"). 큰따옴표로 감싼 식별자는 대소문자를 구분해요.

자세한 내용은 Identifier requirements를 참고하세요.

선택 파라미터 (Optional parameters)

AUTHENTICATION_METHODS = ( '*string_literal*' [ , '*string_literal*' , ... ] )

주의

인증 방법으로 제한하면 드라이버 연결이나 타사 통합이 차단되는 등 의도하지 않은 결과가 발생할 수 있어요.

로그인 중 허용되는 인증 방법 목록이에요. 이 파라미터는 다음 값 중 하나 이상을 받아들여요:

ALL

모든 인증 방법을 허용해요.

SAML

SAML2 보안 통합을 허용해요. SAML이 있으면 SSO 로그인 옵션이 나타나요. SAML이 없으면 SSO 로그인 옵션이 나타나지 않아요.

OIDC

OIDC 보안 통합을 허용해요. OIDC가 있으면 OIDC SSO 로그인 옵션이 나타나요. OIDC가 없으면 OIDC SSO 로그인 옵션이 나타나지 않아요.

PASSWORD

사용자가 사용자 이름과 암호로 인증할 수 있게 해요.

OAUTH

External OAuth를 허용해요.

KEYPAIR

키 페어 인증(Key pair authentication)을 허용해요.

PROGRAMMATIC_ACCESS_TOKEN

사용자가 프로그래매틱 액세스 토큰(programmatic access token)으로 인증할 수 있게 해요.

WORKLOAD_IDENTITY

사용자가 워크로드 ID 페더레이션(workload identity federation)을 통해 인증할 수 있게 해요.

기본값: ALL.

CLIENT_TYPES = ( '*string_literal*' [ , '*string_literal*' , ... ] )

Snowflake로 인증할 수 있는 클라이언트 목록이에요.

클라이언트가 연결을 시도할 때 아래 나열된 유효한 CLIENT_TYPES 값 중 하나가 아니면 로그인 시도가 실패해요.

MFA_ENROLLMENTREQUIRED로 설정하면 사용자가 MFA에 등록할 수 있도록 CLIENT_TYPES 목록에 SNOWFLAKE_UI를 반드시 포함해야 해요.

CLIENT_TYPES 목록에서 SNOWFLAKE_UI를 제외하려면 MFA_ENROLLMENTOPTIONAL로 설정해야 해요.

인증 정책의 CLIENT_TYPES 속성은 특정 클라이언트에 기반해 사용자 로그인을 차단하는 노력형(best-effort) 방법이에요. 보안 경계를 설정하기 위한 유일한 컨트롤로 사용해서는 안 돼요. 특히 Snowflake REST API에 대한 접근을 제한하지 않아요.

이 파라미터는 다음 값 중 하나 이상을 받아들여요:

ALL

모든 클라이언트가 인증할 수 있게 해요.

SNOWFLAKE_UI

Snowsight, Snowflake 웹 인터페이스.

주의

MFA_ENROLLMENTREQUIRED로 설정되거나 지정되지 않은 동안 CLIENT_TYPES 목록에 SNOWFLAKE_UI가 없으면 MFA 등록이 작동하지 않아요.

DRIVERS

드라이버는 지원 언어로 작성된 애플리케이션에서 Snowflake에 접근할 수 있게 해요. 예: Go, JDBC, .NET 드라이버, 그리고 Snowpipe Streaming.

주의

CLIENT_TYPES 목록에 DRIVERS가 없으면 자동 수집(automated ingestion)이 작동을 멈출 수 있어요.

SNOWFLAKE_CLI

Snowflake 연결 및 개발자 중심 워크로드와 SQL 작업 관리용 명령줄 클라이언트.

SNOWSQL

Snowflake 연결용 명령줄 클라이언트.

기본값: ALL.

CLIENT_POLICY = client_type = ( MINIMUM_VERSION = 'version' )

인증 정책 내에서 지정된 각 클라이언트 유형에 허용되는 최소 버전을 설정하는 정책을 지정해요.

CLIENT_TYPES가 비어 있거나 ALL 또는 DRIVERS를 포함하면, CLIENT_POLICY 파라미터는 다음 드라이버 클라이언트 중 하나 이상(및 특정 버전 문자열)을 받아들여요. 지정되지 않은 드라이버 클라이언트에 대해서는 정책이 해당 클라이언트의 모든 버전을 암시적으로 허용해요.

CLIENT_TYPES가 SNOWFLAKE_CLI 같은 다른 값을 포함하고 DRIVERS도 포함하지 않으면, 다음 클라이언트 유형 중 하나를 지정하면 오류가 발생해요. CLIENT_TYPES와 CLIENT_POLICY 파라미터가 호환되지 않도록 인증 정책을 만들(또는 수정) 수 없어요.

client_type

유효한 클라이언트 유형 값 하나 이상이에요. 이 값 세트는 CLIENT_TYPES 파라미터가 받아들이는 값들과 다르다는 점에 유의하세요. 이 값들에는 작은따옴표를 사용하지 마세요.

  • JDBC_DRIVER (Snowflake JDBC Driver)

  • ODBC_DRIVER (Snowflake ODBC Driver)

  • PYTHON_DRIVER (Snowflake Python Driver)

  • JAVASCRIPT_DRIVER (Snowflake Javascript Driver)

  • C_DRIVER (Libsnowflakeclient C Driver)

  • GO_DRIVER (Snowflake Go Driver)

  • PHP_DRIVER (Snowflake PHP PDO Driver)

  • DOTNET_DRIVER (Snowflake .NET Driver)

  • SQL_API (SQL API)

  • SNOWPIPE_STREAMING_CLIENT_SDK (Snowpipe Streaming Client SDK)

  • PY_CORE (Snowflake Python Core Driver)

  • SPROC_PYTHON (Snowflake Python Stored Procedure)

  • PYTHON_SNOWPARK (Snowflake Python Snowpark Driver)

  • SQL_ALCHEMY (Snowflake SQLAlchemy)

  • SNOWPARK (Snowpark)

  • SNOWFLAKE_CLIENT (Snowflake Client SDK)

'version'

지정된 각 클라이언트 유형의 최소 허용 버전: 마침표로 구분되고 작은따옴표로 묶인 세 자리 숫자 시퀀스예요. 예: '1.0.0' 또는 '3.14.1'. 이 정책이 계정 또는 사용자에 적용될 때 더 낮은 클라이언트 버전의 인증 시도는 차단돼요.

인증 정책의 CLIENT_POLICY 속성은 특정 클라이언트 버전에 기반해 사용자 로그인을 차단하는 노력형 방법이에요. 보안 경계를 설정하기 위한 유일한 컨트롤로 사용해서는 안 돼요.

SECURITY_INTEGRATIONS = ( '*string_literal*' [ , '*string_literal*' , ... ] )

인증 정책과 연결된 보안 통합 목록이에요. AUTHENTICATION_METHODS 목록에 SAML, OIDC, OAUTH가 없으면 이 파라미터는 효과가 없어요.

SECURITY_INTEGRATIONS 목록의 모든 값은 AUTHENTICATION_METHODS 목록의 값과 호환되어야 해요. 예를 들어 SECURITY_INTEGRATIONS에 SAML 보안 통합이 있고 AUTHENTICATION_METHODSOAUTH가 있으면 인증 정책을 만들 수 없어요. 마찬가지로 SECURITY_INTEGRATIONS에 OIDC 보안 통합이 있고 AUTHENTICATION_METHODSSAML만 있으면 인증 정책을 만들 수 없어요.

ALL

모든 보안 통합을 허용해요.

기본값: ALL.

MFA_ENROLLMENT = { 'REQUIRED' | 'REQUIRED_PASSWORD_ONLY' | 'OPTIONAL' }

사용자가 다중 인증(multi-factor authentication, MFA)에 등록해야 하는지 여부를 결정해요. 이 값을 사용하면 CLIENT_TYPES 파라미터가 SNOWFLAKE_UI를 반드시 포함해야 해요. 사용자가 MFA에 등록할 수 있는 유일한 곳이 Snowsight이기 때문이에요.

MFA_ENROLLMENT 파라미터의 값이 REQUIRED_SNOWFLAKE_UI_PASSWORD_ONLY일 수 있어요. 이 값은 Snowflake의 단일 요소 암호에 대한 점진적 폐지(gradual deprecation)의 일부이고 직접 설정할 수 없어요. DESCRIBE AUTHENTICATION POLICY 명령을 실행했는데 MFA_ENROLLMENT = 'REQUIRED_SNOWFLAKE_UI_PASSWORD_ONLY'이면, 암호 사용자는 Snowsight를 사용할 때 MFA에 등록해야 해요.

REQUIRED

암호 또는 단일 로그온(SSO) 인증을 사용하는 인간 사용자는 MFA에 등록해야 해요.

REQUIRED_PASSWORD_ONLY

암호 인증을 사용하는 모든 인간 사용자는 사용하는 클라이언트와 무관하게 MFA에 등록해야 해요. SSO 인증을 사용하는 사용자는 등록이 필요하지 않아요.

OPTIONAL

호환성 목적으로만 유지돼요.

기본값: OPTIONAL. 호환성을 위해 MFA_ENROLLMENT 값을 지정하지 않고 인증 정책을 만들 수 있지만, Snowflake가 모든 인간 사용자에 대해 MFA를 요구하는 방향으로 움직이고 있기 때문에 실제로 강제되는 값은 OPTIONAL이 아니에요. 기존 인증 정책에 대해 강제되는 값을 확인하려면 DESCRIBE AUTHENTICATION POLICY 명령을 실행해요.

MFA_POLICY= ( list_of_properties )

다중 인증(MFA)이 어떻게 강제되는지에 영향을 주는 정책을 지정해요. 다음 속성과 값 중 하나 이상의 공백으로 구분된 목록으로 설정해요:

ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'OTP' | 'DUO' } [ , { 'PASSKEY' | 'TOTP' | 'OTP' | 'DUO' } ... ] )

사용자가 인증의 두 번째 요소로 사용할 수 있는 MFA 방법을 지정해요. 쉼표로 구분된 목록으로 여러 방법을 지정할 수 있어요.

ALL

사용자는 인증의 두 번째 요소로 passkey, 인증기 앱, Duo를 사용할 수 있어요.

PASSKEY

사용자는 인증의 두 번째 요소로 passkey를 사용할 수 있어요.

TOTP

사용자는 인증의 두 번째 요소로 인증기 앱을 사용할 수 있어요.

OTP

사용자는 인증의 두 번째 요소로 일회용 패스코드를 사용할 수 있어요. 자세한 내용은 Setting up administrators for break glass access를 참고하세요.

DUO

사용자는 인증의 두 번째 요소로 Duo를 사용할 수 있어요.

기본값: ALL.

ENFORCE_MFA_ON_EXTERNAL_AUTHENTICATION = { 'ALL' | 'NONE' }

사용자가 단일 로그온(SSO)으로 인증할 때 MFA가 필요한지 여부를 지정해요. MFA를 요구하려면 ALL을 지정해요.

기본값: NONE

PAT_POLICY = ( list_of_properties )

프로그래매틱 액세스 토큰에 대한 정책을 지정해요. 다음 속성과 값 중 하나 이상의 공백으로 구분된 목록으로 설정해요:

DEFAULT_EXPIRY_IN_DAYS = number_of_days

프로그래매틱 액세스 토큰의 기본 만료 시간(일)을 지정해요. 1부터 최대 만료 시간(MAX_EXPIRY_IN_DAYS 설정으로 지정)까지의 값을 지정할 수 있어요.

기본 만료 시간은 15일이에요.

자세한 내용은 Setting the default expiration time을 참고하세요.

MAX_EXPIRY_IN_DAYS = number_of_days

프로그래매틱 액세스 토큰의 만료 시간에 설정할 수 있는 최대 일수를 지정해요. 기본 만료 시간(DEFAULT_EXPIRY_IN_DAYS 설정으로 지정)부터 365까지의 값을 지정할 수 있어요.

기본 최대 만료 시간은 365일이에요.

참고

만료 시간이 새 최대 만료 시간을 초과하는 기존 프로그램매틱 액세스 토큰이 있으면, 그 토큰으로 인증하려는 시도는 실패해요.

예를 들어 만료 시간이 7일인 my_token이라는 프로그램매틱 액세스 토큰을 만들었다고 가정해요. 나중에 모든 토큰의 최대 만료 시간을 2일로 변경하면, 토큰의 만료 시간이 새 최대 만료 시간을 초과하므로 my_token으로 인증이 실패해요.

자세한 내용은 Setting the maximum expiration time을 참고하세요.

NETWORK_POLICY_EVALUATION = { ENFORCED_REQUIRED | ENFORCED_NOT_REQUIRED | NOT_ENFORCED }

프로그래매틱 액세스 토큰에 대한 네트워크 정책 요구사항이 어떻게 처리되는지 지정해요.

기본적으로 사용자는 하나 이상의 네트워크 규칙(network rules)이 있는 네트워크 정책(network policy)의 적용을 받아야 프로그램매틱 액세스 토큰을 생성하거나 사용할 수 있어요:

  • 서비스 사용자(TYPE=SERVICE)는 프로그램매틱 액세스 토큰을 생성하고 사용하려면 네트워크 정책의 적용을 받아야 해요.

  • 인간 사용자(TYPE=PERSON)는 프로그램매틱 액세스 토큰을 사용하려면 네트워크 정책의 적용을 받아야 해요.

이 동작을 재정의하려면 이 속성을 다음 값 중 하나로 설정해요:

ENFORCED_REQUIRED (기본 동작)

사용자는 프로그램매틱 액세스 토큰을 생성하고 사용하려면 네트워크 정책의 적용을 받아야 해요.

사용자가 네트워크 정책의 적용을 받으면 인증 중에 네트워크 정책이 강제돼요.

ENFORCED_NOT_REQUIRED

사용자는 프로그램매틱 액세스 토큰을 생성하고 사용하기 위해 네트워크 정책의 적용을 받을 필요가 없어요.

사용자가 네트워크 정책의 적용을 받으면 인증 중에 네트워크 정책이 강제돼요.

NOT_ENFORCED

사용자는 프로그램매틱 액세스 토큰을 생성하고 사용하기 위해 네트워크 정책의 적용을 받을 필요가 없어요.

사용자가 네트워크 정책의 적용을 받아도 인증 중에 네트워크 정책이 강제되지 않아요.

REQUIRE_ROLE_RESTRICTION_FOR_SERVICE_USERS = { TRUE | FALSE }

TRUE이면 서비스 사용자용 프로그램매틱 액세스 토큰을 생성할 때 그 토큰 사용을 특정 역할로 제한해야 해요.

이 파라미터를 FALSE로 설정하면 역할로 제한하지 않고 서비스 사용자용 프로그램매틱 액세스 토큰을 생성할 수 있어요.

REQUIRE_ROLE_RESTRICTION_FOR_SERVICE_USERS를 FALSE에서 TRUE로 변경하면 역할 제한 없이 생성된 서비스 사용자용 프로그램매틱 액세스 토큰이 모두 무효화돼요.

기본값: TRUE

PAT_POLICY 절의 다음 예제는 다음 정책을 지정해요:

  • 기본적으로 프로그램매틱 액세스 토큰은 30일 후 만료돼요.

  • 프로그램매틱 액세스 토큰은 최대 만료 시간 365일을 가져요.

  • 사용자가 네트워크 정책 요구사항의 적용을 받지 않아도 프로그램매틱 액세스 토큰을 생성할 수 있어요. 사용자가 적용받는 네트워크 정책은 여전히 강제돼요.

  • 서비스 사용자용 프로그램매틱 액세스 토큰을 생성할 때 특정 역할 사용으로 토큰을 제한할 필요가 없어요.

PAT_POLICY=(
  DEFAULT_EXPIRY_IN_DAYS=30
  MAX_EXPIRY_IN_DAYS=365
  NETWORK_POLICY_EVALUATION = ENFORCED_NOT_REQUIRED
  REQUIRE_ROLE_RESTRICTION_FOR_SERVICE_USERS = FALSE
);

WORKLOAD_IDENTITY_POLICY = ( list_of_properties )

워크로드 ID 페더레이션에 대한 정책을 지정해요. 다음 속성과 값 중 하나 이상을 포함하는 공백으로 구분된 목록으로 설정해요:

ALLOWED_PROVIDERS = ( { ALL | AWS | AZURE | GCP | OIDC } [ , { AWS | AZURE | GCP | OIDC } ... ] )

워크로드 ID 인증 중에 인증 정책이 허용하는 워크로드 ID 제공자를 지정해요. 이 파라미터를 생략하면 모든 워크로드 ID 제공자가 허용돼요.

ALL

사용자는 지원되고 구성된 모든 워크로드 ID 제공자로 인증할 수 있어요.

AWS

사용자는 AWS IAM 역할 또는 사용자로 인증할 수 있어요.

AZURE

사용자는 Azure Entra ID 액세스 토큰으로 인증할 수 있어요.

GCP

사용자는 Google 서명 ID 토큰으로 인증할 수 있어요.

OIDC

사용자는 구성된 OIDC 제공자의 ID 토큰으로 인증할 수 있어요.

ALLOWED_AWS_ACCOUNTS = ( 'string_literal' [ , 'string_literal' , ... ] )

AWS 유형의 워크로드 ID 인증 중에 인증 정책이 허용하는 AWS 계정 ID 목록을 지정해요.

기본적으로 Snowflake 서비스 사용자가 AWS 유형의 WORKLOAD_IDENTITY를 가지면 ARN은 어떤 AWS 계정도 참조할 수 있어요. 이 파라미터가 설정되면 지정된 AWS 계정 ID의 ARN만 인증이 허용돼요.

각 요소는 AWS 계정 ID를 나타내는 12자리 문자열이어야 해요.

자세한 내용은 View AWS account identifiers를 참고하세요.

ALLOWED_AZURE_ISSUERS = ( 'string_literal' [ , 'string_literal' , ... ] )

AZURE 유형의 워크로드 ID 인증 중에 인증 정책이 허용하는 Azure Entra ID 발급자 목록을 지정해요.

기본적으로 Snowflake 서비스 사용자가 AZURE 유형의 WORKLOAD_IDENTITY를 가지면 발급자는 어떤 Entra ID 테넌트여도 돼요. 이 파라미터가 설정되면 지정된 발급자의 Azure 토큰만 인증이 허용돼요.

각 요소는 다음 형식의 유효한 Authority URL이어야 해요:

  • https://login.microsoftonline.com/<tenantId>/v2.0

ALLOWED_OIDC_ISSUERS = ( 'string_literal' [ , 'string_literal' , ... ] )

OIDC 유형의 워크로드 ID 인증 중에 인증 정책이 허용하는 OIDC 발급자 목록을 지정해요.

기본적으로 Snowflake 서비스 사용자가 OIDC 유형의 WORKLOAD_IDENTITY를 가지면 발급자는 어떤 유효한 OIDC 발급자여도 돼요. 이 파라미터가 설정되면 지정된 OIDC 발급자의 토큰만 인증이 허용돼요.

각 요소는 scheme과 host를 포함하고 선택적으로 포트 번호와 경로 구성 요소를 포함하지만 쿼리나 프래그먼트 구성 요소는 포함하지 않는 유효한 HTTPS URL이어야 해요. URL에는 공백이 없어야 하고 길이가 2048자를 초과하면 안 돼요.

예:

WORKLOAD_IDENTITY_POLICY=(
  ALLOWED_PROVIDERS = (AWS, AZURE, GCP, OIDC)
  ALLOWED_AWS_ACCOUNTS = ('123456789012', '210987654321')
  ALLOWED_AZURE_ISSUERS = ('https://login.microsoftonline.com/8c7832f5-de56-4d9f-ba94-3b2c361abe6b/v2.0',
    'https://login.microsoftonline.com/9ebd1ec9-9a78-4429-8f53-5cf870a812d1/v2.0')
  ALLOWED_OIDC_ISSUERS = ('https://my.custom.oidc.issuer/', 'https://another.custom/oidc/issuer')
);

COMMENT = '*string_literal*'

정책에 대한 설명을 지정해요.

접근 제어 요구사항 (Access control requirements)

이 작업을 실행하는 역할은 최소한 다음 권한을 가져야 해요:

Privilege Object Notes
CREATE AUTHENTICATION POLICY Schema
OWNERSHIP Authentication Policy 기존 인증 정책에 대한 문을 실행하려면 필요해요.

스키마의 객체를 작업하려면 상위 데이터베이스에 최소한 하나의 권한과 상위 스키마에 최소한 하나의 권한이 필요해요.

사용 참고사항 (Usage notes)

  • 인증 정책을 만든 뒤에는 Snowflake가 정책을 강제하기 전에 ALTER ACCOUNT 또는 ALTER USER 명령으로 계정이나 사용자에 설정해야 해요.

  • 기존 인증 정책을 업데이트하고 정책의 정의를 확인해야 한다면 DESCRIBE AUTHENTICATION POLICY 명령 또는 GET_DDL 함수를 실행해요.

  • OR REPLACEIF NOT EXISTS 절은 상호 배타적이에요. 같은 문에서 둘 다 사용할 수 없어요.

  • CREATE OR REPLACE <object> 문은 원자적이에요. 즉 객체를 교체할 때 기존 객체가 삭제되고 새 객체가 단일 트랜잭션으로 만들어져요.

예제 (Examples)

Snowsight를 통해서만 접근을 허용하는 restrict_client_types_policy라는 인증 정책을 만드는 예제예요:

CREATE AUTHENTICATION POLICY restrict_client_types_policy
  CLIENT_TYPES = ('SNOWFLAKE_UI')
  COMMENT = 'Auth policy that only allows access through the web interface';

다중 인증을 설정하고 클라이언트 목록을 업데이트하는 예제예요:

CREATE OR ALTER AUTHENTICATION POLICY restrict_client_types_policy
  MFA_ENROLLMENT = REQUIRED
  CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWFLAKE_CLI');

클라이언트 정책을 포함하는 인증 정책을 만드는 예제예요. 클라이언트 정책이 두 특정 드라이버 클라이언트의 최소 버전을 설정해요:

CREATE AUTHENTICATION POLICY two_driver_policy
  CLIENT_TYPES = ('DRIVERS')
  CLIENT_POLICY = (
    GO_DRIVER = (MINIMUM_VERSION = '1.14.1'),
    JDBC_DRIVER = (MINIMUM_VERSION = '3.25.0')
    )
  COMMENT = 'JDBC and Go Driver minimum versions';

다음 인증 정책 생성 시도는 CLIENT_POLICY 파라미터가 CLIENT_TYPES 파라미터가 허용하지 않는 드라이버를 지정하므로 실패해요:

CREATE AUTHENTICATION POLICY go_driver_policy_test
  CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWFLAKE_CLI')
  CLIENT_POLICY = (GO_DRIVER = (MINIMUM_VERSION = '1.14.1'));
004800 (22023): Authentication policy can not contain CLIENT_POLICY of 'GO_DRIVER' without including 'DRIVERS' in CLIENT_TYPES.

더 많은 예제는 Authentication policies를 참고하세요.

더 알아보기 (Learn more)

ALTER AUTHENTICATION POLICY, DESCRIBE AUTHENTICATION POLICY, DROP AUTHENTICATION POLICY, SHOW AUTHENTICATION POLICIES