カテゴリ:

システム関数 (システム情報)

EXPLAIN_GRANTABLE_PRIVILEGES

Snowflakeの各オブジェクト型に対してすべての付与可能な権限を表すJSON文字列を返します。この機能は、さまざまなオブジェクトタイプに対して付与できる権限に関する包括的な情報を提供します。これには、各権限に対して利用可能な付与タイプも含まれます。

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

GRANT <権限> ... TO ROLEGRANT CALLER

構文

EXPLAIN_GRANTABLE_PRIVILEGES(
  [ grantee => '<grantee_type>' ]
  [, object_type => '<object_type_name>' ]
  [, grant_type => '<grant_type_name>' ])

引数

すべての引数はオプションであり、名前付きパラメーター構文を使用します。

grantee => 'grantee_type'

被付与者のタイプで結果をフィルターします。有効な値:

  • ROLE

  • APPLICATION

デフォルト: ROLE

被付与者のタイプによって、利用可能な権限が決まります。たとえば、アプリケーションはオブジェクトを個別に所有することはできません。

object_type => 'object_type_name'

結果を単一のオブジェクト型にフィルタリングします。オブジェクト型名の単数形を受け入れます(例:'DATABASE''TABLE''SCHEMA')。テキストは大文字と小文字を区別しません。

grant_type => 'grant_type_name'

特定の付与タイプをサポートする権限に結果をフィルタリングします。有効な値:

  • 'INDIVIDUAL' - 個々のオブジェクトへの付与。GRANT <権限> ... TO ROLE をご参照ください。

  • 'ALL' - 現在のすべてのオブジェクトに対する一括付与(例:GRANT ... ON ALL TABLES IN SCHEMA)。GRANT <権限> ... TO ROLE をご参照ください。

  • 'FUTURE' - 将来のオブジェクトに対する一括付与(例:GRANT ... ON FUTURE TABLES IN SCHEMA)。データベースまたはスキーマオブジェクトに対する将来の許可 をご参照ください。

  • 'INHERITED' - コンテナ内の現在および将来のオブジェクトに対する一括付与(``ALL``と``FUTURE``の組み合わせ)。GRANT <権限> ... TO ROLE をご参照ください。

  • 'CALLER' - 個々のオブジェクトに対する:doc:呼び出し元の付与</developer-guide/restricted-callers-rights>GRANT CALLER をご参照ください。

  • 'INHERITED_CALLER' - コンテナ内のすべての現在および将来のオブジェクトに対する呼び出し元の一括付与(例:GRANT INHERITED CALLER ... ON ALL TABLES IN SCHEMA)。GRANT CALLER をご参照ください。

テキストは大文字と小文字を区別しません。

戻り値

この関数はJSON配列を含むVARCHARを返します。配列の各要素はオブジェクトの型を表し、次の構造を持つJSONオブジェクトです。

{
  "parent": "<parent_object_type>",
  "singular": "<singular_name>",
  "plural": "<plural_name>",
  "privileges": {
    "<privilege_name>": ["<grant_type>", /* ... additional grant types */],
    /* ... additional privileges */
  }
}

JSONフィールド:

  • parent - オブジェクト階層の親オブジェクト型(例:SCHEMAはTABLEの親)。ACCOUNTのようなトップレベルのオブジェクトでは、文字列は空です。

  • singular - オブジェクト型名の単数形(例:DATABASE)。個別の付与に使用されます。

  • plural - オブジェクト型名の複数形(例:DATABASES)。一括付与に使用されます。

  • privileges - 各キーが権限名で、各値がその権限を付与する方法を示す付与タイプ名の配列であるマップ。

使用上の注意

  • すべての引数は定数式でなければなりません。列の値やその他の非定数式を渡すことはできません。

  • 引数が指定されない場合、この関数は、すべてのオブジェクト型のロールに対して付与可能な全権限を返します。

以下の例では、 EXPLAIN_GRANTABLE_PRIVILEGES関数を呼びだしています。

ロールの付与可能な全権限の取得

ロールに対して、すべてのオブジェクトタイプと、それらに付与可能な権限を返します。

CALL EXPLAIN_GRANTABLE_PRIVILEGES();

特定のオブジェクト型に関する権限の取得

``'DATABASE'``オブジェクト型の権限のみを返します。

CALL EXPLAIN_GRANTABLE_PRIVILEGES(object_type => 'DATABASE');

出力例:

[
  {
    "parent": "ACCOUNT",
    "singular": "DATABASE",
    "plural": "DATABASES",
    "privileges": {
      "APPLYBUDGET": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"],
      "CREATE SCHEMA": ["INDIVIDUAL"],
      "IMPORTED PRIVILEGES": ["INDIVIDUAL"],
      "MODIFY": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"],
      "MONITOR": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"],
      "OWNERSHIP": ["INDIVIDUAL"],
      "REFERENCE_USAGE": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"],
      "USAGE": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"]
    }
  }
]

被付与者のタイプによるフィルター

アプリケーションで使用可能な権限を返します。

CALL EXPLAIN_GRANTABLE_PRIVILEGES(grantee => 'APPLICATION');

アプリケーションは個別の所有権を持つことができないため、OWNERSHIP``には'ALL''FUTURE''INHERITED'``などの付与タイプのみが表示されます。