Empress 資料一覧
2007/12/15更新
対応バージョン: 6.10
Empressのセキュリティは以下の2点によって保たれている。
1. UNIXファイルシステム上のアクセス権限
2. Empress管理上のアクセス権限
以下、それぞれについて説明する。
UNIXファイルシステム上のアクセス権限
EmpressデータベースはUNIXファイルシステムのディレクトリ及びファイルで構成されているので基本的にそれらへのアクセス権限はUNIXファイルシステム上のアクセス権に従う。
Empressデータベースに設定されるUNIXファイルシステム上のアクセス権限の設定は以下のパラメータによって設定される。
UNIX上のumask値
Empress管理変数MSDBPERMSの設定値 (custom/tabzero内)
Empressシステム変数MSPERMSの設定値 (custom/initfile内)
Empress管理変数MSDBPERMS及びシステム変数MSPERMSの設定はEmpressデータベース上のumask値と考えてよい。
MSDBPERMS = RWX, RWX, RWX
権限の適用範囲は左から順に
所有者
グループ所属者
上記以外の全ユーザ
となっており、権限種別は以下のようになっている。
R : 読み取りアクセス権
W : 書き込みアクセス権
X : 検索/実行アクセス権
アクセス権を与えない場合は与えない権限種別を設定に記述しない。
例) 書き込み権は所有者のみ、グループ所属者およびその他のユーザは読み込みのみ可能。
MSDBPERMS=RW,R,R
ここで、ファイルへのアクセス権限を決定する際どの設定が優先されるかについて記す。
管理変数MSDBPERMSは
MSDBPERMSに設定が無い場合はUNIXのumask値やMSPERMSの設定が使われる。
新規に作成するデータベースのシステムテーブルに対してMSDBPERMSの設定を有効にする為にはcustom/tabzeroファイルに記述されているMSDBPERMSを変更する。
但し、新規にデータベースを作成しようとする全てのユーザに対してこの設定が有効になってしまうので、注意が必要である。
さて、次に有効となる設定はUNIXのumask値とMSPERMSの設定値の掛け合わせによる設定値がそれである。
この設定値は個々の設定では意味を持たず、両方の値の「所有者」、「グループ」、「その他」でそれぞれ権限を比較し両方に設定のある権限が有効になる。
また、前述の通りMSDBPERMSが設定されていない場合に有効になる。
個々のデータベース毎、データベース内の個々のテーブル毎にアクセス権限を設定したい場合はこの方法が有効である。
但し、Export/Import時などはファイルのアクセス権限はImport時の環境に左右され、自動的に元の設定にはならないので注意が必要である(Import時にファイルアクセス権に関して再設定をするしくみをシェルスクリプトなどのバッチ処理にして組み込む必要がある)。
Empress管理上のアクセス権限
Empress管理上のアクセス権限は
1. データベース作成時の管理変数MSDBDBAPRIVSの設定値
2. テーブルの作成時の管理変数MSDBPRIVSの設定値
3. SQLのgrantコマンドによる設定値
で与えられる。
1.と2.の設定値は作成時のデフォルト値として使用され、作成後個々のテーブルに対してアクセス権限を与えるために3.の方法がとられる。
MSDBDBAPRIVSはcustom/tabzeroの設定のみ有効でEmpressを使用する全てのユーザに対して設定値が使用される。
この設定値はデータベースのシステムテーブルに対して適用される。
MSDBPRIVSはDATABASE/tabzeroの設定が使用され、変更後に新規で作成されるテーブルに対して有効になる。
SQLのgrantコマンドによるアクセス権限の設定は基本的にはテーブルの作成者(Creator)が行うのが一般的であるが、該当テーブルに対してgrant権限を持っていれば権限委譲可能である。
但し、grantコマンドを実行する為にはシステムテーブルに前述の「UNIXファイルシステム上のアクセス権限」で説明したファイルアクセス権限がgrantを実行するユーザに対してある事が必要であり、かつgrantを実行するユーザに対してシステムテーブルにselect、updateの権限が、該当テーブルには実行ユーザに対してgrantオプション付きの該当権限がなければならない。
補足
empimptでテーブルあるいはデータベースをインポートする場合にempimptのオプションで-pを使用し、全てのユーザに対してdisplay及びselect特権を与える事ができる。