カテゴリ:

コンテキスト関数 (セッションオブジェクト)

IS_ROLE_IN_SESSION

セッション内にある現在のユーザーのアクティブな プライマリロールまたはセカンダリロール が、指定されたロールの権限を継承する場合は、 TRUE を返します。

指定されたロールは、現在のプライマリロールまたはセカンダリロール(つまり、それぞれ CURRENT_ROLE または CURRENT_SECONDARY_ROLES によって返されるロール)、またはロール階層の下位にある任意のロールにすることができます。

DEFAULT_SECONDARY_ROLES 値が ALL の場合は、ユーザーに付与された いずれかの ロールが指定されたロールの権限を継承すると、関数は TRUE を返します。

指定されたロールが現在のプライマリロールまたはセカンダリロールのロール階層において上位にあるか、ロール階層にまったくない場合は、 FALSE を返します。

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

IS_OBJECT高度な列レベルのセキュリティトピック

構文

is_role_in_session( '<string_literal>' )

引数

'文字列リテラル'

ロールの名前。

使用上の注意

  • 列レベルのセキュリティ で IS_ROLE_IN_SESSION 関数を使用する場合は、SnowflakeアカウントがEnterprise Edition以上であることを確認してください。

  • この関数を使用して、マスキングポリシーにある条件など、データ共有コンシューマーアカウントから安全な UDF またはセキュアビューにアクセスする場合、この関数は常に NULL 値を返します。この動作により、データ共有コンシューマーアカウントでロール階層が公開されなくなります。

  • 引数として渡すことができるロール名は1つだけです。

指定されたロールに付与された権限が、セッション内の現在のロールに継承されているかどうかを確認します。

select is_role_in_session('ANALYST');

+-------------------------------+
| IS_ROLE_IN_SESSION('ANALYST') |
|-------------------------------|
| True                          |
+-------------------------------+

マスキングポリシーで関数を使用します。

case
  when is_role_in_session('ANALYST') then val
  else '*******'
end;
最上部に戻る