RLS の例
一般的なアプリケーションタイプ向けの実用的な行レベルセキュリティパターン。 重要: Base44 RLS がサポートするもの:- 論理演算子: 条件を組み合わせるための
$or,$and,$nor - フィールド演算子 (
data.*フィールド用):$in,$nin,$ne,$all - user_condition: 等価性のみ (演算子なし)
目次
シンプルなパターン (JSON Schema)
これらのパターンは JSON schema RLS フォーマットで動作します。Todo アプリ - 所有者のみアクセス
ユーザーは自分のタスクのみを表示および管理できます。問い合わせフォーム - 公開作成、管理者のみ読み取り
誰でも送信可能、管理者のみが送信内容を閲覧可能。ユーザープロフィール - 自己管理
ユーザーは自分のプロフィールのみアクセスできます。部門データ - 同部門アクセス
ユーザーは自分の部門のレコードのみ閲覧できます。サブスクリプション - 管理者管理、email フィールド経由でユーザーが読み取り可能
プライベートデータ - 所有者のみ
公開読み取り、認証書き込み
誰でも読み取り可能、ログイン済みユーザーのみが自分のレコードを作成/編集可能。演算子の使用
論理演算子
$or、$and、または $nor を使用して複数の条件を組み合わせます:
所有者 OR 管理者アクセス:
data.* フィールドのフィールド演算子
エンティティデータフィールドの比較には$in、$nin、$ne、$all を使用します:
タグに基づくアクセス ($in):
論理演算子とフィールド演算子の組み合わせ
フィールドレベルセキュリティの例
エンティティ内の特定フィールドへのアクセスを制御します。機密の給与フィールド
管理者のみの内部フィールド
複雑なパターン (ダッシュボード UI またはバックエンド)
一部のパターンは依然としてダッシュボード UI またはバックエンド関数を必要とする場合があります。双方向のリレーション (例: 友達関係、マッチ)
要件: リレーションのいずれかの当事者がアクセスできる必要があります。 現在は $or で可能:- エンティティ再設計: リレーションごとに 2 つのレコードを保存 (各当事者に 1 つ)
- バックエンド関数: カスタムロジックでクエリ
複雑なビジネスロジック
要件: アクセスが複雑な条件を持つ複数のエンティティフィールドに依存します。 JSON Schema の制限: 演算子が役立ちますが、非常に複雑なビジネスロジックはまだ表現が難しい場合があります。 解決策のオプション:- バックエンド関数: カスタムアクセスロジックを実装
- より単純なルールを組み合わせる: 複雑なルールをより単純なエンティティレベルおよびフィールドレベルのルールに分解
ベストプラクティス
セキュリティ戦略
エンティティレベル RLS とフィールドレベルセキュリティを組み合わせて使用します:各アプローチをいつ使うか
一般的なロールパターン
サポートされる演算子のまとめ
制限のまとめ
このページは AI を使用して翻訳されました。最も正確で最新の情報については、英語版 を参照してください。