行レベルセキュリティの使い方
行ごとに見せる・見せないを決める
書き方
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」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
すべてのレベルが、プラチナ以上のプランで遊べます。