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' 하위 절은 결과의 "커서" 역할을 해요. 지정된 문자열과 일치하는 객체 이름을 가진 첫 행 다음부터 지정된 수의 행을 가져올 수 있게 해줘요. 문자열은 작은따옴표로 묶어야 하고 대소문자를 구분해요. 전체 객체 이름을 포함할 필요는 없고 부분 이름도 지원돼요. 기본값: 값 없음(출력에 제한이 적용되지 않음).

참고: 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)