【ぎょうれべるせきゅりてぃ】
行レベルセキュリティ(RLS) とは?
💡 同じテーブルを見ているのに、見える行が人によって違う——DBが自動で仕分けする
📌 このページのポイント
行レベルセキュリティって、普通のアクセス制御と何が違うの?
アプリ側でWHEREを書けば同じことができるんじゃないの?
実際にどう設定するの?
PostgreSQLでは「ポリシー」を定義するよ。「tenant_id = current_setting('app.tenant_id')」みたいな条件を書いておくと、ユーザーが自分のテナントのデータしか見えなくなる。マルチテナントSaaSでとても便利な機能だね。
パフォーマンスへの影響はあるの?
Supabaseで使われているって聞いたけど関係あるの?
まさに!SupabaseはPostgreSQLのRLSをフル活用したBaaS(Backend as a Service)なんだ。認証情報をセッション変数に入れて、各テーブルのRLSポリシーで「自分のデータだけ」を制限する設計になっているよ。
まとめ:ざっくりこれだけ覚えればOK!
「行レベルセキュリティ(RLS)」って出てきたら「ユーザーごとに見える行をDBが自動制限する機能」と思えればだいたいOK!
📖 おまけ:英語の意味
「Row-Level Security」 = 行レベルセキュリティ
💬 Row(行)+Level(レベル)+Security(セキュリティ)。テーブルの行という細粒度でアクセス制御をかける仕組みだよ