> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# セキュリティ

> 行レベルおよびフィールドレベルのセキュリティルールで、エンティティデータへのアクセスを制御します。

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      開発者向けドキュメントを表示しています
    </div>

    <div className="dev-docs-banner-text">
      このドキュメントは、Base44 開発者プラットフォームで作業する開発者向けです。アプリエディタを使用したアプリデータの管理については、<a href="/Building-your-app/Managing-your-app-data">アプリデータの管理</a>を参照してください。
    </div>
  </div>
</div>

エンティティは 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.*}}` - 定義した追加のユーザーフィールド

例:

```json theme={null}
{"created_by": "{{user.email}}"}
{"data.department": "{{user.data.department}}"}
{"data.status": "approved"}
```

**2. ユーザー条件チェック**

`user_condition` を使用してユーザープロパティを直接チェックします。

チェックできるユーザーフィールド:

* `email` - ユーザーのメール
* `id` - ユーザーの ID
* `role` - ユーザーのロール
* `data.*` - カスタムユーザーフィールド

例:

```json theme={null}
{"user_condition": {"role": "admin"}}
{"user_condition": {"data.level": "senior"}}
```

**3. 複合条件**

演算子を使用して複数の条件を組み合わせます。

サポートされる演算子: `$or`、`$and`、`$nor`、`$in`、`$nin`、`$all`

例:

```json theme={null}
{
  "$or": [
    {"created_by": "{{user.email}}"},
    {"user_condition": {"role": "admin"}}
  ]
}
```

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

エンティティレベルで `rls` を追加します:

```json theme={null}
{
  "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` を追加します:

```json theme={null}
{
  "properties": {
    "salary": {
      "type": "number",
      "rls": {
        "read": {"user_condition": {"role": "admin"}},
        "write": {"user_condition": {"role": "admin"}}
      }
    }
  }
}
```

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

RLS と FLS の両方を含むエンティティスキーマ:

```json theme={null}
{
  "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`](/developers/references/cli/commands/entities-push) を使用してデプロイします。プロジェクト全体をデプロイするために [`deploy`](/developers/references/cli/commands/deploy) コマンドを実行すると、セキュリティルールも自動的にデプロイされます。

## 関連項目

* [Entities Overview](/developers/backend/resources/entities/overview): データベーススキーマ構成について学ぶ
* [Entity Schemas](/developers/backend/resources/entities/entity-schemas): エンティティ構造を定義
* [User Schema](/developers/backend/resources/entities/user-schema): ユーザー認証のための特別な組み込みエンティティ
* [Project Structure](/developers/backend/overview/project-structure): エンティティスキーマがプロジェクトにどう適合するか

<Note>このページは AI を使用して翻訳されました。最も正確で最新の情報については、[英語版](/) を参照してください。 </Note>
