可視レベル

<< 目次を表示 >>

ページ位置:  プロジェクトの作成と管理 > Proクラウドサーバ > 有料ライセンスで利用できる機能 >

可視レベル

「可視レベル」とはEnterprise Architectのモデルの一部について、ユーザーが参照することができるかどうかを指定するための仕組みです。Proクラウドサーバで管理されているモデルでこの機能を利用することができます。可視レベルの機能は、Oracle8以降およびSQLServer 2016で利用できる行レベルセキュリティの機能を利用して実装しています。

 

行レベルセキュリティとはデータベース内のテーブルについて、行単位でのユーザーごとのアクセス権が設定できる機能です。今までのDBMSでは、テーブル単位で読み書きと追加削除のアクセス権を設定することができました。行レベルセキュリティの機能が利用できるようになると、スクリプトやデータベースの直接参照などによるアプリケーションによってセキュリティを回避することができなくなります。つまり、データベースから取得できる内容が、そのユーザーが利用可能な情報であることになります。

 

行レベルセキュリティの機能はDBMSの機能として実装されているので、Enterprise Architectの処理側にあまり影響を与えずに利用できます。APIやアドインについても影響が少ないと考えられます。

 

 

動作の仕組み

通常のテーブルに対するアクセス権のほかに、データベースユーザーごとに可視レベルに関するアクセス権を設定できます。

 

新しい列 VIS_LVL (Visibility Level : 可視レベル)がEnterprise Architectのテーブルに追加されます。この列には、その内容を参照することが可能な最低限のレベルを保持します。

 

このテーブルの内容については、操作対象のユーザーの可視レベルが最低限以上の場合のみ参照・編集できるようになります。

 

データベーストリガーを、この VIS_LVL の列の値を適切に維持するために利用しています。例えば、Enterprise Architectのモデルブラウザにおいてパッケージの可視レベルを変更した場合、対象のパッケージだけでなくそのパッケージ内の要素・子パッケージなどを対象に可視レベルを自動設定します。

 

注意:

Sparx Systemsが提供するデータベース作成のSQLスクリプトでは、可視レベルは0から5までの値に対応します。5が最も高いレベルです。0は既定値であり、誰でも内容を参照したり更新したりできることを示します。(必要に応じて、SQLスクリプトを変更して5よりも大きい値を設定することもできます。) 可視性レベルが3のユーザーは、可視性レベルが1および2の内容も参照できます。

 

 

動作原理

データベースを利用するユーザーには、通常必要なアクセス権に加えて、利用可能な可視レベルが設定されます。

 

Enterprise Architectの主要なテーブルに追加の列 VIS_LVL (Visibility Level) が追加されます。この列は、その情報を参照することが可能な可視レベルの情報が格納されます。

 

該当するテーブルには、さらに自分自身の可視レベルの情報のみを参照できるというセキュリティポリシーが設定されます。

 

データベースにはトリガーが追加されます。このトリガーは、子要素などの関係する情報の可視レベルを維持するために利用します。例えば、パッケージの可視レベルを設定すると、自動的にそのパッケージ内の要素やダイアグラムの可視レベルが更新されます。

 

注意:

この可視レベルの機能を利用するためのスクリプトでは、可視レベルとして1から20までが設定可能な内容になっています。T_VISIBILITYLEVELの値を変更することで、利用可能な可視レベルを調整することができます。なお、可視レベルUnrestricted(可視レベル0)は特別な意味を持つ値であり、誰でもその情報を見ることができることを意味します。既定値はUnrestrictedです。

(Unrestrictedという名称および可視レベルの範囲は、インストール時に実行するSQLのスクリプト内で定義されていて、必要に応じてスクリプトを編集し、変更することもできます。)

可視レベルが大きい場合、小さな可視レベルの情報も参照できます。例えば、あるユーザーの可視レベルが3の場合、1および2の情報も参照できます。

 

 

注意点

可視レベルの機能を有効にすると、可視レベルの機能が無効の場合と比較すればデータベースサーバ側の処理が増えます。そのため、データの量や内容によっては、追加の処理時間がかかることが見込まれますが、具体的にどの程度の違いがあるかを事前に見積もることは難しいです。Enterprise Architectの可視レベルの機能は、できる限り影響が少ない方法で実現していますが、可視レベルの機能が無効な場合に比べれば処理時間が少なからず増えることが見込まれます。

 

 

参照: