[pgsql-jp: 30812] Re: アクセス認証の改造
谷口 彰
akira @ datasource.jp
2003年 8月 20日 (水) 08:09:52 JST
谷口です。
> 私もテストしましたけど.バージョンは7.3.4です.
石井様のおっしゃる通りです 。
検証までしていただき、感謝いたします。
ペコリ。
私と同様に、大量アカウントを管理する必要のある方の参考になれば幸いです。
近い将来、オンラインデータは水道水のように利用されると思いますから。
以下、再検証の結果です。
以下の条件で再度テストしました。
RedHat Linux 9
PostgreSQL 7.3.2
BLKSZ = 8192
(1) GRANT SELECT ON test TO uXXXXX;
2444件目で以下のエラー
Tuple is too big: size 8140, max size 8136
(2) ALTER GROUP grouptest ADD USER uXXXXX;
9486件で検証中断
レスポンスが極端に低下したため(pg_shadow と pg_group の更新毎にキャッシュ
ファイルが書き換えられるためと思われる)
運用しているサーバでは BLKSZ=32768であり、検証としては十分なため
(1) のテストで不可であったため、グループも同様であろうと判断したようです。
pg_class.relacl の型は aclitem[] であるのに対し、pg_group.grolist の型は
integer[] です。
実際の格納サイズは、配列へのポインタや格納している型が影響しているようです。
単純に考えると、pg_group.grolist の件数は
length = ( 8192(BLKSZ) - 9("grouptest") - 4(grosysid) ) / 4(grolist)
= 2044.75
となるのですが?
単純に BLKSZ から計算できないことははっきりしました(多分TOASTによる)。
このへんは今後のために研究したいところです。
結論として、以下の運用で行こうと思います。
1.データベース毎にアクセスレベルに対応したグループを定義
2.データベース内のテーブル毎に上記グループへ GRANT/REVOKE
3.ユーザを登録
4.利用状況に応じ、ユーザを、グループへ追加・グループから削除
ただし、これは (1) のテストが不可であるための対応です。
まあ、かえって管理が楽だと考える方もおられるかもしれません。
ユーザグループをサポートしていない DBMS もあるので、注意が必要です。
当面の運用は可能ですが、やはり、根本的な解決ではないので、こつこつと個人レベ
ルで改造しようと思います。
やっぱり英語を勉強して postgresql.org に参加すべきだった気がします。
しかし、オープンソースはすばらしいですね!
追伸
『PostgreSQLによるデータベース構築技法』(石井様!)を読ませていただきまし
た。スキーマを積極的に利用しようと思います。
----------------------------------------
DataSource http://www.datasource.jp/
谷口 彰 akira @ datasource.jp
pgsql-jp メーリングリストの案内