- カテゴリ:
コンテキスト関数 (セッションオブジェクト)
IS_ROLE_IN_SESSION¶
セッション内にある現在のユーザーのアクティブな プライマリロールまたはセカンダリロール が、指定されたロールの権限を継承する場合は、 TRUE を返します。
指定されたロールは、現在のプライマリロールまたはセカンダリロール(つまり、それぞれ CURRENT_ROLE または CURRENT_SECONDARY_ROLES によって返されるロール)、またはロール階層の下位にある任意のロールにすることができます。
DEFAULT_SECONDARY_ROLES
値が ALL
の場合は、ユーザーに付与された いずれかの ロールが指定されたロールの権限を継承すると、関数は TRUE を返します。
指定されたロールが現在のプライマリロールまたはセカンダリロールのロール階層において上位にあるか、ロール階層にまったくない場合は、 FALSE を返します。
- こちらもご参照ください。
構文¶
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;