行レベルセキュリティの使い方

行ごとに見せる・見せないを決める

書き方

ALTER TABLE 表 ENABLE ROW LEVEL SECURITY;
CREATE POLICY 名前 ON 表 [FOR SELECT|INSERT|UPDATE|DELETE] [TO ロール] USING (条件) [WITH CHECK (条件)];
DROP POLICY 名前 ON 表;

RLS を有効にすると、ポリシーの USING の条件に合う行だけが見え、WITH CHECK の条件に合う行だけを書けます。ポリシーが 1 つもなければ何も見えません。表の持ち主とスーパーユーザーは RLS を素通りします(持ち主にも効かせるには FORCE ROW LEVEL SECURITY)。

例

ALTER TABLE letters ENABLE ROW LEVEL SECURITY;
CREATE POLICY own_letters ON letters USING (owner = current_user);

実際に打って練習する

PostgreSQL DBA コースの Lv11「行ごとの権限 RLS」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

すべてのレベルが、プラチナ以上のプランで遊べます。

PostgreSQL の管理コマンド一覧(DBA)へ戻る