인증 정책 변경
인증 정책 변경 (ALTER AUTHENTICATION POLICY)
authentication policy의 속성을 수정해요.
함께 보기:
CREATE AUTHENTICATION POLICY, DESCRIBE AUTHENTICATION POLICY, DROP AUTHENTICATION POLICY, SHOW AUTHENTICATION POLICIES
출처: 문서
본문
Syntax
ALTER AUTHENTICATION POLICY RENAME TO
ALTER AUTHENTICATION POLICY [ IF EXISTS ] SET
[ AUTHENTICATION_METHODS = ( '' [ , '' , ... ] ) ]
[ CLIENT_TYPES = ( '' [ , '' , ... ] ) ]
[ CLIENT_POLICY = ( = ( MINIMUM_VERSION = '' ) [ , ... ] ) ]
[ SECURITY_INTEGRATIONS = ( '' [ , '' , ... ] ) ]
[ MFA_ENROLLMENT = { 'REQUIRED' | 'REQUIRED_PASSWORD_ONLY' | 'OPTIONAL' } ]
[ MFA_POLICY = ( ) ]
[ PAT_POLICY = ( ) ]
[ WORKLOAD_IDENTITY_POLICY = ( ) ]
[ COMMENT = '' ]
ALTER AUTHENTICATION POLICY [ IF EXISTS ] UNSET
[ AUTHENTICATION_METHODS ]
[ CLIENT_TYPES ]
[ CLIENT_POLICY ]
[ SECURITY_INTEGRATIONS ]
[ MFA_ENROLLMENT ]
[ MFA_POLICY ]
[ PAT_POLICY ]
[ WORKLOAD_IDENTITY_POLICY ]
[ COMMENT ]
[ DCM PROJECT ]
Parameters
name
변경할 인증 정책의 식별자를 지정해요.
식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 해요.
큰따옴표로 묶인 식별자는 대소문자를 구분해요.
자세한 내용은 Identifier requirements를 참조해요.
RENAME TO ...
기존 인증 정책의 새 이름을 지정해요.
SET ...
인증 정책에 설정할 하나 이상의 속성을 지정해요. 속성은 공백, 쉼표 또는 새 줄로 구분해요.
AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )
로그인 중 허용되는 인증 방법을 변경해요. 이 매개변수는 다음 값 중 하나 이상을 허용해요.
인증 방법을 제한하면 드라이버 연결이나 타사 통합이 차단되는 등 의도하지 않은 결과가 발생할 수 있어요.
-
ALL모든 인증 방법을 허용해요.
-
SAMLSAML2 security integrations를 허용해요.
SAML이 있으면 SSO 로그인 옵션이 나타나요.SAML이 없으면 SSO 로그인 옵션이 나타나지 않아요. -
OIDCOIDC security integrations를 허용해요.
OIDC가 있으면 OIDC SSO 로그인 옵션이 나타나요.OIDC가 없으면 OIDC SSO 로그인 옵션이 나타나지 않아요. -
PASSWORD사용자가 사용자 이름과 비밀번호로 인증할 수 있게 해요.
-
OAUTHExternal OAuth를 허용해요.
-
KEYPAIRKey pair authentication을 허용해요.
-
PROGRAMMATIC_ACCESS_TOKEN사용자가 programmatic access token으로 인증할 수 있게 해요.
-
WORKLOAD_IDENTITY사용자가 workload identity federation을 통해 인증할 수 있게 해요.
기본값: ALL.
CLIENT_TYPES = ( 'string_literal' [ , 'string_literal' , ... ] )
Snowflake에 인증할 수 있는 클라이언트를 변경해요.
클라이언트가 연결을 시도할 때 아래 나열된 유효한 CLIENT_TYPES 값 중 하나가 아니면 로그인 시도가 실패해요.
MFA_ENROLLMENT를 REQUIRED로 설정한 경우 사용자가 MFA에 등록할 수 있도록 CLIENT_TYPES 목록에 SNOWFLAKE_UI를 포함해야 해요.
CLIENT_TYPES 목록에서 SNOWFLAKE_UI를 제외하려면 MFA_ENROLLMENT를 OPTIONAL로 설정해야 해요.
%authentication-policies-client-types-limitation-info%
이 속성은 다음 값 중 하나 이상을 허용해요.
-
ALL모든 클라이언트가 인증할 수 있게 해요.
-
SNOWFLAKE_UI%sf-web-interface-link%, Snowflake 웹 인터페이스예요.
%authentication-policies-client-types-mfa-enrollment-requirement%.
-
DRIVERS드라이버는 supported languages로 작성된 애플리케이션에서 Snowflake에 접근할 수 있게 해요. 예를 들어 Go, JDBC, .NET 드라이버와 Snowpipe Streaming이 있어요.
DRIVERS가CLIENT_TYPES목록에 없으면 자동 수집이 중단될 수 있어요. -
SNOWFLAKE_CLISnowflake에 연결하고 개발자 중심 워크로드와 SQL 작업을 관리하기 위한 command-line client예요.
-
SNOWSQLSnowflake에 연결하기 위한 command-line client예요.
클라이언트가 연결을 시도할 때 유효한 CLIENT_TYPES 중 하나가 아니면 로그인 시도가 실패해요. CLIENT_TYPES가 설정되지 않은 경우 모든 클라이언트가 연결할 수 있어요.
기본값: 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' , ... ] )
인증 정책과 연결된 보안 통합(security integrations)을 변경해요. 이 매개 변수는 AUTHENTICATION_METHODS 목록에 SAML, OIDC, 또는 OAUTH가 없으면 아무 효과가 없어요.
SECURITY_INTEGRATIONS 목록의 모든 값은 AUTHENTICATION_METHODS 목록의 값과 호환되어야 해요. 예를 들어, SECURITY_INTEGRATIONS에 SAML 보안 통합이 포함되어 있고 AUTHENTICATION_METHODS에 OAUTH가 포함되어 있으면 인증 정책을 만들 수 없어요. 마찬가지로, SECURITY_INTEGRATIONS에 OIDC 보안 통합이 포함되어 있고 AUTHENTICATION_METHODS에 SAML만 포함되어 있어도 인증 정책을 만들 수 없어요.
ALL
모든 보안 통합을 허용해요.
기본값: ALL.
MFA_ENROLLMENT = { 'REQUIRED' | 'REQUIRED_PASSWORD_ONLY' | 'OPTIONAL' }
사용자가 다중 인증(MFA)에 등록해야 하는지 여부를 결정해요. 이 값을 사용하는 경우 CLIENT_TYPES 매개 변수에 SNOWFLAKE_UI가 포함되어야 해요. %sf-web-interface%가 사용자가 다중 인증(MFA)에 등록할 수 있는 유일한 장소이기 때문이에요.
REQUIRED
비밀번호 또는 SSO(단일 로그인) 인증을 사용하는 인간 사용자는 MFA에 등록해야 해요.
REQUIRED_PASSWORD_ONLY
비밀번호 인증을 사용하는 모든 인간 사용자는 사용 중인 클라이언트에 관계없이 MFA에 등록해야 해요. SSO 인증을 사용하는 사용자는 등록할 필요가 없어요.
OPTIONAL
이전 버전과의 호환성을 위해서만 유지돼요.
MFA_POLICY= ( list_of_properties )
다중 인증(MFA)이 적용되는 방식에 영향을 주는 정책을 지정해요. 다음 속성 및 값 중 하나 이상을 공백으로 구분한 목록으로 설정해요:
ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'OTP' | 'DUO' } [ , { 'PASSKEY' | 'TOTP' | 'OTP' | 'DUO' } ... ] )
사용자가 두 번째 인증 요소로 사용할 수 있는 다중 인증(MFA) 방법을 지정해요. 쉼표로 구분된 목록으로 여러 방법을 지정할 수 있어요.
ALL
사용자는 패스키(passkey), 인증 앱(authenticator app), 또는 Duo를 두 번째 인증 요소로 사용할 수 있어요.
PASSKEY
사용자는 패스키를 두 번째 인증 요소로 사용할 수 있어요.
TOTP
사용자는 인증 앱을 두 번째 인증 요소로 사용할 수 있어요.
OTP
사용자는 일회용 비밀번호(one-time passcode)를 두 번째 인증 요소로 사용할 수 있어요. 자세한 내용은 를 참조해요.
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일이에요.
MAX_EXPIRY_IN_DAYS = number_of_days
프로그래밍 방식 액세스 토큰의 만료 시간으로 설정할 수 있는 최대 일 수를 지정해요. 기본 만료 시간(DEFAULT_EXPIRY_IN_DAYS를 설정하여 지정할 수 있어요)부터 365까지의 값을 지정할 수 있어요.
기본 최대 만료 시간은 365일이에요.
만료 시간이 새 최대 만료 시간을 초과하는 기존 프로그래밍 방식 액세스 토큰이 있는 경우, 해당 토큰으로 인증하려는 시도는 실패해요.
예를 들어, 만료 시간이 7일인 my_token이라는 프로그래밍 방식 액세스 토큰을 생성했다고 가정해요. 나중에 모든 토큰의 최대 만료 시간을 2일로 변경하면, 토큰의 만료 시간이 새 최대 만료 시간을 초과하므로 my_token으로 인증하면 실패해요.
NETWORK_POLICY_EVALUATION = { ENFORCED_REQUIRED | ENFORCED_NOT_REQUIRED | NOT_ENFORCED }
프로그래밍 방식 액세스 토큰에 대한 네트워크 정책 요구 사항이 처리되는 방식을 지정해요.
기본적으로 사용자는 프로그래밍 방식 액세스 토큰을 생성하거나 사용하려면 하나 이상의 네트워크 규칙이 포함된 네트워크 정책의 적용을 받아야 해요:
- 서비스 사용자(
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 )
workload identity federation에 대한 정책을 지정해요. 이 값을 다음 속성과 값 중 하나 이상을 포함하는 공백으로 구분된 목록으로 설정하세요:
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//v2.0
ALLOWED_OIDC_ISSUERS = ( 'string_literal' [ , 'string_literal' , ... ] )
OIDC 유형의 워크로드 ID 인증 중 인증 정책에서 허용하는 OIDC 발급자 목록을 지정해요.
기본적으로 Snowflake 서비스 사용자에게 OIDC 유형의 WORKLOAD_IDENTITY가 있으면 발급자는 유효한 OIDC 발급자라면 무엇이든 될 수 있어요. 이 매개변수를 설정하면 지정된 OIDC 발급자의 토큰만 인증할 수 있어요.
각 요소는 scheme, host, 그리고 선택적으로 port number와 path 구성 요소를 포함하지만 query나 fragment 구성 요소는 포함하지 않는 유효한 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'
인증 정책에 대한 주석을 변경해요.
UNSET ...
인증 정책에서 설정을 해제할 속성을 지정해요. 이렇게 하면 속성이 기본값으로 재설정돼요.
UNSET DCM PROJECT
현재 인증 정책을 관리하는 DCM project에서 인증 정책을 분리해요. 이 명령은 인증 정책을 삭제하지 않고 인증 정책과 %dcm-object% 사이의 연결을 제거해요. 자세한 내용은 를 참조하세요.
액세스 제어 요구 사항
이 작업을 실행하는 데 사용되는 role은 최소한 다음 privileges을 보유해야 해요:
| 권한 | 개체 | 참고 |
|---|---|---|
| OWNERSHIP | 인증 정책 | %ac-securityadmin% |
스키마의 개체를 운영하려면 상위 데이터베이스에 대한 권한이 하나 이상 필요하고 상위 스키마에 대한 권한도 하나 이상 필요해요.
지정된 권한 집합으로 사용자 지정 역할을 만드는 방법에 대한 지침은 를 참조하세요.
securable objects에 대해 SQL 작업을 수행하기 위한 역할 및 권한 부여에 대한 일반적인 정보는 Overview of Access Control를 참조하세요.
사용 참고 사항
- 기존 인증 정책을 업데이트하려고 하고 정책의 정의를 확인해야 한다면 DESCRIBE AUTHENTICATION POLICY 명령이나 GET_DDL 함수를 실행하세요.
예시
인증 정책에서 허용된 클라이언트 목록을 변경해요:
ALTER AUTHENTICATION POLICY restrict_client_types_policy
SET CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWSQL');