カテゴリ:

コンテキスト関数

CURRENT_AVAILABLE_ROLES

現在のユーザーに付与されているすべてのアカウントレベルのロールをリストする文字列(VARCHAR)を返します。

返される文字列には、ユーザーがユーザーセッションでアクティブ化できるすべてのロールの JSON エンコードリストが含まれています(USE ROLE または USE SECONDARY ROLES ステートメントを使用)。

このリストには、ユーザーに直接付与されるすべてのロールに加えて、これらのロール階層の下位にあるすべてのロールが含まれます。戻り値を PARSE_JSON 関数に渡して、使用可能なすべてのロールのリストを含む VARIANT を取得できます。

こちらもご参照ください。

CURRENT_ROLECURRENT_SECONDARY_ROLESIS_ROLE_IN_SESSION

構文

CURRENT_AVAILABLE_ROLES()
Copy

使用上の注意

  • この関数は、ユーザーがクエリした場合にのみアカウントレベルのロールのリストを返します。アクティブなユーザーがいないサービスを使用して関数をクエリすると、クエリが失敗する可能性があります。たとえば、タスクの実行はユーザーに関連付けられていないシステムサービスによって実行されるため、関数は タスク 内でクエリされたときにロールのリストを返しません。この場合、クエリプランを完了できないため、クエリがタイムアウトする可能性があります。

  • この関数は、データベースロールの名前を返しません。

  • この関数は、セッションでのロールのアクティブ化を考慮しません。

    たとえば、 マスキングポリシー または 行アクセスポリシー の条件でこの関数を指定すると、ポリシーによりアクセスが誤って制限される可能性があります。

    ポリシー条件でロールのアクティブ化とロール階層が必要な場合は、 IS_ROLE_IN_SESSION を使用します。

現在のユーザーに付与されているロールのリストを返します。

SELECT CURRENT_AVAILABLE_ROLES();

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

PARSE_JSON 関数を使用して VARIANT を返し、 FLATTEN 関数を使用してロールごとに1つの行を取得します。

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"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
Copy