メインコンテンツへスキップ
開発者向けドキュメントを表示しています
このドキュメントは、Base44 開発者プラットフォームで作業する開発者向けです。アプリエディタを使用したアプリデータの管理については、アプリデータの管理を参照してください。
エンティティは 2 つのレベルのセキュリティをサポートします:
  • 行レベルセキュリティ (RLS): ユーザーがアクセスできるレコードを制御します。
  • フィールドレベルセキュリティ (FLS): レコード内でユーザーがアクセスできるフィールドを制御します。

権限タイプ

各セキュリティレベルには、設定できる異なる権限があります。各権限に対して、アクションを実行できるユーザーを定義します。

行レベルセキュリティ (RLS)

  • create - 新しいレコードを追加
  • read - レコードを表示
  • update - レコードを変更
  • delete - レコードを削除

フィールドレベルセキュリティ (FLS)

  • read - フィールドを表示
  • write - フィールドを作成または変更

権限値

各権限は次の値のいずれかを受け入れます:
  • true - すべてのユーザーに許可
  • false - すべてのユーザーをブロック
  • {<condition>} - 条件に一致するユーザーを許可

条件構文

権限値として {<condition>} を使用する場合、ユーザー属性またはロールをチェックするルールを定義できます。 1. エンティティ対ユーザーの比較 レコードフィールドを現在のユーザーの値と比較します。 参照できるエンティティフィールド:
  • created_by - レコードを作成したユーザーのメール
  • created_by_id - レコードを作成したユーザーの ID
  • entity_name - エンティティタイプの名前
  • app_id - アプリ ID
  • environment - prod または dev
  • is_sample - サンプルデータかどうか
  • is_deleted - ソフト削除フラグ
  • deleted_date - 削除された日時
  • data.* - エンティティスキーマの properties からの任意のフィールド
ユーザー値のテンプレート変数:
  • {{user.email}} - ユーザーのメール
  • {{user.id}} - ユーザーの ID
  • {{user.role}} - ユーザーのロール
  • {{user.data.*}} - 定義した追加のユーザーフィールド
例:
{"created_by": "{{user.email}}"}
{"data.department": "{{user.data.department}}"}
{"data.status": "approved"}
2. ユーザー条件チェック user_condition を使用してユーザープロパティを直接チェックします。 チェックできるユーザーフィールド:
  • email - ユーザーのメール
  • id - ユーザーの ID
  • role - ユーザーのロール
  • data.* - カスタムユーザーフィールド
例:
{"user_condition": {"role": "admin"}}
{"user_condition": {"data.level": "senior"}}
3. 複合条件 演算子を使用して複数の条件を組み合わせます。 サポートされる演算子: $or$and$nor$in$nin$all 例:
{
  "$or": [
    {"created_by": "{{user.email}}"},
    {"user_condition": {"role": "admin"}}
  ]
}

行レベルセキュリティ (RLS) の例

エンティティレベルで rls を追加します:
{
  "name": "task",
  "type": "object",
  "properties": {...},
  "rls": {
    "create": true,
    "read": {"created_by": "{{user.email}}"},
    "update": {"created_by": "{{user.email}}"},
    "delete": {"user_condition": {"role": "admin"}}
  }
}

フィールドレベルセキュリティ (FLS) の例

個々のフィールドプロパティに rls を追加します:
{
  "properties": {
    "salary": {
      "type": "number",
      "rls": {
        "read": {"user_condition": {"role": "admin"}},
        "write": {"user_condition": {"role": "admin"}}
      }
    }
  }
}

セキュリティを含む完全な例

RLS と FLS の両方を含むエンティティスキーマ:
{
  "name": "Task",
  "type": "object",
  "title": "Task",
  "description": "A task item with priority, due date, and completion status",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "description": {
      "type": "string",
      "maxLength": 1000
    },
    "priority": {
      "type": "string",
      "enum": ["low", "medium", "high"],
      "default": "medium"
    },
    "completed": {
      "type": "boolean",
      "default": false
    },
    "due_date": {
      "type": "string",
      "format": "date"
    },
    "tags": {
      "type": "array",
      "items": {"type": "string"}
    },
    "internal_notes": {
      "type": "string",
      "rls": {
        "read": {"user_condition": {"role": "admin"}},
        "write": {"user_condition": {"role": "admin"}}
      }
    }
  },
  "required": ["title"],
  "rls": {
    "create": true,
    "read": {"created_by": "{{user.email}}"},
    "update": {"created_by": "{{user.email}}"},
    "delete": {"created_by": "{{user.email}}"}
  }
}

セキュリティルールのデプロイ

セキュリティルールはエンティティスキーマの一部です。セキュリティルールを追加または更新した後、entities push を使用してデプロイします。プロジェクト全体をデプロイするために deploy コマンドを実行すると、セキュリティルールも自動的にデプロイされます。

関連項目

  • Entities Overview: データベーススキーマ構成について学ぶ
  • Entity Schemas: エンティティ構造を定義
  • User Schema: ユーザー認証のための特別な組み込みエンティティ
  • Project Structure: エンティティスキーマがプロジェクトにどう適合するか
このページは AI を使用して翻訳されました。最も正確で最新の情報については、英語版 を参照してください。