Row Level Security
概要
レコード単位でのアクセス制御
テーブルのRLSを有効にすると、アクセスするには行セキュリティポリシーによって許可される必要がある
RLSはTABLE単位で有効化する必要がある(デフォルトでは無効化されている)
DBスーパーユーザーはあらゆる制限を迂回してしまうため、RLSが有効に働かない
ポリシーの評価タイミング
ポリシーでどの行が可視である、あるいは更新可能であるかを指定するために、ブーリアン値を返す式が必要です。 ユーザの問い合わせにあるどの条件や関数よりも前に、この式が各行について評価されます。
RLS有効化手順
ALTER TABLE テーブル名 ENABLE ROW LEVEL SECURITY;
/icons/point.iconテーブルにポリシーが存在しない場合は、デフォルト拒否のポリシーが使われて、どの行も見ることも更新することもできなくなる
ALTER TABLE テーブル名 FORCE ROW LEVEL SECURITY;
ForceでRLSを有効化するとテーブル所有者もRLSの検査対象にできる
RLSポリシー作成
/icons/hr.icon
参照
postgresql9.6
postgresql16