Accesso anonimo ai dati nelle app Fabric

L'accesso anonimo ai dati permette a un'app Fabric di esporre alcune operazioni dati a utenti non connessi. Controlli questo accesso a livello di tenant Fabric e in ogni modello di dati. L'accesso anonimo è un'opzione di autorizzazione, non un sostituto dell'autenticazione. La stessa app può fornire accesso pubblico ad alcune entità richiedendo agli utenti di accedere ad altre entità o operazioni.

Importante

Chiunque riesca a raggiungere l'URL dell'app può utilizzare le operazioni assegnate al anonymous ruolo. Non esporre dati personali, riservati, finanziari o interni dell'azienda attraverso questo ruolo.

Situazioni di utilizzo

Considera l'accesso anonimo ai dati quando un'app deve fornire funzionalità limitate senza l'obbligo di accedere.

Scenario Accesso di esempio Ambito consigliato
Dati di riferimento pubblici Visualizza cataloghi di prodotti, calendari o dataset pubblici read
Raccolta di feedback Invia commenti o risposte ai sondaggi create

L'accesso anonimo non è appropriato quando un'app deve identificare l'utente, far rispettare la proprietà o fornire accesso basandosi su richieste di identità. Usa ruoli autenticati per questi scenari.

Come funziona l'accesso anonimo

L'accesso anonimo ai dati utilizza controlli indipendenti:

  1. Impostazione dell'inquilino: Un amministratore del tenant Fabric concede accesso anonimo ai dati all'organizzazione o a gruppi di sicurezza selezionati.
  2. Ruolo nel modello dati: Un'entità utilizza il anonymous ruolo per definire le operazioni che gli utenti non autenticati possono eseguire.

L'impostazione del tenant rappresenta il confine a livello organizzativo. L'impostazione dell'app consente a richieste anonime di raggiungere il servizio dati dell'app. Il ruolo dell'entità determina quali dati e operazioni queste richieste possono accedere. Abilitare solo uno o due di questi controlli non concede l'accesso anonimo.

Abilita l'impostazione del tenant

Un amministratore del tenant Fabric deve abilitare l'accesso anonimo ai dati prima che gli sviluppatori di app possano utilizzarlo. L'impostazione è disabilitata per impostazione predefinita.

  1. Accedere al portale di amministrazione di Fabric.

  2. Seleziona Impostazioni del locatario.

  3. Sotto le app Fabric (anteprima), trova accesso ai dati anonimo.

    Screenshot dell'impostazione di accesso ai dati Anonimo nel portale di amministrazione Fabric.

  4. Imposta l'opzione su Abilitato.

  5. Applica l'impostazione all'intera organizzazione o a gruppi di sicurezza specifici.

  6. Seleziona Applica.

I cambiamenti potrebbero richiedere qualche minuto per fare effetto. Quando limiti l'impostazione ai gruppi di sicurezza, conferma che lo sviluppatore o il proprietario dell'app sia incluso in un gruppo consentito.

Definisci l'accesso anonimo in un modello dati

Usa il @role decorator su un'entità e specifica anonymous come nome del ruolo. Il secondo argomento definisce le operazioni dati consentite: create, read, update, o delete.

Parameters

Parametro Tipo Descrizione
roleName string Nome del ruolo, ad esempio authenticated o ruolo applicazione personalizzato
actions string \| string[] Singola azione o matrice: create, read, update, deleteo * per tutti
options object Oggetto facoltativo con proprietà check, include e exclude

Il seguente esempio permette agli utenti non autenticati di leggere annunci pubblici:

import { entity, role, uuid, text } from '@microsoft/rayfin-core';

@entity()
@role('anonymous', 'read')
export class Announcement {
  @uuid() id!: string;
  @text() title!: string;
  @text() content!: string;
}

Il anonymous ruolo non utilizza le richieste di identità perché non è disponibile un'identità registrata. Definisci il set più ristretto di operazioni che supporta il tuo scenario.

Consentire agli utenti di inviare dati

Per un modulo di feedback, concedere create accesso senza concedere read, update, oppure delete accesso:

import { entity, role, uuid, text } from '@microsoft/rayfin-core';

@entity()
@role('anonymous', 'create')
export class Feedback {
  @uuid() id!: string;
  @text() comment!: string;
}

Questo modello permette agli utenti di inviare feedback, ma non consente di visualizzare o modificare le voci inviate.

Consentire operazioni multiple

Passa un array quando uno scenario richiede più di un'operazione:

import { boolean, entity, role, text, uuid } from '@microsoft/rayfin-core';

@entity()
@role('anonymous', ['create', 'read', 'update'])
export class SharedTodo {
  @uuid() id!: string;
  @text() title!: string;
  @boolean({ default: false }) completed!: boolean;
}

Chiunque abbia accesso a questa app può creare, visualizzare e aggiornare ogni attività condivisa. Non possono cancellare i compiti perché delete non è incluso. Usa permessi ampi come questi solo per dati pubblici o temporanei in cui gli utenti sono tenuti a condividere l'accesso.

Combina ruoli anonimi e autenticati

Applica entrambi i ruoli a un'entità quando utenti pubblici e lognessi richiedono permessi diversi. Ad esempio, chiunque può leggere un post sul blog, ma solo il proprietario connesso può modificarlo:

import { entity, role, uuid, text } from '@microsoft/rayfin-core';

@entity()
@role('anonymous', 'read')
@role('authenticated', ['create', 'update', 'delete'], {
  policy: (claims, item) => claims.sub.eq(item.createdBy),
})
export class BlogPost {
  @uuid() id!: string;
  @text() title!: string;
  @text() content!: string;
  @text() createdBy!: string;
}

Il ruolo anonimo permette letture pubbliche senza valutare le rivendicazioni d'identità. Il ruolo autenticato utilizza le affermazioni dell'utente connesso per limitare le modifiche ai contenuti di proprietà dell'utente.

Linee guida per la sicurezza

  • Concedi l'accesso minimo richiesto. Preferisci read o create da solo. Sovvenziona update o delete solo quando il flusso di lavoro pubblico lo richiede.
  • Limita i campi esposti. Usa include le opzioni exclude per impedire l'accesso a campi che gli utenti anonimi non hanno bisogno. Per ulteriori informazioni, vedi Definire i permessi dati.
  • Non affidarti all'interfaccia dell'app per la protezione. I permessi devono essere definiti sul modello dati perché i chiamanti possono inviare richieste senza usare il frontend.
  • Pianifica input non affidabili. Validare i dati inviati e progettare operazioni pubbliche di scrittura per spam, automazione e traffico imprevisto.
  • Test negato operazioni. Conferma che le operazioni omesse dal ruolo siano respinte per gli utenti senza sessione.

Disabilita l'accesso anonimo

Per rimuovere l'accesso pubblico da un'app:

  1. Rimuovi il anonymous ruolo da ciascun modello di dati.
  2. Ridistribuisci l'app eseguendo npx rayfin up.

Un amministratore del tenant può anche disabilitare l'impostazione del tenant per bloccare l'accesso anonimo ai dati di tutte le app all'interno di un tenant e limitare l'accesso a gruppi di sicurezza selezionati.