Virtual DataPort におけるユーザーおよびアクセス権限¶
ユーザー¶
Denodo Virtual DataPort では、以下の 2 種類のユーザーが区別されています。
管理者: データベースを作成、変更、および削除することができ、制限は一切ありません。同様に、ユーザーを作成、変更、および削除することもできます。サーバーをインストールする際に、デフォルトの管理者ユーザーがユーザー名
admin
、パスワードadmin
で作成されます。常に少なくとも 1 人の管理者ユーザーが存在する必要があります。一般ユーザー: ユーザーまたはデータベースを作成、変更、または削除することはできません。管理者ユーザーは、1 つまたは複数のデータベース、またはそれらのデータベースに含まれる特定のビューに対する Connect 権限、Execute 権限、Create 権限、または Write 権限を一般ユーザーに付与できます。
管理者は、一般ユーザーを 1 つまたは複数のデータベースの データベース管理者 に昇格させることができます。つまり、昇格させたユーザーは、それらのデータベースに対して管理タスクを実行できます。
serveradmin ロールを持つ一般ユーザーは、管理者と同じアクションを実行できます。
「一般ユーザー」に「ロール」を割り当てることができます。ロールとは、データベース、およびそのビューとストアドプロシージャに対する一連のアクセス権限です。ロールに割り当てられている権限を変更すると、そのロールに「属する」すべてのユーザーの権限が変更されます。そのため、ロールを使用すると、管理者はユーザーの権限を簡単に管理できます。
ロール¶
ロールは、ユーザーに付与できる一連のアクセス権限です。ユーザーに権限を割り当てるのではなくロールを割り当てると、権限を管理しやすくなるという利点があります。ロールの権限を変更した場合、その変更は対象のロールに「属する」すべてのユーザーに適用されます。ロールを使用しない場合は、各ユーザーの権限を編集する必要があります。
1 人のユーザーに複数のロールを割り当てることができます。その場合、そのユーザーの「有効なアクセス許可」は、各ロールによって割り当てられるアクセス許可の和集合になります。たとえば、ロール A が「admin」データベースに対する Execute 権限を付与し、ロール B が「tests」データベースに対する Execute 権限を付与する場合、ロール A とロール B を持つユーザーは、「admin」と「tests」の両方のデータベースに対する Execute 権限を持ちます。
さらに、ロールを他のロールに割り当てることもできます。これを「ロールの継承」と呼びます。たとえば、以下のロールを持っているとします。
データベース
admin
に対するCONNECT
、EXECUTE
、CREATE
、WRITE
の権限を持つロールvdp_developer
データベース
itpilot
に対するCONNECT
、EXECUTE
、CREATE
、WRITE
の権限を持つロールitpilot_developer
ロール denodo_developer
を作成し、このロールにロール vdp_developer
とロール itpilot_developer
を割り当てることができます。この新しいロールを持つユーザーは、 admin
と itpilot
の両方のデータベースに対する CONNECT
、 EXECUTE
、 CREATE
、および WRITE
の各権限を持ちます。
ロールに割り当て可能なアクセス許可は、ユーザーに割り当て可能な権限と同じです。
アクセス権限のタイプ¶
Virtual DataPort のアクセス権限を特定のユーザーまたはロールに適用することによって、そのユーザーやロールがデータベース、ビュー、およびストアドプロシージャに対して実行できるタスクの範囲を明確にします。
Denodo では特定のビューに対してさまざまな粒度で権限を定義できます。
一般または「coarse-grained」ビューの権限: ユーザーやロールが特定のビューに対して、実行、編集、挿入、更新、削除を行い、そのメタデータ全体を表示できるかどうかを明確に設定します。
詳細なビューの権限: あるユーザーやロールに対して、ビューのどの部分のデータを表示するかを指定できます。詳細な権限には、さまざまな種類があります。
列制限: ユーザーやロールがクエリに対して使用できる列を制限します。
行制限: ユーザーやロールに表示される行を制限し、値のマスクを許可したり、複雑な条件のカスタムポリシーを定義したりします。
以下に示すアクセス権限は、「一般」ユーザーにのみ影響します。なぜなら、特定のデータベースのローカル管理者に昇格した一般ユーザーはそのデータベース内で任意のタスクを実行でき、管理者はサーバー全体で任意のタスクを実行できるからです。
「assignprivileges」ロールを持つ管理者は、特定のデータベース全体、または特定のデータベースの特定のビューまたはストアドプロシージャに対する権限をユーザーまたはロールに付与できます。
データベースレベルの権限¶
ユーザーまたはロールに付与できる、データベースに対する権限を以下に示します。
Connect 権限¶
データベースに対する Connect 権限を持つユーザーは、そのデータベースに接続できます。
ユーザーのすべての権限を一時的に取り消すには、そのユーザーのロールと、すべてのデータベースに対する Connect 権限を取り消します。
Create 権限¶
Create 権限を持つユーザーは、次のタスクを実行できます。
データソース、ビュー、ストアドプロシージャ、Web サービスなどを作成または削除する (つまり、
CREATE
ステートメントを実行する)。派生ビューを作成するには、データベース全体、または少なくとも作成するビューで使用するビューに対する Execute アクセス権限が必要です。
一時テーブルの作成をユーザーに許可し、他のタイプのエレメントの作成は許可しない場合は、そのユーザーに create_temporary_table
ロールを付与します。
ユーザーがエレメントを作成すると、デフォルトでは METADATA 権限と WRITE 権限が自動的に割り当てられます。これは、Virtual DataPort サーバーに存在するユーザーに対してのみ行われます (Kerberos/LDAP/SAML/OAUTH/DnDToken で認証されたユーザーに対しては行われません)。
Create Data Source 権限¶
Create Data Source 権限を持つユーザーは、次のタスクを実行できます。
データソースを作成または削除する (つまり、
CREATE DATASOURCE
ステートメントを実行する)。
Create View 権限¶
Create View 権限を持つユーザーは、ビュー、ストアドプロシージャ、および型を作成または削除することができます。つまり、 CREATE WRAPPER
、 CREATE TYPE
、 CREATE WRAPPER
、および CREATE PROCEDURE
の各ステートメントを実行することができます。これには、マテリアライズドテーブルと一時テーブルが含まれます。
また、作成するビューで直接使用されるビュー、またはそのデータベースに対する「METADATA」権限が必要です。
一時テーブルの作成をユーザーに許可し、他のタイプのエレメントの作成は許可しない場合は、そのユーザーに create_temporary_table
ロールを付与します。
Create Data Service 権限¶
データベースに対する Create Data Service 権限を持つユーザーは、次のタスクを実行できます。
Web サービス (REST と SOAP)、ウィジェット、および JMS リスナーを作成または削除する (つまり、
CREATE REST/SOAP WEBSERVICE
、CREATE WIDGET
、およびCREATE LISTENER JMS
の各ステートメントを実行する)。
Create Folder 権限¶
Create Folder 権限を持つユーザーは、次のタスクを実行できます。
フォルダを作成または削除する (つまり、
CREATE FOLDER
ステートメントを実行する)。
Execute 権限¶
データベースに対する Execute 権限を持つユーザーは、次のタスクを実行できます。
データソースのイントロスペクションを実行する。
データベースの任意のビューまたはストアドプロシージャに対してクエリを実行する (つまり、
SELECT
ステートメントまたはCALL
ステートメントを実行する)。
データベースではなく、特定のビューまたはストアドプロシージャに対するこの権限をユーザーまたはロールに付与した場合、そのユーザーは、次のタスクを実行できます。
ビューまたはプロシージャに対してクエリを実行する (つまり、
SELECT
ステートメントまたはCALL
ステートメントを実行する)。
特定のビューに対して、より詳細な次の EXECUTE 権限を付与できます。
Metadata 権限¶
Metadata 権限を持つユーザーは、次のタスクを実行できます。
データベースのビューおよびストアドプロシージャのリストを表示する (つまり、
LIST
ステートメントを実行する)。ビューおよびストアドプロシージャのスキーマを表示する。
ビューの [Edit] ダイアログと [Options] ダイアログを開く。ただし、 Write 権限を持たないユーザーは、ビューを変更できません。
ビューの ツリービュー と データリネージ を開く。
実際にクエリを実行することなく、任意のクエリの実行プランを取得する。
クエリのクエリプランを確認するには、ビューの [Execute] ダイアログを開いて [Query plan] をクリックします。または、VQL シェルを開いて、クエリの先頭に
DESC QUERYPLAN
を付けます。次に例を示します。DESC QUERYPLAN SELECT count(*), sum(total) FROM invoice GROUP BY billing_state
データベースではなく、一連のビューまたはプロシージャに対する Metadata 権限を付与した場合、次のような違いがあります。
ユーザーは、データベース全体ではなく、権限を持つビューまたはプロシージャにのみアクセスできます。
クエリプランには、ユーザーが Execute アクセス権限を持つビューの情報のみが表示されます。データソースに関する情報は一切表示されません。たとえば、データベースに委任された SQL クエリは表示されません。
この権限の主な目的は、以下のとおりです。
実際のライブデータを確認しなくても、開発者が本番サーバーに接続して問題をトラブルシューティングできるようにします。たとえば、クエリの実行プラン全体を確認できるようにします。
データソースとその基本ビューはすべて中央のデータベースに保存し、各プロジェクトは専用のデータベースに作成するとします。Metadata 権限を使用することにより、各プロジェクトの開発者はクエリプランの一部だけではなく全体を確認できます。
Write 権限¶
データベースに対する Write 権限を持つユーザーは、次のタスクを実行できます。
データベースのデータソース、ビュー、Web サービス (REST と SOAP)、ストアドプロシージャ、ウィジェットを変更または削除する。
データベースの既存のフォルダ間でエレメントを移動する。ただし、移動するエレメントが別のフォルダである場合を除きます。
Web サービスをデプロイ、再デプロイ、アンデプロイする。
ウィジェットの補助 Web サービスをデプロイ、再デプロイ、およびアンデプロイする。
データソース、ビュー、ストアドプロシージャ、JMS リスナー、Web サービス (REST と SOAP)、およびウィジェットの VQLを表示する。ユーザーが metadata_export ロールを持つ場合、 Write 権限は不要 (VQL の表示には metadata 権限のみが必要)。
データベースではなく、特定のエレメント (データソース、ビューなど) に対するこの権限をユーザーに付与した場合、そのユーザーは、次のタスクを実行できます。
エレメントを削除する。削除するエレメントに依存する他のエレメントがある場合、他のエレメントに対する Write アクセス権限も必要です。なぜなら、他のエレメントもカスケード方式で削除されるためです。
エレメントを変更する。ユーザーが派生ビューを変更できるのは、派生ビューのサブビューに対する「Execute」権限を持っている場合のみです。
データベースの既存のフォルダ間でエレメントを移動する。
エレメントの VQL を表示する。
File 権限¶
File 権限を持つユーザーは、[Server Configuration] ウィザードの [Privileges] ダイアログに一覧表示されたディレクトリを閲覧できます。
Admin 権限¶
この権限は、データベース全体に対してのみ割り当てることができます。この権限を持つユーザーは、そのデータベースのすべてのエレメントに対する Connect 権限、Create 権限、Metadata 権限、Execute 権限、および Write 権限を持ちます。さらに、以下のタスクを実行できます。
データベースのキャッシュ、スワップなどの構成パラメータを設定する。
データベースの説明を編集する。
データベースのエレメントに対する権限を一般ユーザーに付与するか、取り消す。Admin 権限を他のユーザーに付与することはできません。
データベースのエレメントに対する権限をロールに付与するか、取り消す。
フォルダを作成、名前変更、または削除する。
すべての Denodo Web サービスとウィジェットの補助 Web サービスを一覧表示、デプロイ、再デプロイ、およびアンデプロイする。
この権限を持つユーザーは、以下のタスクを実行することはできません。
ユーザーを作成または削除する。
ロールを作成または削除する。
ロールをユーザーまたは他のロールに付与するか、ユーザーまたは他のロールからロールを取り消す。
ユーザーのパスワードを変更する。
データベースを作成または削除する。
Admin 権限を他のユーザーに付与する。
Insert 権限、Update 権限、および Delete 権限¶
Insert 権限を持つユーザーは、ビューに対して INSERT
ステートメントを実行できます。列制限は INSERT
操作に影響を与える場合があります。
Update 権限を持つユーザーは、ビューに対して UPDATE
ステートメントを実行できます。
Delete 権限を持つユーザーは、ビューに対して DELETE
ステートメントを実行できます。
これらの権限は、ストアドプロシージャには適用できません。