> ## 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.

# Sicurezza

> Controlla l'accesso ai dati delle tue entità con regole di sicurezza a livello di riga e di campo.

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      Stai visualizzando la documentazione per sviluppatori
    </div>

    <div className="dev-docs-banner-text">
      Questa documentazione è per sviluppatori che lavorano con la piattaforma per sviluppatori di Base44. Per informazioni sulla gestione dei dati della tua app usando l'editor, consulta <a href="/Building-your-app/Managing-your-app-data">Gestire i dati dell'app</a>.
    </div>
  </div>
</div>

Le entità supportano due livelli di sicurezza:

* **Sicurezza a livello di riga (RLS)**: controlla a quali record gli utenti possono accedere.
* **Sicurezza a livello di campo (FLS)**: controlla a quali campi all'interno dei record gli utenti possono accedere.

## Tipi di permesso

Ogni livello di sicurezza ha permessi diversi che puoi impostare. Per ogni permesso, definisci chi è autorizzato a eseguire l'azione.

### Sicurezza a livello di riga (RLS)

* `create` - aggiungere nuovi record
* `read` - visualizzare i record
* `update` - modificare i record
* `delete` - rimuovere i record

### Sicurezza a livello di campo (FLS)

* `read` - visualizzare il campo
* `write` - creare o modificare il campo

## Valori dei permessi

Ogni permesso accetta uno dei seguenti valori:

* `true` - consente a tutti gli utenti
* `false` - blocca tutti gli utenti
* `{<condition>}` - consente agli utenti che corrispondono alla condizione

### Sintassi delle condizioni

Quando usi `{<condition>}` come valore di permesso, puoi definire regole che verificano attributi o ruoli dell'utente.

**1. Confronto entità-utente**

Confronta i campi del record con i valori dell'utente corrente.

Campi dell'entità che puoi referenziare:

* `created_by` - email dell'utente che ha creato il record
* `created_by_id` - ID dell'utente che ha creato il record
* `entity_name` - nome del tipo di entità
* `app_id` - ID dell'app
* `environment` - `prod` oppure `dev`
* `is_sample` - se si tratta di dati di esempio
* `is_deleted` - flag di eliminazione soft
* `deleted_date` - quando è stato eliminato
* `data.*` - qualsiasi campo dalle proprietà del tuo schema entità

Variabili template per i valori utente:

* `{{user.email}}` - email dell'utente
* `{{user.id}}` - ID dell'utente
* `{{user.role}}` - ruolo dell'utente
* `{{user.data.*}}` - campi utente aggiuntivi che definisci

Esempio:

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

**2. Verifica delle condizioni utente**

Verifica direttamente le proprietà dell'utente usando `user_condition`.

Campi utente che puoi verificare:

* `email` - email dell'utente
* `id` - ID dell'utente
* `role` - ruolo dell'utente
* `data.*` - campi utente personalizzati

Esempio:

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

**3. Condizioni complesse**

Combina più condizioni usando gli operatori.

Operatori supportati: `$or`, `$and`, `$nor`, `$in`, `$nin`, `$all`

Esempio:

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

## Esempio di sicurezza a livello di riga (RLS)

Aggiungi `rls` a livello di entità:

```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"}}
  }
}
```

## Esempio di sicurezza a livello di campo (FLS)

Aggiungi `rls` alle singole proprietà dei campi:

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

## Esempio completo con sicurezza

Ecco uno schema di entità con sia RLS che 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}}"}
  }
}
```

## Distribuire le regole di sicurezza

Le regole di sicurezza fanno parte del tuo schema di entità. Dopo aver aggiunto o aggiornato le regole di sicurezza, distribuisci usando [`entities push`](/developers/references/cli/commands/entities-push). Le regole di sicurezza vengono anche distribuite automaticamente quando esegui il comando [`deploy`](/developers/references/cli/commands/deploy) per distribuire l'intero progetto.

## Vedi anche

* [Panoramica delle entità](/developers/backend/resources/entities/overview): scopri la configurazione dello schema del database
* [Schemi delle entità](/developers/backend/resources/entities/entity-schemas): definisci la struttura delle tue entità
* [Schema utente](/developers/backend/resources/entities/user-schema): entità integrata speciale per l'autenticazione degli utenti
* [Struttura del progetto](/developers/backend/overview/project-structure): come gli schemi delle entità si inseriscono nel tuo progetto

<Note>Questa pagina è stata tradotta utilizzando l'IA. Per informazioni più accurate e aggiornate, consulta la [versione inglese](/). </Note>
