CREATE RESTRICTED SESSION SCOPE
CREATE RESTRICTED SESSION SCOPE
새 제한 세션 범위(RSS, Restricted Session Scope)를 만드는 명령이에요. RSS는 에이전트(agent)가 사용자를 대신해 수행할 수 있는 작업을 제한하는 YAML 기반 권한 상한선(privilege ceiling)이에요.
출처: 문서
본문
새 제한 세션 범위(RSS)를 만들어요.
RSS는 RESTRICTED SESSION SCOPE의 축약 별칭이에요. 이 문에서 둘 다 사용할 수 있어요.
RSS는 에이전트가 사용자를 대신해 수행할 수 있는 작업을 제한하는 YAML 권한 상한선이에요. 객체를 만든 뒤에는 세션 정책에서 AGENT_RESTRICTED_SESSION_SCOPE로 참조해요.
이 명령은 다음 변형(variant)을 지원해요.
- CREATE OR ALTER RESTRICTED SESSION SCOPE: 존재하지 않으면 제한 세션 범위를 만들고, 존재하면 기존 제한 세션 범위의 정의를 교체해요. 정의를 교체하려면 이 변형을 사용해요.
CREATE RESTRICTED SESSION SCOPE는OR REPLACE절을 지원하지 않아요.
함께 보기: ALTER RESTRICTED SESSION SCOPE, DROP RESTRICTED SESSION SCOPE, SHOW RESTRICTED SESSION SCOPES, DESCRIBE RESTRICTED SESSION SCOPE
구문 (Syntax)
CREATE { RESTRICTED SESSION SCOPE | RSS } [ IF NOT EXISTS ] <name>
[ COMMENT = '<string_literal>' ]
AS $$
<yaml_definition>
$$
변형 구문 (Variant syntax)
CREATE OR ALTER RESTRICTED SESSION SCOPE
존재하지 않으면 새 제한 세션 범위를 만들고, 존재하면 기존 제한 세션 범위의 YAML 정의를 교체해요.
CREATE OR ALTER { RESTRICTED SESSION SCOPE | RSS } <name>
[ COMMENT = '<string_literal>' ]
AS $$
<yaml_definition>
$$
필수 매개변수 (Required parameters)
name
제한 세션 범위의 식별자를 지정하는 문자열로, 객체가 만들어지는 스키마 안에서 고유해야 해요.
또한 식별자는 반드시 알파벳 문자로 시작해야 하며, 전체 식별자 문자열이 큰따옴표로 묶이지 않는 한 공백이나 특수 문자를 포함할 수 없어요 (예: "My object"). 큰따옴표로 묶인 식별자는 대소문자를 구분해요.
자세한 내용은 식별자 요구 사항(Identifier requirements)을 참고해요.
AS $$ yaml_definition $$
권한 상한선을 정의하는 YAML 문서예요. 문서에는 두 개의 최상위 섹션이 있어요. privilege_scopes(허용된 작업과 적용되는 컨테이너)와 role_scopes(에이전트가 활성화되어 있는 동안 활성화할 수 있는 역할)예요.
YAML 구조·사전 정의된 범위·그룹 권한은 에이전트용 제한 세션 범위(Restricted Session Scope for agents)를 참고해요.
선택 매개변수 (Optional parameters)
COMMENT = 'string_literal'
제한 세션 범위에 대한 설명(comment)을 추가하거나 기존 설명을 덮어써요.
접근 제어 요구 사항 (Access control requirements)
이 작업을 실행하는 데 사용하는 역할(role)은 최소한 다음 권한을 가져야 해요.
| 권한 (Privilege) | 객체 (Object) |
|---|---|
| CREATE RESTRICTED SESSION SCOPE | Schema |
스키마 안의 객체를 작업하려면 상위 데이터베이스에 대한 권한이 최소 하나, 상위 스키마에 대한 권한이 최소 하나 필요해요.
지정된 권한 집합으로 사용자 지정 역할을 만드는 방법은 사용자 지정 역할 만들기(Creating custom roles)를 참고해요. 보호 가능한 객체에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여의 일반적인 내용은 접근 제어 개요(Overview of Access Control)를 참고해요.
사용 메모 (Usage notes)
RSS는 사용자의 기존 RBAC 권한에 대한 상한선이에요. 추가 권한을 부여하지는 않아요.
나중에 RSS 객체를 업데이트하면, 그것을 참조하는 세션 정책은 새 에이전트 활동에 대해 변경 사항을 적용해요. 세션에서 이미 활성화된 RSS는 그 세션의 수명 동안 불변(immutable)이에요.
메타데이터에 관해서는 다음 사항에 주의해요.
⚠️ 주의: 고객은 Snowflake 서비스를 사용할 때 (User 객체를 제외하고) 개인 데이터·민감 데이터·수출 통제 데이터·기타 규제 데이터를 메타데이터로 입력하지 않도록 해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고해요.
예시 (Examples)
계정 전체에 걸친 데이터 읽기, 샌드박스 데이터베이스에서만 쓰기를 허용하고 에이전트가 활성화된 동안 권한 있는 역할을 차단하는 제한 세션 범위를 만들어요.
CREATE RESTRICTED SESSION SCOPE mydb.governance.agent_scope AS $$
privilege_scopes:
allowed_privileges:
- privileges: [data read, program usage]
account: [all]
- privileges: [data write]
databases: [SANDBOX_DB, USER$]
role_scopes:
blocked_roles: [ACCOUNTADMIN, SYSADMIN, SECURITYADMIN]
allow_role_switching: false
$$;
더 알아보기 (Learn more)
- 에이전트용 제한 세션 범위 — RSS YAML 구조와 범위
- ALTER RESTRICTED SESSION SCOPE — 제한 세션 범위 수정
- DROP RESTRICTED SESSION SCOPE — 제한 세션 범위 삭제