SHOW ROLES
SHOW ROLES
계정 전체에서 볼 수 있는 모든 역할(시스템 정의 역할과 사용자 정의 역할 포함)을 나열하는 명령이에요.
출처: 문서
본문
중요: Snowflake는 사용자가 역할을 나열할 수 있게 하지만, 역할을 나열하는 것은 역할을 사용하는 것과는 달라요. 역할 이름을 아는 것만으로는 어떤 추가 액세스도 허용되지 않아요. 이는 임의 액세스 제어(Discretionary Access Control)와 역할 기반 액세스 제어(Role-Based Access Control)의 일부예요. 자세한 내용은 액세스 제어 개요(Overview of Access Control)를 참고해요.
계정 전체에서 볼 수 있는 모든 역할(시스템 정의 역할과 사용자 정의 역할 포함)을 나열해요.
구문
SHOW [ TERSE ] ROLES
[ LIKE '<pattern>' ]
[ IN CLASS <class_name> ]
[ STARTS WITH '<name_string>']
[ LIMIT <rows> [ FROM '<name_string>' ] ]
매개변수
TERSE
컬럼의 부분집합만 반환해요:
is_default: 명령을 실행하는 데 사용된 역할이 사용자의 기본 역할인지 여부를 지정해요.is_current: 명령을 실행하는 데 사용된 역할이 사용자의 현재 역할인지 여부를 지정해요.is_inherited: 명령을 실행하는 데 사용된 역할이 지정된 역할을 상속하는지 여부를 지정해요.is_from_organization_user_group: TRUE면 역할이 조직 사용자 그룹에서 가져온 것이에요.
LIKE 'pattern'
선택적으로 객체 이름으로 명령 출력을 필터링해요. 필터는 SQL 와일드카드 문자(%와 _)를 지원하며 대소문자를 구분하지 않는 패턴 매칭을 사용해요. 예를 들어 다음 패턴들은 같은 결과를 반환해요:
... LIKE '%testing%' ...
... LIKE '%TESTING%' ...
기본값: 값 없음(출력에 필터링이 적용되지 않음).
IN CLASS class_name
지정된 클래스(class_name)에 대한 레코드를 반환해요.
STARTS WITH 'name_string'
선택적으로 객체 이름의 시작 부분에 나타나는 문자를 기준으로 명령 출력을 필터링해요. 문자열은 작은따옴표로 묶어야 하고 대소문자를 구분해요. 예를 들어 다음 문자열들은 다른 결과를 반환해요:
... STARTS WITH 'B' ...
... STARTS WITH 'b' ...
기본값: 값 없음(출력에 필터링이 적용되지 않음).
LIMIT
선택적으로 반환되는 최대 행 수를 제한하면서 결과의 "페이지 매김"도 가능하게 해요. 반환되는 실제 행 수는 지정된 제한보다 적을 수 있어요(예: 기존 객체 수가 제한보다 적은 경우). 선택적 FROM 'name_string' 하위 절은 결과의 "커서" 역할을 해요. 지정된 문자열과 일치하는 객체 이름을 가진 첫 행 다음부터 지정된 수의 행을 가져올 수 있게 해줘요. 문자열은 작은따옴표로 묶어야 하고 대소문자를 구분해요. 전체 객체 이름을 포함할 필요는 없고 부분 이름도 지원돼요. 기본값: 값 없음(출력에 제한이 적용되지 않음).
참고:
FROM 'name_string'과STARTS WITH 'name_string'절을 모두 지원하는 SHOW 명령에서는 같은 문장에서 두 절을 모두 조합할 수 있어요. 그러나 두 조건이 모두 충족되어야 하며, 그렇지 않으면 서로 상쇄되어 결과가 반환되지 않아요. 또한 객체는 이름으로 사전순으로 반환되므로 FROM 'name_string'은 STARTS WITH 'name_string'이 반환한 행보다 사전순 값이 더 높은 행만 반환해요. 예를 들어... STARTS WITH 'A' LIMIT ... FROM 'B'는 결과를 반환하지 않고,... STARTS WITH 'B' LIMIT ... FROM 'A'도 결과를 반환하지 않아요.... STARTS WITH 'A' LIMIT ... FROM 'AB'는 결과를 반환할 수 있어요(입력 문자열과 일치하는 행이 있다면).
사용 메모
CLASS를 지정하면 다음 컬럼만 반환돼요:
| created_on | name | comment |
- 이 명령은 실행에 웨어하우스가 필요하지 않아요.
- 이 명령은 현재 사용자의 현재 역할에 액세스 권한이 하나 이상 부여된 객체만 반환해요.
MANAGE GRANTS액세스 권한은 보유자에게 계정의 모든 객체를 볼 수 있는 권한을 암묵적으로 부여해요. 기본적으로 계정 관리자(ACCOUNTADMIN 역할)와 보안 관리자(SECURITYADMIN 역할)만MANAGE GRANTS권한을 가져요.- 이 명령의 출력을 후처리하려면 파이프 연산자(
->>)나RESULT_SCAN함수를 사용할 수 있어요. 두 구성 모두 출력을 쿼리할 수 있는 결과 집합으로 취급해요. 예를 들어 SHOW 명령 출력에서 특정 컬럼을 선택하거나 행을 필터링할 수 있어요. - 출력 컬럼을 참조할 때는 큰따옴표로 묶은 식별자를 사용해요. 예를 들어
type출력 컬럼을 선택하려면SELECT "type"이라고 지정해요. SHOW 명령의 출력 컬럼 이름은 소문자이므로 큰따옴표로 묶은 식별자를 사용해야 해요.
예제
모든 역할 표시:
SHOW ROLES;
---------------------------------+---------------+------------+------------+--------------+-------------------+------------------+---------------+---------------+--------------------------+
created_on | name | is_default | is_current | is_inherited | assigned_to_users | granted_to_roles | granted_roles | owner | comment |
---------------------------------+---------------+------------+------------+--------------+-------------------+------------------+---------------+---------------+--------------------------+
Fri, 05 Dec 2014 16:25:06 -0800 | ACCOUNTADMIN | Y | Y | N | 1 | 0 | 2 | | |
Mon, 15 Dec 2014 17:58:33 -0800 | ANALYST | N | N | N | 0 | 6 | 0 | SECURITYADMIN | Data analyst |
Fri, 05 Dec 2014 16:25:06 -0800 | PUBLIC | N | N | Y | 0 | 0 | 0 | | |
Fri, 05 Dec 2014 16:25:06 -0800 | SECURITYADMIN | N | N | Y | 0 | 1 | 0 | | |
Fri, 05 Dec 2014 16:25:06 -0800 | SYSADMIN | N | N | Y | 5 | 1 | 2 | | |
---------------------------------+---------------+------------+------------+--------------+-------------------+------------------+---------------+---------------+--------------------------+
이 예제에서 ACCOUNTADMIN 시스템 정의 역할은 현재(로그인한) 사용자의 현재 역할이자 기본 역할이에요. 네 개의 시스템 정의 역할 외에 사용자 정의 역할 하나(ANALYST)가 생성되었고, 그 역할은 SECURITYADMIN 시스템 정의 역할이 소유해요.
my_role2라는 첫 역할 이후에 계정의 역할을 최대 10개 반환:
SHOW ROLES LIMIT 10 FROM 'my_role2';
더 알아보기 (Learn more)
- See also: SHOW GRANTS, CREATE ROLE, ALTER ROLE, DROP ROLE