Empress 資料一覧

Empressのテーブルアクセス権の管理方法

2007/11/4更新

対応バージョン: 6.10

Empressは個々のデータベース毎にデータ辞書テーブルと呼ばれる以下の5つのシステムテーブルを持っており、テーブルの属性に関する情報をいろいろな形で管理している。

sys_tables

テーブルに関する情報

sys_attrs

属性に関する情報

sys_privs

テーブルアクセス特権に関する情報

sys_attr_privs

属性アクセス特権に関する情報

sys_dictionary

上記のテーブルのコンパイルされた全情報を持っている。

このうち、主にテーブルのアクセス権に関する情報はsys_tablesとsys_privsで管理しているので、以降はこの2つのテーブルについて説明する。

sys_tables

tab_name

テーブル名

tab_number

テーブル番号

この番号はテーブル名に対する実際のファイル名の割当となる。

例えばテーブル番号が1の場合テーブル情報が格納されているファイル名は$HOME//0001.relとなる。

tab_type

現在未使用

tab_numattrs

テーブル内の属性数

tab_lock

テーブルに設定されたロックレベル

・n : 未設定

・r : レコードロック ... Empress制御用テーブル(sys_*)はこのレベルで作成される。

・g : グループロック

・t : テーブルロック

tab_perms

テーブルに対応するファイルに設定されたOSのパーミッション

ファイルはUNIXアカウントのホームディレクトリ配下に作成されるのでそのアカウントのumaskが適用される。

tab_index

テーブル上に生成されたあらゆるインデックスに関する情報

tab_refer

テーブル上の全ての参照制約定義

tab_view

ビューの場合はビューを定義するselect文

tab_vwcomp

ビューを定義するコンパイルデータ

tab_location

リモートの場合はテーブル位置

tab_creator

テーブルを生成したUNIXアカウント名

tab_crtime

テーブルが生成された日付及び時間

tab_comment

create commentコマンドによって生成されたコメント

tab_param

Shared Memoryのパラメータ

sys_privs

1つのテーブルにつきgrantor/granteeのペアで計2レコード保持

priv_grantor

特権を与える人

priv_grantee

特権を受ける人(UNIXアカウント)

priv_tabnum

特権が適用されるテーブルの識別番号(= tab_number@sys_tables)

priv_updattr

テーブル及びビューにおける個別の属性更新特権を設定するテーブルであるsys_attr_privs内にレコードがあるかどうかを`y'か`n'で表示する。

grantorがテーブル内の少なくとも1つの属性(但し全ての属性ではない)に関する更新特権をgranteeに与えた場合はsys_attr_privs内にレコードが存在する。

priv_delete

テーブルからレコードを削除(delete)する特権

・n : delete特権がない。

・y : delete特権は有するが、この特権を他に与える権限はない。

・g : delete特権を有し、さらにこの特権を他に与える権限も有する。

priv_insert

テーブルにレコードを挿入(insert)する特権

・n : insert特権がない。

・y : insert特権は有するが、この特権を他に与える権限はない。

・g : insert特権を有し、さらにこの特権を他に与える権限も有する。

priv_select

テーブルからレコードを読み込む(select)する特権

・n : select特権がない。

・y : select特権は有するが、この特権を他に与える権限はない。

・g : select特権を有し、さらにこの特権を他に与える権限も有する。

priv_update

テーブルの全属性を更新(update)する特権

・n : update特権、またはpartial update特権(*)がない。

・y : update特権は有するが、この特権を他に与える能力がないfull update特権。

・g : update 特権を有し、さらにこの特権を他に与える能力があるfull update特権。

(*) partial update特権は一部の属性が更新された場合のみ発生する。この場合、attr_privs属性は`y'の値を持ちsys_attr_privsテーブルに注目する。

priv_display

テーブルを表示(display)する特権

・n : display特権がない。

・y : display特権は有するが、この特権を他に与える権限はない。

・g : display特権を有し、さらにこの特権を他に与える権限も有する。

priv_alter

テーブルを変更(alter)する特権

・n : alter特権がない。

・y : alter特権は有するが、この特権を他に与える権限はない。

・g : alter特権を有し、さらにこの特権を他に与える権限も有する。

priv_drop

テーブルを削除(drop)する特権

・n : drop特権がない。

・y : drop特権は有するが、この特権を他に与える権限はない。

・g : drop特権を有し、さらにこの特権を他に与える権限も有する。

priv_empty

テーブルを空(empty)にする特権

・n : empty特権がない。

・y : empty特権は有するが、この特権を他に与える権限はない。

・g : empty特権を有し、さらにこの特権を他に与える権限も有する。

priv_index

テーブル上にインデックスを生成(index)する特権

・n : index特権がない。

・y : index特権は有するが、この特権を他に与える権限はない。

・g : index特権を有し、さらにこの特権を他に与える権限も有する。

priv_sort

テーブルをソート(sort)する特権

・n : sort特権がない。

・y : sort特権は有するが、この特権を他に与える権限はない。

・g : sort特権を有し、さらにこの特権を他に与える権限も有する。