TOFU(流入を増やす)
AIコーディングの落とし穴:SupabaseのRLS(行レベルセキュリティ)設定を無視してはいけない理由
「動けばいい」で作ったアプリに潜むセキュリティリスク。SupabaseのRLS設定の重要性と、AIが見落としがちな設定について解説します。
SupabaseRLSセキュリティAIコーディング
Supabaseを使えば、データベースとAPIが一瞬で手に入ります。特にAIコーディングツールとの相性は抜群で、バックエンドのコードをほとんど書かずにアプリを作ることができます。
しかし、ここで最も危険なのが RLS(Row Level Security:行レベルセキュリティ) の設定漏れです。
RLSとは何か?
通常のWeb開発では、バックエンドのAPIサーバーが「誰がどのデータにアクセスしてよいか」を判断します。しかしSupabaseのようにクライアント(ブラウザ)から直接データベースにアクセスできるBaaSの場合、データベース自体がその判断を行う必要があります。それがRLSです。
AIが見落とす「全公開」の罠
AIに「Supabaseでデータ保存したい」と指示すると、手っ取り早く動かすために RLSを無効化 したり、ポリシーを 「誰でも読み書き可能(public)」 に設定する手順を提案されることがあります。
ローカル開発中はこれでも問題ありませんが、そのまま本番公開するとどうなるでしょうか? あなたのアプリの全ユーザーの個人情報が、インターネット上に公開されているのと同じ状態 になってしまいます。知識のある攻撃者なら、ブラウザの開発者ツールだけで全データを抜き出すことができます。
本番前に必ずやるべきこと
- RLSを有効化する: テーブル作成時に必ずEnable RLSをオンにします。
- ポリシーを厳格に定義する:
- 「自分のデータしか見れない (
auth.uid() = user_id)」 - 「ログイン済みユーザーしか書き込めない」 など、明確なルール(Policy)を設定する必要があります。
- 「自分のデータしか見れない (
結論
「機能が動くこと」と「安全であること」は別問題です。AIは機能を実装するのは得意ですが、あなたのサービスのセキュリティ要件までは把握してくれません。 機密情報を扱うアプリであればあるほど、セキュリティ設定はプロによるダブルチェックを強く推奨します。