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 とフィールドレベルセキュリティを組み合わせて使用します:| データ型 | アプローチ | 例 |
|---|---|---|
| ユーザー編集可能 | Entity RLS: 所有者のみ | created_by チェック付き UserProfile |
| 機密フィールド | フィールドレベル RLS | HR ロールチェック付き Salary フィールド |
| マルチロールアクセス | user_condition と $or | Admin OR Manager アクセス |
| 条件付きアクセス | フィールド演算子 | data フィールドで $in, $ne |
| 公開コンテンツ | Entity RLS: read: true | PublicPost |
| プライベートコンテンツ | Entity RLS: 所有者のみ | PrivateNote |
各アプローチをいつ使うか
| 要件 | アプローチ |
|---|---|
| 単一条件 (owner, admin, department) | JSON Schema RLS |
| 複数の OR/AND 条件 | $or/$and を使った JSON Schema RLS |
$in/$ne/等でのフィールド値チェック | data.* フィールド用の JSON Schema RLS |
| フィールドレベルアクセス制御 | JSON Schema FLS (フィールドレベル rls) |
複雑な比較演算子 ($gt, $lt) | バックエンド関数 |
| 非常に複雑なビジネスロジック | バックエンド関数 |
一般的なロールパターン
| ロール | 典型的なアクセス |
|---|---|
admin | すべてのレコードへのフルアクセス |
moderator | 読み取り/更新アクセス、限定削除 |
manager | 部門スコープのアクセス |
user | 自分のレコードのみ |
サポートされる演算子のまとめ
| 演算子 | サポート | 注意事項 |
|---|---|---|
$or | はい | 複数条件を組み合わせ |
$and | はい | すべての条件が一致する必要 |
$nor | はい | いずれの条件も一致しない |
$in | はい | data.* フィールドのみ |
$nin | はい | data.* フィールドのみ |
$ne | はい | data.* フィールドのみ |
$all | はい | data.* フィールドのみ |
$gt, $lt, $gte, $lte | いいえ | バックエンド関数を使用 |
$regex | いいえ | バックエンド関数を使用 |
制限のまとめ
| 未サポート | 代替 |
|---|---|
user_condition の演算子 | ユーザーチェックには等価性のみ使用 |
比較演算子 ($gt, $lt) | バックエンド関数 |
正規表現マッチング ($regex) | バックエンド関数 |
| エンティティ間のリレーション | バックエンド関数 |
このページは AI を使用して翻訳されました。最も正確で最新の情報については、英語版 を参照してください。

