인증 정책

인증 정책에서는 다음을 지정하도록 허용함으로써 클라이언트 또는 사용자가 인증하는 방식을 제어할 수 있습니다.

  • 사용자가 Snowflake에 연결하는 데 사용할 수 있는 클라이언트(예: Snowsight 또는 Classic Console, 드라이버 또는 SnowSQL(CLI 클라이언트))입니다. 자세한 내용은 제한 사항 섹션을 참조하십시오.

  • SAML, 비밀번호, OAuth 또는 키 페어 인증 과 같은 허용된 인증 방법입니다.

  • 로그인 과정에서 사용자에게 제공되는 SAML2 보안 통합 입니다. 예를 들어 여러 보안 통합이 있는 경우 인증을 위해 선택하고 사용할 수 있는 ID 공급자(IdP)를 지정할 수 있습니다.

    인증 정책을 사용하여 사용자가 인증에 사용할 수 있는 IdP를 제어하는 경우 IdP와 연결된 SAML2 보안 통합의 ALLOWED_USER_DOMAINSALLOWED_EMAIL_PATTERNS 속성을 사용하여 해당 제어를 더욱 구체화할 수 있습니다. 자세한 내용은 페더레이션 인증을 위해 여러 ID 공급자 사용하기 섹션을 참조하십시오.

계정 또는 계정의 사용자에 대한 인증 정책을 설정할 수 있습니다. 계정에 인증 정책을 설정하면 해당 인증 정책이 계정의 모든 사용자에게 적용됩니다. 계정과 사용자 모두에 대해 인증 정책을 설정하면 사용자 수준 인증 정책이 계정 수준 인증 정책보다 우선 적용됩니다.

참고

식별자 우선 로그인 흐름에 이미 액세스할 수 있는 경우 SYSTEM$MIGRATE_SAML_IDP_REGISTRATION 함수를 사용하여 지원되지 않는 SAML_IDENTITY_PROVIDER 계정 매개 변수에서 계정을 마이그레이션해야 합니다.

사용 사례

다음 목록에서는 인증 정책의 대략적인 사용 사례를 설명합니다.

  • 여러 로그인 옵션이 있는 경우 사용자 로그인 흐름을 제어하려고 합니다.

  • 특정 사용자 또는 모든 사용자가 사용할 수 있는 인증 방법, 특정 클라이언트 유형, 보안 통합을 제어하려고 합니다.

  • Snowflake 드라이버를 사용하여 Snowflake 위에 서비스를 구축하는 고객이 있지만, 고객은 사용자가 Snowsight 또는 Classic Console 을 통해 Snowflake에 액세스하는 것을 원하지 않습니다.

  • 특정 사용자에 대한 인증 옵션으로 여러 ID 공급자를 제공하려고 합니다.

제한 사항

인증 정책의 CLIENT_TYPES 속성은 특정 클라이언트를 기반으로 사용자 로그인을 차단하는 최선의 방법입니다. 보안 경계를 설정하기 위한 유일한 제어 수단으로 이 속성을 사용하면 안 됩니다.

고려 사항

  • 인증 정책에 나열된 인증 방법과 보안 통합이 충돌하지 않도록 하십시오. 예를 들어, 허용된 보안 통합 목록에 SAML2 보안 통합을 추가하고 허용된 인증 방법으로 OAuth만 허용하는 경우 인증 정책을 생성할 수 없습니다.

  • 사용자가 액세스하지 못하게 잠긴 경우 관리자를 위한 추가적인 비제한적 인증 정책을 사용하십시오. 예를 보려면 잠금 방지하기 를 참조하십시오.

보안 정책 우선순위

두 가지 이상의 보안 정책 유형이 활성화되면 정책 간의 우선순위가 발생합니다. 예를 들어, 네트워크 정책 은 인증 정책보다 우선하므로 요청의 IP 주소가 네트워크 정책의 차단 목록에 있는 IP 주소와 일치하면 인증 정책이 확인되지 않으며 네트워크 정책에서 평가가 중지됩니다.

