AIのあとしまつ

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)」 に設定する手順を提案されることがあります。

ローカル開発中はこれでも問題ありませんが、そのまま本番公開するとどうなるでしょうか? あなたのアプリの全ユーザーの個人情報が、インターネット上に公開されているのと同じ状態 になってしまいます。知識のある攻撃者なら、ブラウザの開発者ツールだけで全データを抜き出すことができます。

本番前に必ずやるべきこと

  1. RLSを有効化する: テーブル作成時に必ずEnable RLSをオンにします。
  2. ポリシーを厳格に定義する:
    • 「自分のデータしか見れない (auth.uid() = user_id)」
    • 「ログイン済みユーザーしか書き込めない」 など、明確なルール(Policy)を設定する必要があります。

結論

「機能が動くこと」と「安全であること」は別問題です。AIは機能を実装するのは得意ですが、あなたのサービスのセキュリティ要件までは把握してくれません。 機密情報を扱うアプリであればあるほど、セキュリティ設定はプロによるダブルチェックを強く推奨します。