CREATE AUTHENTICATION POLICYยถ

์ƒˆ ์ธ์ฆ ์ •์ฑ… ์„ ํ˜„์žฌ ๋˜๋Š” ์ง€์ •๋œ ์Šคํ‚ค๋งˆ์— ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ธฐ์กด ์ธ์ฆ ์ •์ฑ…์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์ • ๋˜๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ธ์ฆ ์ œ์–ด ๋ฐ ๋ณด์•ˆ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ช…๋ น์€ ๋‹ค์Œ ๋ณ€ํ˜•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • CREATE OR ALTER AUTHENTICATION POLICY: ์ธ์ฆ ์ •์ฑ…์ด ์—†๋Š” ๊ฒฝ์šฐ ์ธ์ฆ ์ •์ฑ…์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ์ธ์ฆ ์ •์ฑ…์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํ•ญ๋ชฉ:

ALTER AUTHENTICATION POLICY, DESCRIBE AUTHENTICATION POLICY, DROP AUTHENTICATION POLICY, SHOW AUTHENTICATION POLICIES, CREATE OR ALTER <์˜ค๋ธŒ์ ํŠธ>

๊ตฌ๋ฌธยถ

CREATE [ OR REPLACE ] AUTHENTICATION POLICY [ IF NOT EXISTS ] <name>
  [ AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ MFA_AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ MFA_ENROLLMENT = { REQUIRED | OPTIONAL } ]
  [ MFA_POLICY= ( ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } [ , { 'PASSKEY' | 'TOTP' | 'DUO' } ... ] ) ) ]
  [ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
  [ PAT_POLICY = ( {list_of_properties} ) ]
  [ COMMENT = '<string_literal>' ]
Copy

๋ฒ ๋ฆฌ์–ธํŠธ ๊ตฌ๋ฌธยถ

CREATE OR ALTER AUTHENTICATION POLICYยถ

์ธ์ฆ ์ •์ฑ…์ด ์—†๋Š” ๊ฒฝ์šฐ ์ƒˆ ์ธ์ฆ ์ •์ฑ…์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ธฐ์กด ์ธ์ฆ ์ •์ฑ…์„ ๋ฌธ์— ์ •์˜๋œ ์ธ์ฆ ์ •์ฑ…์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. CREATE OR ALTER AUTHENTICATION POLICY ๋ฌธ์€ CREATE AUTHENTICATION POLICY ๋ฌธ์˜ ๊ตฌ๋ฌธ ๊ทœ์น™์„ ๋”ฐ๋ฅด๋ฉฐ ALTER AUTHENTICATION POLICY ๋ฌธ๊ณผ ์ œํ•œ ์‚ฌํ•ญ์ด ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

CREATE OR ALTER AUTHENTICATION POLICY <name>
  [ AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ MFA_AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ MFA_ENROLLMENT = { REQUIRED | OPTIONAL } ]
  [ MFA_POLICY= ( ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } [ , { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } ... ] ) ) ]
  [ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
  [ PAT_POLICY = ( {list_of_properties} ) ]
  [ COMMENT = '<string_literal>' ]
Copy

ํ•„์ˆ˜ ๋งค๊ฐœ ๋ณ€์ˆ˜ยถ

name

์ธ์ฆ ์ •์ฑ…์˜ ์‹๋ณ„์ž ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, ์‹๋ณ„์ž๋Š” ์•ŒํŒŒ๋ฒณ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ์ „์ฒด ์‹๋ณ„์ž ๋ฌธ์ž์—ด์„ ํฐ๋”ฐ์˜ดํ‘œ(์˜ˆ: "My object")๋กœ ๋ฌถ์ง€ ์•Š๋Š” ํ•œ ๊ณต๋ฐฑ์ด๋‚˜ ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์ธ ์‹๋ณ„์ž๋„ ๋Œ€/์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์‹๋ณ„์ž ์š”๊ตฌ ์‚ฌํ•ญ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์„ ํƒ์  ๋งค๊ฐœ ๋ณ€์ˆ˜ยถ

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

์กฐ์‹ฌ

์ธ์ฆ ๋ฐฉ๋ฒ•์œผ๋กœ ์ œํ•œํ•˜๋ฉด ๋“œ๋ผ์ด๋ฒ„ ์—ฐ๊ฒฐ ๋˜๋Š” ์„œ๋“œ ํŒŒํ‹ฐ ํ†ตํ•ฉ ์ฐจ๋‹จ ๋“ฑ ์˜๋„ํ•˜์ง€ ์•Š์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ์ธ ์ค‘์— ํ—ˆ์šฉ๋˜๋Š” ์ธ์ฆ ๋ฐฉ๋ฒ•์˜ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ ๊ฐ’ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

ALL

๋ชจ๋“  ์ธ์ฆ ๋ฐฉ๋ฒ•์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

SAML

SAML2 ๋ณด์•ˆ ํ†ตํ•ฉ ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. SAML ์ด ์žˆ์œผ๋ฉด SSO ๋กœ๊ทธ์ธ ์˜ต์…˜์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. SAML ์ด ์—†์œผ๋ฉด SSO ๋กœ๊ทธ์ธ ์˜ต์…˜์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

PASSWORD

์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OAUTH

External OAuth ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

KEYPAIR

ํ‚ค ํŽ˜์–ด ์ธ์ฆ ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

PROGRAMMATIC_ACCESS_TOKEN

์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹ ์•ก์„ธ์Šค ํ† ํฐ ์œผ๋กœ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’: ALL.

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

๋กœ๊ทธ์ธ ์ค‘์— ๋‹ค๋‹จ๊ณ„ ์ธ์ฆ(MFA)์„ ์ ์šฉํ•˜๋Š” ์ธ์ฆ ๋ฐฉ๋ฒ• ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ ๋ณ€์ˆ˜์— ๋‚˜์—ด๋˜์ง€ ์•Š์€ ์ธ์ฆ ๋ฐฉ๋ฒ•์—์„œ๋Š” ๋‹ค๋‹จ๊ณ„ ์ธ์ฆ์„ ์š”๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์ธ์ฆ ๋ฐฉ๋ฒ•์€ MFA๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • SAML

  • PASSWORD

์ด ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ ๊ฐ’ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

SAML

์‚ฌ์šฉ์ž๊ฐ€ MFA์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ SAML2 ๋ณด์•ˆ ํ†ตํ•ฉ ์œผ๋กœ ์ธ์ฆํ•  ๋•Œ ์‚ฌ์šฉ์ž์—๊ฒŒ MFA๋กœ ์ธ์ฆํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

PASSWORD

์‚ฌ์šฉ์ž๊ฐ€ MFA์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์ธ์ฆํ•  ๋•Œ ์‚ฌ์šฉ์ž์—๊ฒŒ MFA๋กœ ์ธ์ฆํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’: ('PASSWORD').

MFA_ENROLLMENT = { REQUIRED | OPTIONAL }

์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋‹จ๊ณ„ ์ธ์ฆ์— ๋“ฑ๋กํ•ด์•ผ ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

REQUIRED

์‚ฌ์šฉ์ž์˜ MFA ๋“ฑ๋ก์„ ํ•„์ˆ˜ ์‚ฌํ•ญ์œผ๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ CLIENT_TYPES ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” SNOWFLAKE_UI ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•˜๋Š”๋ฐ, Snowsight ๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋‹จ๊ณ„ ์ธ์ฆ(MFA)์— ๋“ฑ๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๊ณณ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

OPTIONAL

์‚ฌ์šฉ์ž๋Š” MFA์— ๋“ฑ๋กํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’: REQUIRED.

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

์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ์˜ ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋‹จ๊ณ„ ์ธ์ฆ(MFA) ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ์ด์ƒ์˜ ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ALL

์‚ฌ์šฉ์ž๋Š” ํŒจ์Šคํ‚ค, ์ธ์ฆ์ž ์•ฑ ๋˜๋Š” Duo๋ฅผ ๋‘ ๋ฒˆ์งธ ์ธ์ฆ ์š”์†Œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PASSKEY

์‚ฌ์šฉ์ž๋Š” ํŒจ์Šคํ‚ค๋ฅผ ๋‘ ๋ฒˆ์งธ ์ธ์ฆ ์š”์†Œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TOTP

์‚ฌ์šฉ์ž๋Š” ์ธ์ฆ์ž ์•ฑ์„ ๋‘ ๋ฒˆ์งธ ์ธ์ฆ ์š”์†Œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DUO

์‚ฌ์šฉ์ž๋Š” Duo๋ฅผ ๋‘ ๋ฒˆ์งธ ์ธ์ฆ ์š”์†Œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’: 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 ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

The CLIENT_TYPES property of an authentication policy is a best effort method to block user logins based on specific clients. It should not be used as the sole control to establish a security boundary.

์ด ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ ๊ฐ’ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

ALL

๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์˜ ์ธ์ฆ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

SNOWFLAKE_UI

Snowflake ์›น ์ธํ„ฐํŽ˜์ด์Šค์ธ Snowsight ๋˜๋Š” Classic Console

์กฐ์‹ฌ

If SNOWFLAKE_UI is not included in the CLIENT_TYPES list while MFA_ENROLLMENT is set to REQUIRED, or MFA_ENROLLMENT is unspecified, MFA enrollment doesnโ€™t work.

DRIVERS

๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ง€์›๋˜๋Š” ์–ธ์–ด ๋กœ ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Snowflake์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Go, JDBC, .NET ๋“œ๋ผ์ด๋ฒ„ ๋ฐ Snowpipe Streaming ์ž…๋‹ˆ๋‹ค.

์กฐ์‹ฌ

DRIVERS ๊ฐ€ CLIENT_TYPES ๋ชฉ๋ก์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ์ž๋™ ์ˆ˜์ง‘์ด ์ž‘๋™์„ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SNOWFLAKE_CLI

๋ช…๋ น์ค„ ํด๋ผ์ด์–ธํŠธ ๋ฅผ ํ†ตํ•ด Snowflake์— ์—ฐ๊ฒฐํ•˜๊ณ  ๊ฐœ๋ฐœ์ž ์ค‘์‹ฌ ์›Œํฌ๋กœ๋“œ ๋ฐ SQL ์ž‘์—…์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SNOWSQL

Snowflake์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์ค„ ํด๋ผ์ด์–ธํŠธ ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’: ALL.

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

์ธ์ฆ ์ •์ฑ…๊ณผ ์—ฐ๊ฒฐ๋œ ๋ณด์•ˆ ํ†ตํ•ฉ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. SAML ๋˜๋Š” OAUTH ๊ฐ€ AUTHENTICATION_METHODS ๋ชฉ๋ก์— ์—†์œผ๋ฉด ์ด ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ์•„๋ฌด๋Ÿฐ ํšจ๊ณผ๋„ ์—†์Šต๋‹ˆ๋‹ค.

SECURITY_INTEGRATIONS ๋ชฉ๋ก์˜ ๋ชจ๋“  ๊ฐ’์€ AUTHENTICATION_METHODS ๋ชฉ๋ก์˜ ๊ฐ’๊ณผ ํ˜ธํ™˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, SECURITY_INTEGRATIONS ์— SAML ๋ณด์•ˆ ํ†ตํ•ฉ์ด ํฌํ•จ๋˜๊ณ  AUTHENTICATION_METHODS ์— OAUTH ๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ์ธ์ฆ ์ •์ฑ…์„ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ALL

๋ชจ๋“  ๋ณด์•ˆ ํ†ตํ•ฉ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’: ALL.

PAT_POLICY = ( list_of_properties )

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹ ์•ก์„ธ์Šค ํ† ํฐ ์— ๋Œ€ํ•œ ์ •์ฑ…์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์†์„ฑ ๋ฐ ๊ฐ’ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋ชฉ๋ก์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

DEFAULT_EXPIRY_IN_DAYS = number_of_days

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹ ์•ก์„ธ์Šค ํ† ํฐ์˜ ๊ธฐ๋ณธ ๋งŒ๋ฃŒ ์‹œ๊ฐ„(์ผ)์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. (MAX_EXPIRY_IN_DAYS ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š”) 1๋ถ€ํ„ฐ ์ตœ๋Œ€ ์‹œ๊ฐ„๊นŒ์ง€ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์€ 15์ผ์ž…๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ธฐ๋ณธ ๋งŒ๋ฃŒ ์‹œ๊ฐ„ ์„ค์ •ํ•˜๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

MAX_EXPIRY_IN_DAYS = number_of_days

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹ ์•ก์„ธ์Šค ํ† ํฐ์˜ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ผ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. 1์—์„œ 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

์‚ฌ์šฉ์ž๊ฐ€ ๋„คํŠธ์›Œํฌ ์ •์ฑ…์— ๋”ฐ๋ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹ ์•ก์„ธ์Šค ํ† ํฐ์„ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ๋„คํŠธ์›Œํฌ ์ •์ฑ…์— ๋”ฐ๋ผ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ธ์ฆ ์ค‘์—๋Š” ๋„คํŠธ์›Œํฌ ์ •์ฑ…์ด ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ:

PAT_POLICY=(
  DEFAULT_EXPIRY_IN_DAYS=30
  MAX_EXPIRY_IN_DAYS=365
  NETWORK_POLICY_EVALUATION = ENFORCED_NOT_REQUIRED
);
Copy
COMMENT = 'string_literal'

์ •์ฑ…์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์•ก์„ธ์Šค ์ œ์–ด ์š”๊ตฌ ์‚ฌํ•ญยถ

์ด ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์—ญํ•  ์—๋Š” ์ตœ์†Œํ•œ ๋‹ค์Œ ๊ถŒํ•œ ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ถŒํ•œ

์˜ค๋ธŒ์ ํŠธ

์ฐธ๊ณ 

CREATE AUTHENTICATION POLICY

์Šคํ‚ค๋งˆ

OWNERSHIP

์ธ์ฆ ์ •์ฑ…

  • ์Šคํ‚ค๋งˆ์— ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ์™€ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ž„์‹œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•œ OWNERSHIP ๊ถŒํ•œ์„ ์—ญํ• ์— ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ์ƒ์†ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ์กด ์ธ์ฆ ์ •์ฑ…์— ๋Œ€ํ•ด CREATE OR ALTER AUTHENTICATION POLICY ๋ฌธ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์Šคํ‚ค๋งˆ์˜ ๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์ƒ์œ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ์Šคํ‚ค๋งˆ์— ๋Œ€ํ•œ USAGE ๊ถŒํ•œ.

์ง€์ •๋œ ๊ถŒํ•œ ์„ธํŠธ๋กœ ์‚ฌ์šฉ์ž ์ง€์ • ์—ญํ• ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ์‚ฌ์šฉ์ž ์ง€์ • ์—ญํ•  ๋งŒ๋“ค๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋ณด์•ˆ ์˜ค๋ธŒ์ ํŠธ ์— ๋Œ€ํ•ด SQL ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์—ญํ• ๊ณผ ๊ถŒํ•œ ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์ •๋ณด๋Š” ์•ก์„ธ์Šค ์ œ์–ด์˜ ๊ฐœ์š” ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์‚ฌ์šฉ๋ฒ• ๋…ธํŠธยถ

  • ์ธ์ฆ ์ •์ฑ…์„ ์ƒ์„ฑํ•œ ํ›„ Snowflake๊ฐ€ ์ •์ฑ…์„ ์ ์šฉํ•˜๊ธฐ ์ „์— ALTER ACCOUNT ๋˜๋Š” ALTER USER ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์ •์ด๋‚˜ ์‚ฌ์šฉ์ž์— ์ด๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ์กด ์ธ์ฆ ์ •์ฑ…์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์ •์ฑ…์˜ ์ •์˜๋ฅผ ํ™•์ธํ•ด์•ผ ํ•  ๊ฒฝ์šฐ DESCRIBE AUTHENTICATION POLICY ๋ช…๋ น ๋˜๋Š” GET_DDL ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

  • OR REPLACE ๋ฐ IF NOT EXISTS ์ ˆ์€ ์ƒํ˜ธ ๋ฐฐํƒ€์ ์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฌธ์ž๋ฅผ ๊ฐ™์€ ๋ฌธ์— ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • CREATE OR REPLACE <์˜ค๋ธŒ์ ํŠธ> ๋ฌธ์€ ์›์ž์„ฑ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๋ฐ”๋€” ๋•Œ ๋‹จ์ผ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์ด์ „ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์‚ญ์ œ๋˜๊ณ  ์ƒˆ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์˜ˆยถ

Snowsight ๋˜๋Š” Classic Console ์„ ํ†ตํ•ด์„œ๋งŒ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๋Š” 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';
Copy

๋‹ค๋‹จ๊ณ„ ์ธ์ฆ์„ ์„ค์ •ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ ๋ชฉ๋ก์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

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

๋” ๋งŽ์€ ์˜ˆ๋Š” ์ธ์ฆ ์ •์ฑ… ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.