다음 목록에서는 보안 정책을 평가하는 순서를 설명합니다.

  1. 네트워크 정책: IP 주소, VPC ID, VPCE ID를 허용하거나 거부합니다.

  2. 인증 정책 - 클라이언트, 인증 방법, 보안 통합을 허용하거나 거부합니다.

  3. 비밀번호 정책 (로컬 인증에만 해당): 문자 길이, 문자, 비밀번호 사용 기간, 재시도, 잠금 시간과 같은 비밀번호 요구 사항을 지정합니다.

  4. 세션 정책: 일정 기간 동안 활동이 없으면 사용자에게 재인증을 요구합니다.

계정과 인증하는 사용자 모두에게 정책이 할당되면 사용자 수준 정책이 적용됩니다.

식별자 우선 로그인과 인증 정책 결합하기

기본적으로, Snowsight 또는 Classic Console 은 옵션이 사용자와 관련이 있는지 여부에 관계없이 로그인을 위한 여러 옵션을 제공하는 일반적인 로그인 환경을 제공합니다. 이는 로그인 옵션이 사용자에게 유효한 옵션인지 여부에 관계없이 인증이 시도됨을 의미합니다.

이 동작을 변경하여 Snowsight 또는 Classic Console 에 대해 식별자 우선 로그인 흐름을 활성화할 수 있습니다. 이 흐름에서 Snowflake는 인증 옵션을 제시하기 전에 사용자에게 이메일 주소나 사용자 이름을 묻는 메시지를 표시합니다. Snowflake는 이메일 주소나 사용자 이름을 사용하여 사용자를 식별한 다음 사용자와 관련되고 계정이나 사용자에 설정된 인증 정책에 의해 허용되는 로그인 옵션만 표시합니다.

식별자 우선 로그인 흐름을 활성화하는 방법에 대한 지침은 식별자 우선 로그인 섹션을 참조하십시오.

다음 표에서는 식별자 우선 로그인과 인증 정책을 결합하여 사용자의 로그인 경험을 제어하는 방법에 대한 구성 예를 제공합니다.

구성

결과

인증 정책의 AUTHENTICATION_METHODS 매개 변수에는 PASSWORD만 포함됩니다.

Snowflake가 사용자에게 이메일 주소나 사용자 이름, 비밀번호를 묻는 메시지를 표시합니다.

인증 정책의 AUTHENTICATION_METHODS 매개 변수에는 SAML만 포함되며 활성 SAML2 보안 통합이 있습니다.

이메일 주소 또는 사용자 이름이 하나의 SAML2 보안 통합과만 일치하는 경우 Snowflake는 사용자를 ID 공급자의 로그인 페이지로 리디렉션합니다.

인증 정책의 AUTHENTICATION_METHODS 매개 변수에는 PASSWORD와 SAML이 모두 포함되며 활성 SAML2 보안 통합이 있습니다.

이메일 주소 또는 사용자 이름이 하나의 SAML2 보안 통합과만 일치하는 경우 Snowflake는 SAML SSO 버튼을 표시하고 이메일 주소나 사용자 이름 및 비밀번호를 사용하여 로그인하는 옵션을 표시합니다.

인증 정책의 AUTHENTICATION_METHODS 매개 변수에는 SAML만 포함되며 활성 SAML2 보안 통합이 여러 개 있습니다.

이메일 주소 또는 사용자 이름이 여러 SAML2 보안 통합과 일치하는 경우 Snowflake는 여러 SAML SSO 버튼을 표시합니다.

인증 정책의 AUTHENTICATION_METHODS 매개 변수에는 PASSWORD 및 SAML가 모두 포함되며 활성 SAML2 보안 통합이 여러 개 있습니다.

이메일 주소 또는 사용자 이름이 여러 SAML2 보안 통합과 일치하는 경우 Snowflake는 여러 SAML SSO 버튼을 표시하고 이메일 주소나 사용자 이름 및 비밀번호를 사용하여 로그인하는 옵션을 표시합니다.

인증 정책 만들기

관리자는 CREATE AUTHENTICATION POLICY 명령을 사용하여 Snowflake에 연결할 수 있는 클라이언트, 사용할 수 있는 인증 방법, 사용자에게 제공되는 보안 통합을 지정하는 새 인증 정책을 만들 수 있습니다. 기본적으로 모든 클라이언트 유형, 인증 방법, 보안 통합을 사용하여 Snowflake에 연결할 수 있습니다. See client type limitations in authentication policies.

예를 들어 다음 명령을 사용하여 Snowsight 또는 Classic Console 을 사용한 인증만 허용하고 계정이나 사용자가 OAuth 또는 비밀번호를 사용한 인증만 허용하는 사용자 지정 policy_admin 역할과 인증 정책을 생성할 수 있습니다.

