カテゴリ
データベース・RLS(Supabase / Postgres / 認可)の設計ガイド
データ層は、認可と整合性を「アプリの善意」ではなくDBの制約で守る場所です。PostgreSQLの行レベルセキュリティ(RLS)で認可をDBに寄せ、pgTAPで退行を止め、型安全なORMでスキーマと型を一致させる。マルチテナントのデータ分離まで、信頼境界をサーバー側に置く設計を扱います。DynamoDBに特化した設計(シングルテーブル・コスト・Streams・Global Tables・セキュリティ)は『DynamoDB』クラスタに、PostgreSQL本体のパフォーマンスチューニング・インデックス・EXPLAIN・MVCC/VACUUM・JSONB・パーティショニングは『PostgreSQL本体・性能設計』クラスタに、Prismaに特化した設計(v7のRustフリー化・driver adapters・スキーマ/リレーション設計・Migrate運用・パフォーマンス・技術選定・移行)は『Prisma』クラスタにまとめています。
全 14 記事
基礎ガイド
基礎ガイド(まずはここから)
【2026年版】Supabase本番運用ガイド:公式ドキュメント準拠でNext.js × RLS × Realtime × Edge Functionsを実装する
Supabaseを「とりあえず動く」から「本番に耐える」へ。公式ドキュメント(2026-06-24時点)に忠実に、@supabase/ssrによるNext.js 16認証、RLSの正しい書き方と性能最適化、getClaimsとJWT署名鍵、Realtime Broadcast、Edge Functions(withSupabase)、Storage、pgvectorまでを実コードと判断基準つきで体系化した実践ガイドです。
関連する実践記事
- Next.jsSupabaseRLSTypeScriptセキュリティ
Next.js App RouterでSupabase RLSを正しく効かせる:@supabase/ssr・サーバー/ブラウザクライアント・JWT伝播の完全ガイド
「Supabase RLSを書いたのにNext.jsだとデータが空で返る/全部見える」の原因は、ほぼクライアントの作り方です。@supabase/ssrのcreateBrowserClient/createServerClient、cookieのgetAll/setAll、middlewareのgetUser/getClaims、JWTがauth.uid()に伝わる仕組み、service_roleをクライアントで使ってはいけない理由まで、App Router前提で公式準拠の実コードで解説します。
9分 - SupabaseRLSPostgreSQLリアルタイムセキュリティ
Supabase RealtimeをRLSで認可する:Broadcast・Presence・プライベートチャンネルを安全に設計する
Supabase Realtimeの認可を、realtime.messagesテーブルへのRLSで設計する実装ガイド。private:trueとsetAuthでプライベートチャンネルを有効化し、realtime.topic()とextension(broadcast/presence)で『そのルームのメンバーだけが送受信できる』を表現、postgres_changesは対象テーブル自身のRLSを尊重する仕組み、JWT失効と再認証、(select)ラップの最適化まで、公式準拠の実コードで解説します。
10分 - SupabaseRLSPostgreSQLセキュリティアーキテクチャ設計
Supabase RLS入門:最初のポリシーを書く——有効化・GRANT・anon/authenticatedの基礎を、つまずきポイント込みで
Supabase(PostgreSQL)の行レベルセキュリティ(RLS)を、ゼロから最初のポリシーが書けるまで丁寧に解説する入門ガイド。enable row level security、SELECT/INSERT/UPDATE/DELETEポリシー、USING/WITH CHECK、GRANTとRLSの2層モデル、anon/authenticated/service_role、初心者が必ずハマる5つの罠まで、公式準拠の実コードで。
11分 - SupabaseRLSPostgreSQLパフォーマンスB2B SaaS
Supabase RLSのパフォーマンス最適化:遅いポリシーを EXPLAIN で測り、(select)ラップ・索引・TO・JWTで100倍速くする
Supabase(PostgreSQL)の行レベルセキュリティ(RLS)は正しく書いても遅くなる。auth.uid()の(select)ラップでper-row評価をInitPlanに畳む、ポリシー列へ索引を張る、TOでロールを絞る、JOINを集合参照に書き換える、security definer関数とJWTクレームでルックアップを消す——公式ベンチマーク準拠の6つの最適化を、EXPLAIN ANALYZEの計測手順つきで実コード解説します。
16分 - SupabaseRLSPostgreSQLセキュリティアーキテクチャ設計
Supabase RLSでRBAC(ロールベースアクセス制御):custom claims・authorize()関数・app_metadataで役割と権限を設計する
Supabase(PostgreSQL)でRBACをRLSに統合する公式パターンを実装ガイド化。app_role/app_permission列挙とuser_roles/role_permissionsテーブル、custom_access_token_hookでJWTにrole claimを載せる、security definerなauthorize()関数で権限を判定、RLSポリシーからauthorize()を呼ぶ、ロール変更後のトークン更新とapp_metadata vs user_metadataの安全な使い分けまで、公式準拠の実コードで解説します。
10分 - SupabaseRLSPostgreSQLセキュリティテスト
Supabase RLSが効かない・空が返る・INSERTが弾かれる:原因別トラブルシューティング完全ガイド
Supabase(PostgreSQL)の行レベルセキュリティ(RLS)でよく遭遇する3大症状——『SELECTが空で返る』『new row violates row-level security policyでINSERTが弾かれる』『RLSが効かずデータが漏れる』——を、原因の切り分けフローと診断SQL(pg_policies・relrowsecurity・auth.uid()・set local role)で体系的にデバッグします。公式準拠で、推測ではなく証拠で直す手順。
10分 - SupabaseRLSPostgreSQLセキュリティNext.js
Supabase StorageをRLSで守る:バケット・ユーザー別フォルダ・署名URLでファイルのアクセス制御を設計する
Supabase Storageのアクセス制御を、storage.objectsへのRLSポリシーで設計する実装ガイド。ポリシーが無ければアップロード不可(デフォルト拒否)、bucket_idとstorage.foldername(name)による『uidフォルダ=自分のファイルだけ』パターン、公開/非公開バケットと署名URL、file_size_limit/MIME制限の多層防御、Next.jsからの安全なアップロードまで、公式準拠の実コードで解説します。
10分 - TypeScriptNext.jsPostgreSQLRAGSupabase
pgvector × TypeScript × Drizzle ORM × Next.js で作る型安全なベクトル検索(Server Actions・Zod境界検証)
TypeScript / Next.js から pgvector を型安全に扱う実装ガイド。Drizzle ORM の vector 列と HNSW インデックスのスキーマ定義、拡張の有効化(drizzle-kit は生成しないので手動マイグレーション)、cosineDistance による kNN クエリ、Server Action での Zod 境界検証と埋め込み生成、SQLインジェクション安全性、アクセシブルな検索UIまでを実コードで解説します。
11分 - TypeScriptDrizzlePostgreSQL型安全アーキテクチャ設計
Drizzle ORM 本番運用ガイド:スキーマから型を生成し、マイグレーション・トランザクション・Edge までを型安全に固める
Drizzle ORM(TypeScript)を本番運用する実装ガイド。スキーマ・コードからの型推論($inferSelect/$inferInsert)、SQLライクなクエリビルダとリレーショナルクエリ、drizzle-kitのマイグレーション、トランザクション、prepared statement、Edge互換、そしてPrismaとの使い分けを、すべて実コードで解説します。
23分 - マルチテナントB2B SaaSセキュリティアーキテクチャ設計認可
マルチテナント SaaS のデータ分離と認可を設計する:テナント境界・PII保護・BOLA対策を『信頼境界はサーバー』で固める
B2Bマルチテナント SaaS で他テナントのデータ・PIIを絶対に漏らさないためのデータ分離と認可設計ガイド。silo/pool/bridge の分離戦略、BOLA/IDOR・ID列挙対策、二層スキーマでのPIIスコープ、ルーター層に一元化した業種/ロール認可、そして分離を証明するテスト/ペネトレまでを、AWS公式とOWASPに忠実に実コードで解説します。
29分 - SupabasePostgreSQLRLSアーキテクチャ設計B2B SaaS
Supabase RLS本番設計ガイド:マルチテナントSaaSの認可をPostgreSQLに寄せる実践パターン
Supabaseの行レベルセキュリティ(RLS)でマルチテナントSaaSの認可をゼロトラストにDB層へ寄せる本番設計ガイド。anon/authenticated/service_role、USING/WITH CHECK、tenant_id分離、(select auth.uid())のパフォーマンス最適化、pgTAPテストまで、公式準拠の再利用可能パターンを実コードで解説します。
22分 - SupabaseRLSPostgreSQLセキュリティテスト
Supabase RLS をテストで守る:pgTAP で『許可』と『拒否』の両方を検証し、CIで認可の退行を止める
Supabase/PostgreSQLの行レベルセキュリティ(RLS)を本番で信頼するためのテスト戦略。pgTAPでrequest.jwt.claimsを切り替えて許可と拒否の両方を検証し、SECURITY DEFINERとsearch_pathの落とし穴、RLSカバレッジのCIゲート、マイグレーション安全性(squawk)までを実コードで解説します。RLSは書いて終わりではなく、テストして初めて本番で信頼できます。
27分 - アーキテクチャ設計TypeScriptPostgreSQLSupabaseReact Native
クライアントを信じない設計:オフライン同時編集の試合記録アプリで、整合性と認可をPostgreSQLに寄せる
電波の悪い球場で複数人が同じ試合を同時にスコアリングする——その整合性と多層的な認可を、WebSocketブロードキャストやクライアント側の出し分けに頼らず、決定的な冪等性キーとPostgreSQLの行レベルセキュリティ(RLS)でDB層に寄せた実装を、Supabase/Expo/Next.jsモノレポの実コードとともに解説します。
20分