DWHサーバ管理者ユーザーは、ビューを作成することで、テーブルの一部分のみへのアクセスをユーザーに付与します。
ビューを作成する際に、pgxa_use_variableシステム関数を使用してWHERE句を記述することで、“6.4.1 ログインプロシージャの作成”でpgxa_register_variableシステム関数で登録したユーザー情報をもとにアクセス制御を行います。
注意
pgxa_use_variableシステム関数はデータ型に応じた関数が存在します。詳細は、“リファレンス”の“pgxa_use_variable”を参照してください。
ビューの作成手順
“6.4.1 ログインプロシージャの作成”で作成したログインプロシージャにおいて、ユーザーの部署IDを変数_busho_idとして登録した場合について説明します。
実行例は、売り上げテーブルに対して行レベルのアクセス制御を付与したビューを作成しています。
外部テーブル:uriage_tbl (売り上げテーブル)
ビュー:uriage_v (売り上げビュー)
データベースクライアント機能を利用し、データベースに接続します。
psql (x.y.z) Type "help" for help.
x.y.z:PostgreSQLのバージョンが表示されます。
ビューの作成
行レベルのアクセス制御を行うテーブルに対して、pgxa_use_variableシステム関数による条件句を付与したビューを作成します。
postgres=# CREATE VIEW uriage_v AS postgres-# SELECT * FROM uriage_tbl t postgres-# WHERE t.busho_id = pgxa_use_variable_int('_busho_id');
参照
pgxa_use_variableシステム関数の詳細は“リファレンス”の“pgxa_use_variable”を参照してください。
カラムナテーブルに対するビューの作成
pgxa_create_viewシステム関数を用いて、カラムナテーブルに対するビューを作成します。
postgres=# COMMENT ON VIEW uriage_v is ‘postgres_public_uriage_v’; COMMENT postgres=# SELECT pgxa_create_view(‘uriage_v’); pgxa_create_view -------------------------- t (1行)