行レベルセキュリティとは?
行レベルセキュリティ(RLS)は、行ごとに、各ユーザーが読んだり変更したりできるレコードを決めるデータベースの機能です。アプリがより多くを求めても、顧客は自分の注文だけを見られます。
この機能がないと、「ユーザーは自分のデータだけを見られる」というルールはアプリのコードに置かれます。一つの画面やAPIが確認を忘れると、非公開のデータが漏れるおそれがあります。
行レベルセキュリティでは、ルールはデータベース自体に置かれます。「ordersの行は、customer_idがサインイン中のユーザーと一致する場合にのみ見える」のようなポリシーを書けば、データベースがすべての問い合わせにそれを適用します。
PostgresはRLSに対応しており、アプリがブラウザから直接データベースに接続する一部のバックエンドサービスは、これに大きく依存しています。そうした構成では、ポリシーのないテーブルは誰でも読めてしまうことがあります。
RLSは保護の一層であり、唯一のものではありません。アプリには、適切なサインイン、サーバー側の確認、管理者アクセスの慎重な扱いも引き続き必要です。
例
- ポータルのクライアントは、自分の書類だけを見る
- ツールの各チームは、自分のプロジェクトだけを見る
よくある質問
行レベルセキュリティは必要ですか?
アプリが多くの利用者の非公開データを保存し、その一部がブラウザから直接データベースに問い合わせる場合は必要です。すべてのアクセスが権限を確認するバックエンドを通る場合、RLSは追加の安全網になります。
行レベルセキュリティはロールと同じですか?
違います。ロールは、管理者やメンバーなど、その人がどんな種類のユーザーかを表します。行レベルセキュリティは、ユーザーのIDやロールといった事実を使って、どの特定の行に到達できるかを決めます。
関連項目
Mythex · Pricing · AIでなんでも作ろう · ウェブサイト・アプリのテンプレート · Mythexを比較 · AIアプリ開発用語集 · AIアプリ開発の無料ツール · English