GET_CATALOG_EFFECTIVE_PERMISSIONS¶
ストアドプロシージャ GET_CATALOG_EFFECTIVE_PERMISSIONS は、ユーザーに付与されている有効な権限を返します。このプロシージャは、データベースごとに 1 つの行と、ユーザーが権限を持っているエレメントごとに 1 つの行を返します。
重要
このプロシージャは、組織の Active Directory または ID プロバイダーにのみ存在するユーザー (つまり Virtual DataPort に作成されていないユーザー) の権限を返しません。ただし、入力ユーザー名がクエリを実行しているユーザー名と同じ場合を除きます。
CATALOG_PERMISSIONS プロシージャも権限に関する情報を返しますが、結果は異なります。
「CATALOG_PERMISSIONS」は、各ユーザー/ロールに付与されている権限を返します。
「GET_CATALOG_EFFECTIVE_PERMISSIONS」は、ユーザーが各エレメントに対して持っている有効な権限を返します。
たとえば、データベースに対するロール read をユーザーに付与したとします。「CATALOG_PERMISSIONS」は、この権限を示す 1 つの行を返します。この「GET_CATALOG_EFFECTIVE_PERMISSIONS」権限は、このデータベースのエレメントごとに 1 つの行を返します。
構文
GET_CATALOG_EFFECTIVE_PERMISSIONS (
input_user_name : text
, input_database_name : text
, input_check_global_security_policies : boolean )
input_user_name(必須): ユーザーの名前。input_database_name(オプション):nullの場合、このプロシージャは、ユーザーが権限を持っているすべてのエレメントを返します。null以外の場合、このデータベースのエレメントに対するユーザーの権限を返します。input_check_global_security_policies(オプション): デフォルト値はtrueです。その場合、プロシージャは、制限を計算するために グローバルセキュリティポリシー も確認します。
このプロシージャは、ユーザーが権限を持っているエレメントごとに 1 つの行を返します。各行には、以下のフィールドがあります。
username: ユーザーの名前。この値は、常にinput_user_nameと同じです。globaladmin:input_user_nameが管理者の場合はtrue、そうでない場合はfalse。dbname: この権限が付与されているデータベースの名前。elementname: この権限が付与されているエレメントの名前。この権限が単一のエレメントではなくデータベースに対して付与されている場合はnullです。elementtype: この権限が付与されているデータベースのエレメントのタイプ。想定される値は、Database、Data source、View、Procedure、 およびWeb serviceです。elementsubtype: エレメントタイプがData sourceではない場合はnullです。それ以外の場合は、データソースのタイプです。想定される値は、df、essbase、jdbc、json、custom、odbc、olap、mongodb、salesforce、sapbwbapi、saperp、ws、xmlです。dbadmin、dbconnect、dbcreate、dbcreatedatasource、dbcreatedataservice、dbcreateview、dbcreatefolder、dbexecute、dbwrite、dbmetadata、およびdbfile: データベースに対して付与できる権限を表します。elementmetadata、elementexecute、elementwrite、elementinsert、elementupdate、およびelementdelete: データベースではなくデータベースのエレメントに対して付与できる権限を表します。この行が (個々のエレメントではなく) データベースを対象として付与できる権限を表す場合はnullです。columnpermissions: 行が列権限を持つビューに対して付与されている権限を表す場合、これはnullではありません。この場合、このフィールドには、投影可能なフィールドのコンマ区切りリストが含まれます。rowpermissions: この行がビューに対する権限を表しており、このビューに対する行制約がユーザーに設定されている場合はtrue、そうでない場合はfalsecustompermissions: この行がビューに対する権限を表しており、このビューに関するカスタムポリシーがユーザーに適用されている場合はtrue、そうでない場合はfalse。
注釈
columnpermissions 、 rowpermissions 、および custompermissions 列は、以下の構成プロパティの影響を受けません。
com.denodo.vdb.catalog.user.User.enableCheckViewRestrictionAlways.
これは、この列の値が null または false であっても、このプロパティが true に設定されている場合は、一部の制約がエレメントに適用される可能性があることを意味します。
このプロパティの意味については、「 列権限 」で説明しています。
注釈
このプロシージャを実行する場合、実行時ユーザーセッションは使用できません。したがって、このプロシージャは、 グローバルセキュリティポリシー を確認する際、ユーザーセッションの属性を使用する条件は満たされているものと常に仮定します。
必要な権限
このプロシージャの結果は、それを実行するユーザーの権限によって異なります。
管理者: このプロシージャは、任意のユーザーの権限に関する情報を返します。
その他のユーザー (データベースの管理者を含む): このプロシージャは、このプロシージャを実行しているユーザーに付与されている権限に関する情報のみを返します。
このプロシージャは、以下のいずれの場合もエラーを返します。
入力パラメータ
input_user_nameが存在しないユーザー名である場合。入力パラメータ
input_database_nameが存在しないデータベースである場合。管理者以外のユーザーが、別のユーザーに付与されている権限をリクエストする場合。
入力ユーザーが Kerberos または LDAP のユーザー (つまり Virtual DataPort で作成されていないユーザー) であり、このプロシージャを実行するユーザーではない場合。この場合、このユーザーが存在しないことを示すエラーが返されます。
