카테고리:

컨텍스트 함수

CURRENT_AVAILABLE_ROLES

현재 사용자에게 부여된 모든 계정 수준 역할을 나열하는 문자열(VARCHAR)을 반환합니다.

반환된 문자열에는 사용자가 사용자 세션에서 활성화할 수 있는 모든 역할의 JSON 인코딩 목록이 포함됩니다(USE ROLE 또는 USE SECONDARY ROLES 문 사용).

목록에는 사용자에게 직접 부여된 모든 역할, 그리고 이러한 역할의 계층 구조 내 더 낮은 모든 역할이 포함됩니다. 반환된 값은 사용 가능한 모든 역할 목록이 포함된 VARIANT를 가져오기 위해 PARSE_JSON 함수에 전달될 수 있습니다.

참고 항목:

CURRENT_ROLE , CURRENT_SECONDARY_ROLES , IS_ROLE_IN_SESSION

구문

CURRENT_AVAILABLE_ROLES()

사용법 노트

  • 이 함수는 사용자가 쿼리할 때만 계정 수준 역할 목록을 반환합니다. 활성 사용자가 없는 서비스를 사용하여 함수를 쿼리하면 쿼리가 실패할 수 있습니다. 예를 들어, 함수는 작업 내에서 쿼리할 때 역할 목록을 반환하지 않습니다. 사용자와 연결되지 않은 시스템 서비스에 의해 작업 실행이 실행되기 때문입니다. 이 경우, 쿼리 계획을 완료할 수 없기 때문에 쿼리 시간이 초과될 수 있습니다.

  • 이 함수는 데이터베이스 역할의 이름을 반환하지 않습니다.

  • 이 함수는 세션에서 역할 활성화를 설명해주지 않습니다.

    예를 들어, 마스킹 정책 또는 행 액세스 정책 의 조건에서 이 함수를 지정하면 정책으로 인해 우연히 액세스가 제한될 수 있습니다.

    정책 조건에서 역할 활성화 및 역할 계층 구조가 필요한 경우 IS_ROLE_IN_SESSION 을 사용합니다.

현재 사용자에게 부여된 역할 목록을 반환합니다.

SELECT CURRENT_AVAILABLE_ROLES();

+----------------------------------------------------------+
| ROW | CURRENT_AVAILABLE_ROLES()                          |
+-----+----------------------------------------------------+
|  1  | [ "PUBLIC", "ANALYST", "DATA_ADMIN", "DATA_USER" ] |
+-----+----------------------------------------------------+

PARSE_JSON 함수를 사용하여 VARIANT를 반환하고 FLATTEN 함수를 사용하여 각 역할에 대해 단일 행을 가져옵니다.

SELECT INDEX,VALUE,THIS FROM TABLE(FLATTEN(input => PARSE_JSON(CURRENT_AVAILABLE_ROLES())));

+-----+-------+------------------------+---------------------------+
| ROW | INDEX | VALUE                  | THIS                      |
+-----+-------+------------------------+---------------------------+
|   1 |     0 | "PUBLIC"               | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
|   2 |     1 | "ANALYST"              | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
|   3 |     2 | "DATA_ADMIN"           | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
|   4 |     3 | "DATA_USER"            | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
맨 위로 이동