USE ROLE ACCOUNTADMIN;

CREATE OR REPLACE DATABASE my_database;
USE DATABASE my_database;

CREATE OR REPLACE SCHEMA my_schema;
USE SCHEMA my_schema;

CREATE ROLE policy_admin;

GRANT USAGE ON DATABASE my_database TO ROLE policy_admin;
GRANT USAGE ON SCHEMA my_database.my_schema TO ROLE policy_admin;
GRANT CREATE AUTHENTICATION POLICY ON SCHEMA my_database.my_schema TO ROLE policy_admin;
GRANT APPLY AUTHENTICATION POLICY ON ACCOUNT TO ROLE policy_admin;

USE ROLE policy_admin;

CREATE AUTHENTICATION POLICY my_example_authentication_policy
  CLIENT_TYPES = ('SNOWFLAKE_UI')
  AUTHENTICATION_METHODS = ('OAUTH', 'PASSWORD');
Copy

자세한 예는 로그인 구성 예시 섹션을 참조하십시오.

계정 또는 사용자에 대한 인증 정책 설정하기

계정이나 사용자에 대한 인증 정책을 설정하면 인증 정책에 지정된 제한 사항이 계정이나 사용자에게 적용됩니다. ALTER ACCOUNT 또는 ALTER USER 명령을 사용하여 계정이나 사용자에 대한 인증 정책을 설정할 수 있습니다.

Snowsight 워크시트에서 다음 명령 중 하나를 사용하여 계정 또는 사용자에 대한 인증 정책을 설정합니다.

ALTER ACCOUNT SET AUTHENTICATION POLICY my_example_authentication_policy;
Copy
ALTER USER example_user SET AUTHENTICATION POLICY my_example_authentication_policy;
Copy

보안 관리자(SECURITYADMIN 역할을 가진 사용자) 또는 APPLY AUTHENTICATION POLICY 권한이 부여된 역할을 가진 사용자만 계정 또는 사용자에 대한 인증 정책을 설정할 수 있습니다. 사용자가 계정이나 사용자에 대한 인증 정책을 설정할 수 있도록 역할에 이 권한을 부여하려면 다음 명령 중 하나를 실행하십시오.

GRANT APPLY AUTHENTICATION POLICY ON ACCOUNT TO ROLE my_policy_admin
Copy
GRANT APPLY AUTHENTICATION POLICY ON USER TO ROLE my_policy_admin
Copy

자세한 예는 로그인 구성 예시 섹션을 참조하십시오.

인증 정책 사용 추적하기

Information Schema 테이블 함수 POLICY_REFERENCES 를 사용하여 지정된 인증 정책에 할당된 각 사용자에 대한 행과 Snowflake 계정에 할당된 인증 정책에 대한 행을 반환합니다.

인증 정책에는 다음 구문이 지원됩니다.

POLICY_REFERENCES( POLICY_NAME => '<authentication_policy_name>' )
Copy
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'USER', REF_ENTITY_NAME => '<username>')
Copy
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'ACCOUNT', REF_ENTITY_NAME => '<accountname>')
Copy

여기서 authentication_policy_name 은 인증 정책의 정규화된 이름입니다.

예를 들어, 다음 쿼리를 실행하여 my_db 라는 데이터베이스와 my_schema 라는 스키마에 저장되는 authentication_policy_prod_1 이라는 인증 정책이 할당된 각 사용자에 대한 행을 반환합니다.

SELECT *
FROM TABLE(
    my_db.INFORMATION_SCHEMA.POLICY_REFERENCES(
      POLICY_NAME => 'my_db.my_schema.authentication_policy_prod_1'
  )
);
Copy

잠금 방지하기

계정을 관리하는 인증 정책이 엄격한 상황에서는 관리자가 보안 통합으로 인해 잠금이 발생한 경우 복구 옵션으로 사용할 수 있는 비제한적인 인증 정책을 생성할 수 있습니다. 예를 들어 관리자 전용으로 PASSWORD 인증 방법을 포함할 수 있습니다. 사용자 수준 인증 정책은 더 제한적인 계정 수준 정책보다 우선 적용됩니다.

