FixVibe
Covered by FixVibehigh

Supabase セキュリティ チェックリスト: RLS、API キー、およびストレージ

この調査記事では、Supabase プロジェクトの重要なセキュリティ構成の概要を説明します。これは、データベース行を保護するための行レベル セキュリティ (RLS) の適切な実装、anon キーと service_role API キーの安全な処理、およびデータ漏洩と不正アクセスのリスクを軽減するためのストレージ バケットのアクセス制御の強制に焦点を当てています。

CWE-284CWE-668

フック

Supabase プロジェクトを保護するには、API キー管理、データベース セキュリティ、およびストレージ権限に重点を置いた多層アプローチが必要です。 [S1] 行レベル セキュリティ (RLS) が不適切に構成されたり、機密キーが公開されたりすると、重大なデータ漏洩インシデントが発生する可能性があります。 [S2] [S3]

何が変わったのか

この調査では、公式アーキテクチャ ガイドラインに基づいて、Supabase 環境の中核となるセキュリティ制御を統合します。 [S1] これは、デフォルトの開発構成から運用環境が強化された状態への移行、特にアクセス制御メカニズムに焦点を当てています。 [S2] [S3]

影響を受けるのは誰ですか

Supabase をサービスとしてのバックエンド (BaaS) として利用するアプリケーション、特にユーザー固有のデータまたはプライベート資産を処理するアプリケーションが影響を受けます。 [S2] クライアント側バンドルに service_role キーを含める開発者、または RLS を有効にしない開発者は、高いリスクにさらされます。 [S1]

問題の仕組み

Supabase は、PostgreSQL の行レベル セキュリティを利用してデータ アクセスを制限します。 [S2] デフォルトでは、テーブルで RLS が有効になっていない場合、anon キー (多くの場合パブリック) を持つユーザーはすべて、すべてのレコードにアクセスできます。 [S1] 同様に、Supabase ストレージには、ファイル バケットに対して操作を実行できるユーザーまたはロールを定義する明示的なポリシーが必要です。 [S3]

攻撃者が得られるもの

公開 API キーを所有する攻撃者は、RLS が欠落しているテーブルを悪用して、他のユーザーに属するデータの読み取り、変更、または削除を行う可能性があります。 [S1] [S2] ストレージ バケットへの不正アクセスは、プライベート ユーザー ファイルの漏洩や重要なアプリケーション資産の削除につながる可能性があります。 [S3]

FixVibe がそれをテストする方法

FixVibe は、Supabase チェックの一部としてこれをカバーするようになりました。 baas.supabase-security-checklist-backfill は、パブリック Supabase ストレージ バケット メタデータ、匿名オブジェクト リストの公開、機密性の高いバケットの名前付け、およびパブリックの非境界からの非バインド ストレージ シグナルをレビューします。関連するライブ チェックでは、サービス ロール キーの公開、Supabase REST/RLS ポスチャ、不足している RLS のリポジトリ SQL 移行を検査します。

何を修正するか

データベース テーブルでは常に行レベル セキュリティを有効にし、認証されたユーザーに対して詳細なポリシーを実装します。 [S2] 「anon」キーのみがクライアント側のコードで使用され、「service_role」キーはサーバー上に残るようにしてください。 [S1] ストレージ アクセス制御を構成して、ファイル バケットがデフォルトでプライベートになり、定義されたセキュリティ ポリシーを通じてのみアクセスが許可されるようにします。 [S3]