ログインしているユーザーが他のユーザーの行を読み取れる場合、データベースはアプリが適切に動作することを信頼しています。私は行レベルのセキュリティポリシーとロールを使用して、このルールをPostgreSQL自体に移動し、あるユーザーが別のユーザーのデータにアクセスできないことをテストで証明します。
PostgreSQLの行レベルセキュリティを設定し、各ユーザーが自分のデータのみを参照できるようにします(Supabaseを含む)。
最大5テーブルの行レベルセキュリティレビュー。各ギャップはクエリで示されます。
- 最大5テーブルのレビュー
- 書面によるレポート
- クエリ例
最大10テーブルに対するポリシーとロール。ルールが有効であることを証明するテスト付き。
- 最大10テーブルに対するポリシー
- 書面によるレポート
- クエリ例
最大25テーブル、データベース内のプラン制限、CIでのマイグレーションとテスト。
- 最大25テーブル、プラン制限、CI
- 書面によるレポート
- クエリ例
カスタムオファーをリクエストする
購入前のご質問をお問い合わせください
質問をするにはログインしてください
プラットフォームのスパムを減らすため、販売前メッセージはログイン済みユーザーのみが送信できます。
無料アカウントを作成するか、ログインしてこの Zinner に直接メッセージを送信してください。
ログイン / 登録一目でわかる
このサービスについての重要な詳細情報です。Zinn Hubによって生成されました。売り手によるものではありません。
価値ポジション
強制レイヤー
サポートされているプラットフォーム
実績
配信形式
受け取るもの
完全な説明
ユーザーアカウント、有料プラン、または1つのデータベースに複数のチームを持つアプリは、誰がどの行を見ることができるかを決定する必要があります。そのルールがアプリコードのみに存在する場合、誰かが別の方法でデータにアクセスしたときに失敗します。例えば、誰かが保護を忘れた新しいエンドポイント、同じデータベース上の2番目のアプリ、またはSupabaseがテーブル用に生成するAPIなどです。行レベルセキュリティは、データがある場所にルールを配置します。
私はNDAの下でサブスクリプション製品でこれを実行しました。テーブルに行レベルのセキュリティポリシーを設定し、各サブスクリプションティアに個別のデータベースロールを設定しました。これにより、プランに含まれるものがPostgreSQLによって強制され、誰かが忘れる可能性のあるチェックによってではなくなります。
Starterでは、最大5つのテーブルが持つ、または欠いているポリシーをレビューし、各ギャップを示すクエリ例とともに、ギャップの書面リストを送信します。Standardでは、最大10のテーブルに対するポリシーを作成または修正し、アプリが必要とするロールを設定し、それらをマイグレーションファイルとして提供し、ユーザーAがユーザーBの行を読み書きしようとして失敗するテストを追加します。Advancedでは、最大25のテーブルをカバーし、データベースで強制されるプランまたはティアの制限を追加し、CIでテストを実行します。
Supabaseでは、同じPostgreSQL機能が適用され、ポリシー内でauth.uid()とJWTクレームが使用されます。プレーンなPostgreSQLでは、ポリシーはバックエンドが各リクエストに対して設定するセッション設定から現在のユーザーを読み取ります。
通話はありません。すべてのパッケージには、誰が何を見ることができるかについての平易な言葉のメモが含まれています。StandardおよびAdvancedでは、ポリシーもテストとともにリポジトリにマイグレーションとして提供されます。納品後14日間は、合意したとおりに動作しないものがあれば、無料で修正します。
プロジェクト完了までのステップ
1. データのマッピング - テーブル、各行の所有者、誰がそれを読み書きすべきか(所有者、チームメンバー、管理者、各プラン)をリストアップします。
2. 既存のもののレビュー - 現在のポリシー、権限、ロールをそのマップと照合し、見つかったすべてのギャップをそれを示すクエリとともに書き留めます。
3. ポリシーとロール - テーブルごと、アクションごとにポリシーを作成し、プランやチームのロールを設定し、レビュー可能なマイグレーションファイルとして提供します。
4. 証明 - テストは異なるユーザーとしてログインし、互いのデータを読み書きしようとします。禁止されたアクションはすべて失敗し、許可されたアクションはすべて機能する必要があります。
5. 引き渡し - 誰が何を見ることができるか、マイグレーション、新しいテーブルが登場したときにポリシーを追加する方法についての平易な言葉の短いメモ。
Zinner クオリティ保証
すべての Zinner はプラットフォームに参加する前に審査・承認されます。
すべてのサービスは、当社の品質保証コミットメントによってサポートされています。
納品された作業を承認するまで、お客様の支払いは保護されます。
パッケージを比較
| 機能 | スターター | スタンダード | 高度な |
|---|---|---|---|
| 納期 | 2 日 | 5 日 | 10 日 |
| リビジョン | 1 | 2 | 3 |
| 範囲 | 最大5テーブルのレビュー | 最大10テーブルに対するポリシー | 最大25テーブル、プラン制限、CI |
| 書面による報告 | ✓ | ✓ | ✓ |
| クエリ例 | ✓ | ✓ | ✓ |
サービス詳細
よくある質問
アプリのチェックは、あなたが覚えているパスを保護します。行レベルセキュリティは、後で追加されたエンドポイントやSupabaseのAPIへの直接呼び出しを含む、アプリのデータベースロールの下で実行されるすべてのクエリをカバーします。スーパーユーザー、テーブル所有者、Supabaseのサービスキーは意図的にこれをバイパスするため、これらの資格情報はサーバーに残ります。ほとんどのチームは両方の種類のチェックを維持しています。
ポリシーが遅い関数を呼び出したり、インデックスを見逃したりすると、遅くなる可能性があります。私はそれを念頭に置いてポリシーを作成し、レビューではインデックスが必要なポリシーをリストアップします。
いいえ。データのないスキーマでポリシーを作成し、テストするのに十分です。テストは私が作成したシードデータで実行されます。
いいえ。この形式の行レベルセキュリティはPostgreSQLの機能であり、このサービスはPostgreSQLを中心に構築されています。
顧客レビュー
このZinnについてお客様の声をご覧ください







