세션 정책 관리하기¶
이 항목에서는 Snowflake 세션 및 세션 정책을 설명하고 계정 또는 사용자 수준에서 세션 정책을 구성하는 지침을 제공합니다.
세션 정책 권한¶
사용자가 세션 정책을 생성, 설정 및 소유할 수 있는지 여부를 결정하기 위해 Snowflake에서 지원하는 세션 정책 권한은 다음과 같습니다.
스키마의 모든 오브젝트에 대해 작업하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한도 필요합니다.
권한 |
사용법 |
---|---|
CREATE SESSION POLICY |
스키마에서 새 세션 정책을 생성할 수 있습니다. |
APPLY SESSION POLICY |
계정 또는 사용자 수준에서 세션 정책을 적용할 수 있도록 활성화합니다. |
OWNERSHIP |
세션 정책에 대한 모든 권한을 부여합니다. 세션 정책의 속성 대부분을 변경하는 데 필요합니다. |
명령, 작업 및 권한 요약¶
다음 테이블은 세션 정책 DDL 작업과 필요한 권한 사이의 관계를 요약하여 제공합니다.
작업 |
필요한 권한 |
---|---|
세션 정책 만들기 |
스키마에 대한 CREATE SESSION POLICY 권한을 보유한 역할. |
세션 정책 변경 |
세션 정책에 대한 OWNERSHIP 권한을 보유한 역할. |
세션 정책 삭제 |
세션 정책에 대한 OWNERSHIP 권한을 보유한 역할. |
세션 정책 설명 |
세션 정책에 대한 OWNERSHIP 권한 또는 . APPLY SESSION POLICY 권한을 보유한 역할. |
세션 정책 표시 |
세션 정책에 대한 OWNERSHIP 권한 또는 . APPLY SESSION POLICY 권한을 보유한 역할. |
세션 정책 설정 및 설정 해제 |
계정의 경우, 계정에 대한 APPLY SESSION POLICY 권한과 세션 정책에 대한 OWNERSHIP 권한이 있는 역할 또는 계정에 대한 APPLY SESSION POLICY 권한과 특정 세션 정책에 대한 APPLY ON SESSION POLICY 권한이 있는 역할. 사용자의 경우, USER <사용자 이름> 권한에 대한 APPLY SESSION POLICY가 있는 역할. |
세션 정책 DDL 참조¶
Snowflake는 세션 정책 오브젝트를 관리하기 위해 다음 DDL 명령을 제공합니다.
계정에 대한 세션 정책을 설정하거나 설정 해제하려면 아래에 표시된 것처럼 ALTER ACCOUNT 명령을 실행하십시오.
ALTER ACCOUNT SET SESSION POLICY mydb.policies.session_policy_prod_1;ALTER ACCOUNT UNSET SESSION POLICY;
사용자 수준 세션 정책을 설정하거나 설정 해제하려면 아래에 표시된 것처럼 ALTER USER 명령을 실행하십시오.
ALTER USER jsmith SET SESSION POLICY mydb.policies.session_policy_prod_1_jsmith;ALTER USER jsmith UNSET SESSION POLICY;
감사 세션 정책¶
SESSION_POLICIES 뷰 뷰를 쿼리하여 각 세션 정책과 Snowflake 계정의 해당 메타데이터에 대한 행을 반환할 수 있습니다.
POLICY_REFERENCES 함수를 호출하여 지정된 세션 정책에 할당된 각 사용자에 대한 행과 Snowflake 계정에 할당된 세션 정책에 대한 행을 반환할 수 있습니다.
현재, 세션 정책에는 다음 구문만 지원됩니다.
POLICY_REFERENCES( POLICY_NAME => '<session_policy_name>' )
여기서
session_policy_name
은 세션 정책의 정규화된 이름입니다.예를 들어, 다음 쿼리를 실행하여
my_db
라는 데이터베이스와my_schema
라는 스키마에 저장되는session_policy_prod_1
이라는 세션 정책이 할당된 각 사용자에 대한 행을 반환합니다.SELECT * FROM TABLE( my_db.INFORMATION_SCHEMA.POLICY_REFERENCES( POLICY_NAME => 'my_db.my_schema.session_policy_prod_1' ));
세션 정책 문제 해결하기¶
세션 정책이 계정 또는 사용자에게 할당되고 세션 정책이 포함된 데이터베이스 또는 스키마를 삭제한 후 새 세션 정책이 계정 또는 사용자에게 할당되는 경우, 사용자는 새 세션 정책에서 유휴 세션 시간 초과 값이 유지되지 않습니다.
해결 방법은 이 항목 에서와 같이 ALTER ACCOUNT 명령을 사용하여 계정에서 또는 ALTER USER 명령을 사용하여 사용자에서 원래 세션 정책의 설정을 해제하는 것입니다.
다음 표에는 세션 정책에서 발생할 수 있는 몇 가지 오류 메시지가 요약되어 있습니다.
동작
오류 메시지
문제 해결 작업
세션 정책을 만들 수 없습니다.
CREATE SESSION POLICY를 수행할 수 없습니다. 이 세션에 현재 데이터베이스가 없습니다. ‘USE DATABASE’를 호출하거나 정규화된 이름을 사용하십시오.
CREATE SESSION POLICY를 실행하기 전에 데이터베이스를 지정하거나 CREATE SESSION POLICY 문에서 정규화된 오브젝트 이름을 사용하십시오.
세션 정책을 만들 수 없습니다.
SQL 액세스 제어 오류: ‘<스키마_이름>’ 스키마에 대한 작업 권한이 충분하지 않습니다.
CREATE SESSION POLICY 문을 실행하는 역할이 SCHEMA 권한에 대한 CREATE SESSION POLICY가 있는지 확인하십시오.
세션 정책을 만들 수 없습니다.
SQL 컴파일 오류: <데이터베이스_이름> 데이터베이스가 없거나 권한이 없습니다.
데이터베이스가 존재하고 CREATE SESSION POLICY 문을 실행하는 역할이 세션 정책이 존재해야 하는 스키마에 대한 USAGE 권한이 있는지 확인하십시오.
describe 문을 실행할 수 없습니다.
SQL 컴파일 오류: ‘<스키마_이름>’ 스키마가 없거나 권한이 없습니다.
DESC SESSION POLICY 문을 실행하는 역할이 세션 정책에 대한 OWNERSHIP 권한 또는 세션 정책에 대한 APPLY 권한이 있는지 확인하십시오.
세션 정책을 삭제할 수 없습니다.
SQL 컴파일 오류: <정책_이름> 세션 정책이 없거나 권한이 없습니다.
DROP SESSION POLICY 문을 실행하는 역할이 세션 정책에 대한 OWNERSHIP 권한이 있는지 확인하십시오.
세션 정책을 삭제할 수 없습니다.
세션 정책 <정책_이름>은 계정에 연결되므로 삭제할 수 없습니다.
ALTER ACCOUNT 문이 있는 계정에서 세션 정책을 설정 해제하고 drop 문을 다시 시도하십시오.
계정에 세션 정책을 설정할 수 없습니다.
세션 정책 ‘<정책_이름>은 <계정_이름> 계정에 이미 연결되어 있습니다.
계정에는 활성 세션 정책이 하나만 있을 수 있습니다. 계정에 어떤 세션 정책을 설정해야 하는지 결정하십시오. . 필요한 경우 ALTER ACCOUNT 명령으로 계정에서 현재 세션 정책을 설정 해제한 다음, 다른 ALTER ACCOUNT 명령으로 계정에 대해 다른 세션 정책을 설정하십시오.
시간 제한 값을 설정할 수 없습니다.
SQL 컴파일 오류: ‘세션_유휴_시간 제한_분’ 속성에 대해 잘못된 값 ‘<정수>’
세션 시간 제한 값(분)은
5
와240
(포함) 사이의 정수여야 합니다. . 세션 시간 제한에 유효한 정수를 선택하고 CREATE 또는 ALTER SESSION POLICY 문을 다시 실행하십시오.기존 세션 정책을 업데이트할 수 없습니다.
SQL 컴파일 오류: <정책_이름> 세션 정책이 없거나 권한이 없습니다.
세션 정책의 이름, ALTER SESSION POLICY 명령 구문, 그리고 세션 정책, 데이터베이스, 스키마에 대한 작업 권한을 확인하십시오.