他の開発チームと共有するビューに対する間接アクセスの制限
複数の開発チームが使用するマルチレイヤーの仮想モデルでは、中間レイヤーでの制限の定義が避けられない場合があります。それぞれのレイヤーは、各自のセキュリティ上の懸念を抱える複数のチームによって管理されます。あるレイヤー内のビューの所有者は、そのビューのデータが上位レイヤーのビューによって不適切に公開されないようにする必要があります。
このシナリオでは、最終ユーザーからどのデータにアクセスできるかを制御できなく場合があります。そのため、あるビューに対するアクセス権を付与した場合、該当のデータに対する権限が他のユーザーにも付与されてしまうことを避けるため、セキュリティモデルの動作の変更を行うことができます。これを行うには 2 つの方法があります。
グローバルセキュリティポリシーの使用。
または、 Indirect Access 権限の使用 (以下のセクションを参照)。
間接アクセス権限を使用する、共有ビューに対する間接アクセスの制限
Denodo には間接アクセスを制限する代替方法が組み込まれています。この方法では、グローバルセキュリティポリシーを使用する必要はありません。この中には、特定のビューのロールに付与できる新しい INDIRECT_ACCESS 権限があります。
最初の セクション の例を使用して、この機能について説明します。
EMPLOYEE ビューに関する INDIRECT_ACCESS 権限の付与 を HR ロールに対して行うことができます。
HR のユーザーは、EMPLOYEE ビューを使用してクエリを実行できます。
HR のユーザーは、従業員情報を使用して新しいビューを作成できます。
HR のユーザーは、派生ビュー (従業員情報を使用するビュー) に対する EXECUTE 権限を SALES 部署に付与できます。
SALES のユーザーは派生ビューを実行できますが、SALES に ` INDIRECT_ACCESS` が付与されるまでは、EMPLOYEE ビューのデータはすべて制限されます。
注釈
このセキュリティモデルを実装する場合は、以下の点に留意してください。
この機能は、サーバーレベルではデフォルトで無効になっています (以前の動作がデフォルトです)。
サーバーレベルで機能を有効にしたら、特定のビューに対して有効にする必要があります。
特定のビューに対して機能を有効にしたら、INDIRECT_ACCESS 権限をロールに付与することにより、何らかの方法でその特定のビューのデータにクエリを実行する他のビューを実行してそのビューのデータを取得するユーザーを定義することができます。
この実装方法について順を追って説明します。
最初に、[Administration] > [Server Configuration] > [Privileges] でこの機能をサーバーレベルで有効にして、[Allow Indirect access by default] オプションをチェックします。
これらの権限を含むロールは、ビューやプロシージャの詳細ペインで権限のタブをクリックし、[Restrict indirect access] オプションをチェックすることで、そのビューやプロシージャに対して構成できます。この権限を持つロールを選択できます。
権限を構成するには、[Administration] > [Role Management] オプションを選択し、ロールを選択して [Assign Privileges] ボタンをクリックする方法もあります。データベースの詳細権限の列の編集ボタンをクリックし、変更するエレメントの間接アクセス列のボタンをクリックします。この列には、indirect_access 権限が構成されているエレメントのチェック状態が表示されます。