Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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:
- Impostazione dell'inquilino: Un amministratore del tenant Fabric concede accesso anonimo ai dati all'organizzazione o a gruppi di sicurezza selezionati.
-
Ruolo nel modello dati: Un'entità utilizza il
anonymousruolo 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.
Accedere al portale di amministrazione di Fabric.
Seleziona Impostazioni del locatario.
Sotto le app Fabric (anteprima), trova accesso ai dati anonimo.
Imposta l'opzione su Abilitato.
Applica l'impostazione all'intera organizzazione o a gruppi di sicurezza specifici.
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
readocreateda solo. Sovvenzionaupdateodeletesolo quando il flusso di lavoro pubblico lo richiede. - Limita i campi esposti. Usa
includele opzioniexcludeper 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:
- Rimuovi il
anonymousruolo da ciascun modello di dati. - 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.