CREATE ROLE

CREATE ROLE

시스템에 새 역할(role)을 만들거나 기존 역할을 교체하는 명령이에요. 역할은 객체에 대한 접근 제어를 위해 객체 권한을 부여받고, 다시 다른 역할이나 개별 사용자에게 부여돼요.

출처: 문서

본문

시스템에 새 역할을 만들거나 기존 역할을 교체해요.

역할을 만든 뒤에는 역할에 객체 권한을 부여하고, 그 역할을 다른 역할이나 개별 사용자에게 부여해 시스템 안의 객체에 대한 접근 제어 보안을 활성화할 수 있어요.

이 명령은 다음 변형(variant)을 지원해요.

  • CREATE OR ALTER ROLE: 역할이 없으면 만들고, 있으면 기존 역할을 수정해요.

함께 보기: GRANT <privileges> … TO ROLE, GRANT ROLE, GRANT OWNERSHIP, DROP ROLE, ALTER ROLE, SHOW ROLES

구문 (Syntax)

CREATE [ OR REPLACE ] ROLE [ IF NOT EXISTS ] <name>
  [ COMMENT = '<string_literal>' ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]

변형 구문 (Variant syntax)

CREATE OR ALTER ROLE

존재하지 않으면 새 역할을 만들고, 존재하면 기존 역할을 문에 정의된 역할로 변환해요. CREATE OR ALTER ROLE 문은 CREATE ROLE 문의 구문 규칙을 따르고, ALTER ROLE 문과 동일한 제약을 가져요.

CREATE OR ALTER ROLE <name>
  [ COMMENT = '<string_literal>' ]

자세한 내용은 CREATE OR ALTER ROLE 사용 메모와 CREATE OR ALTER <object>를 참고해요.

필수 매개변수 (Required parameters)

name 역할의 식별자로, 계정 안에서 고유해야 해요.

식별자는 반드시 알파벳 문자로 시작해야 하며, 전체 식별자 문자열이 큰따옴표로 묶이지 않는 한 공백이나 특수 문자를 포함할 수 없어요 (예: "My role"). 큰따옴표로 묶인 식별자는 대소문자를 구분해요.

자세한 내용은 식별자 요구 사항(Identifier requirements)을 참고해요.

선택 매개변수 (Optional parameters)

COMMENT = 'string_literal' 역할에 대한 설명(comment)을 지정해요.

  • 기본값: 값 없음

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] ) 태그 이름과 태그 문자열 값을 지정해요.

태그 값은 항상 문자열이며, 태그 값의 최대 문자 수는 256이에요.

문에서 태그를 지정하는 방법에 대한 정보는 태그 할당량(Tag quotas)을 참고해요.

접근 제어 요구 사항 (Access control requirements)

이 작업을 실행하는 데 사용하는 역할(role)은 최소한 다음 권한을 가져야 해요.

권한 (Privilege) 객체 (Object) 비고
CREATE ROLE Account 기본적으로 USERADMIN 역할 또는 그보다 높은 역할만 이 권한을 가져요. 필요에 따라 추가 역할에 부여될 수 있어요.
OWNERSHIP Role 기존 역할에 대해 CREATE OR ALTER ROLE 문을 실행하는 데 필요해요.

OWNERSHIP은 객체에 대한 특별한 권한으로, 객체를 만든 역할에 자동으로 부여되지만 소유 역할(또는 MANAGE GRANTS 권한이 있는 역할)이 GRANT OWNERSHIP 명령으로 다른 역할에 이전할 수도 있어요.

지정된 권한 집합으로 사용자 지정 역할을 만드는 방법은 사용자 지정 역할 만들기(Creating custom roles)를 참고해요. 보호 가능한 객체에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여의 일반적인 내용은 접근 제어 개요(Overview of Access Control)를 참고해요.

일반 사용 메모 (General usage notes)

메타데이터에 관해서는 다음 사항에 주의해요.

⚠️ 주의: 고객은 Snowflake 서비스를 사용할 때 (User 객체를 제외하고) 개인 데이터·민감 데이터·수출 통제 데이터·기타 규제 데이터를 메타데이터로 입력하지 않도록 해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고해요.

OR REPLACEIF NOT EXISTS 절은 서로 배타적이에요. 같은 문에서 둘 다 사용할 수 없어요.

CREATE OR REPLACE <object> 문은 원자적(atomic)으로 동작해요. 즉, 객체를 교체할 때 기존 객체는 삭제되고 새 객체는 단일 트랜잭션 안에서 생성돼요.

CREATE OR ALTER ROLE 사용 메모

ALTER ROLE 명령의 모든 제약이 적용돼요.

태그 설정·해제는 지원되지 않지만, 기존 태그는 CREATE OR ALTER ROLE 문에 의해 변경되지 않고 그대로 유지돼요.

예시 (Examples)

CREATE ROLE myrole;

더 알아보기 (Learn more)