Supabase RLSの導入で注意すべきポイントとは?
Next.jsとSupabaseを使ったアプリケーション開発は非常に魅力的な選択肢ですが、Row-Level Security(RLS)の設定には注意が必要です。特に、本番環境でのミス設定により、他ユーザーのデータが意図せずに読まれるといったケースも報告されています。
RLSはデフォルトでOFFになっているため、手動で全テーブルに対して有効化する必要があります。ポリシー作成にはSQLが要求され、たとえばauth.uid()を使って「自分のデータのみアクセス可能」といった条件を設定できます。しかし、PostgreSQLのVIEWには明示的にRLSを設定しないと、このポリシーが適用されないため注意が必要です。
個人開発者の中には、RLSポリシーを忘れたために「全ユーザーが他のデータを見ることができた」という事例もあります。また「プロフィールが読めず無料プラン扱いになった」というバグも、RLSポリシー未設定が原因とされています。別ユーザーでポリシーを確認することが大事です。
特にNext.jsと同時使用する際には、service role keyをクライアントサイドで使わないこと、そしてRLSポリシーを有効にした状態で専門外のユーザーによるテストを行うことが推奨されます。
RLSポリシーのミスやVIEWの不備はデータ漏洩のリスクが高く、必要に応じてSupabase Edge Functionsの活用も考慮に入れると良いでしょう。AIツールでのコード変更に伴う影響も注意が必要です。
参考リンク
著者について
著者について
コメント
コメントを読み込んでいます
会話の履歴を取得しています。
U