CREATE AUTHENTICATION POLICY admin_authentication_policy
  AUTHENTICATION_METHODS = ('SAML', 'PASSWORD')
  CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWSQL', 'DRIVERS')
  SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION');
Copy

그런 다음 이 정책을 관리자에게 할당할 수 있습니다.

ALTER USER <administrator_name> SET AUTHENTICATION POLICY admin_authentication_policy
Copy

인증 정책 복제

장애 조치 및 복제 그룹을 사용하여 인증 정책을 복제할 수 있습니다. 자세한 내용은 복제 및 보안 정책 섹션을 참조하십시오.

로그인 구성 예시

이 섹션에서는 인증 정책과 SAML2 보안 통합을 사용하고 결합하여 로그인 흐름과 보안을 제어하는 방법에 대한 예를 제공합니다.

클라이언트 유형별로 Snowflake에 대한 사용자 액세스 제한하기

See client type limitations in authentication policies.

Snowsight 또는 Classic Console 을 통해서만 액세스를 허용하는 restrict_client_type_policy 라는 인증 정책을 만듭니다.

CREATE AUTHENTICATION POLICY restrict_client_type_policy
  CLIENT_TYPES = ('SNOWFLAKE_UI')
  COMMENT = 'Only allows access through the web interface';
Copy

사용자에 대한 인증 정책을 설정합니다.

ALTER USER example_user SET AUTHENTICATION POLICY restrict_client_type_policy;
Copy

한 계정에서 여러 ID 공급자의 인증 허용하기

사용자가 Okta를 IdP로 사용하여 SAML을 통해 로그인할 수 있도록 하는 SAML2 보안 통합을 만듭니다.

CREATE SECURITY INTEGRATION example_okta_integration
  TYPE = SAML2
  SAML2_SSO_URL = 'https://okta.example.com';
  ...
Copy

사용자가 Microsoft Azure를 IdP로 사용하여 SAML을 통해 로그인할 수 있도록 하는 보안 통합을 만듭니다.

CREATE SECURITY INTEGRATION example_azure_integration
  TYPE = SAML2
  SAML2_SSO_URL = 'https://azure-example_acme.com';
  ...
Copy

example_okta_integrationexample_azure_integration 통합과 연결된 인증 정책을 만듭니다.

CREATE AUTHENTICATION POLICY multiple_idps_authentication_policy
  AUTHENTICATION_METHODS = ('SAML')
  SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION', 'EXAMPLE_AZURE_INTEGRATION');
Copy

계정에 대한 인증 정책을 설정합니다.

ALTER ACCOUNT SET AUTHENTICATION POLICY multiple_idps_authentication_policy;
Copy

권한과 명령

인증 정책 권한 참조

사용자가 인증 정책을 생성, 설정 및 소유할 수 있는지 여부를 결정하기 위해 Snowflake에서 지원하는 인증 정책 권한은 다음과 같습니다.

스키마의 모든 오브젝트에 대해 작업하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한도 필요합니다.

권한

사용법

CREATE

스키마에서 새 인증 정책을 생성할 수 있습니다.

APPLY AUTHENTICATION POLICY

계정 또는 사용자 수준에서 인증 정책을 적용할 수 있습니다.

OWNERSHIP

인증 정책에 대한 모든 권한을 부여합니다. 인증 정책의 대부분 속성을 변경하려면 필요합니다.

인증 정책 DDL 참조

인증 정책 권한 및 명령에 대한 자세한 내용은 다음 참조 문서를 참조하십시오.

명령

권한

설명

CREATE AUTHENTICATION POLICY

SCHEMA에 대한 CREATE AUTHENTICATION POLICY

새 인증 정책을 만듭니다.

ALTER AUTHENTICATION POLICY

AUTHENTICATION POLICY에 대한 OWNERSHIP

기존 인증 정책을 수정합니다.

DROP AUTHENTICATION POLICY

AUTHENTICATION POLICY에 대한 OWNERSHIP

시스템에서 기존 인증 정책을 제거합니다.

DESCRIBE AUTHENTICATION POLICY

AUTHENTICATION POLICY에 대한 OWNERSHIP

기존 인증 정책의 속성을 설명합니다.

SHOW AUTHENTICATION POLICIES

AUTHENTICATION POLICY에 대한 OWNERSHIP 또는 SCHEMA에 대한 USAGE

시스템의 모든 인증 정책을 나열합니다.