Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Anonymer Datenzugriff ermöglicht es einer Fabric-App, ausgewählte Datenoperationen Nutzern bereitzustellen, die nicht angemeldet sind. Sie steuern diesen Zugriff auf Fabric-Tenant-Ebene und in jedem Datenmodell. Anonymer Zugriff ist eine Autorisierungsoption, kein Ersatz für die Authentifizierung. Die gleiche App kann einigen Entitäten öffentlichen Zugang gewähren, während Nutzer sich für andere Entitäten oder Vorgänge anmelden müssen.
Important
Jeder, der die App-URL erreichen kann, kann die der anonymous-Rolle zugewiesenen Operationen verwenden. Geben Sie in dieser Rolle keine persönlichen, vertraulichen, finanziellen oder internen Geschäftsdaten preis.
Anwendungsfälle
Betrachten Sie anonymen Datenzugriff, wenn eine App begrenzte Funktionalität ohne Anmeldepflicht bereitstellen muss.
| Scenario | Beispielzugang | Empfohlener Umfang |
|---|---|---|
| Öffentliche Referenzdaten | Sehen Sie Produktkataloge, Zeitpläne oder öffentliche Datensätze an | read |
| Feedbacksammlung | Kommentare oder Umfrageantworten einreichen | create |
Anonymer Zugriff ist nicht angemessen, wenn eine App den Nutzer identifizieren, Besitzverhältnisse durchsetzen oder den Zugang aufgrund von Identitätsansprüchen gewähren muss. Verwenden Sie authentifizierte Rollen für diese Szenarien.
Wie anonymer Zugang funktioniert
Der anonyme Datenzugriff verwendet unabhängige Kontrollen:
- Mietereinstellung: Ein Fabric-Tenant-Administrator gewährt der Organisation oder ausgewählten Sicherheitsgruppen anonymen Datenzugriff.
-
Datenmodellrolle: Eine Entität nutzt die
anonymousRolle, um die Operationen zu definieren, die nicht authentifizierte Benutzer ausführen können.
Die Mandanteneinstellung ist die organisationsweite Grenze. Die App-Einstellung ermöglicht anonymen Anfragen den Zugriff auf den Datendienst der App. Die Entitätsrolle bestimmt, auf welche Daten und Operationen diese Anfragen zugreifen können. Das Aktivieren von nur einer oder zwei dieser Kontrollen gewährt keinen anonymen Zugriff.
Aktivieren Sie die Mandanteneinstellung
Ein Fabric-Tenant-Administrator muss anonymen Datenzugriff aktivieren, bevor App-Entwickler diesen nutzen können. Die Einstellung ist standardmäßig deaktiviert.
Melden Sie sich beim Fabric-Verwaltungsportal an.
Wählen Sie Mandanteneinstellungen aus.
Unter Fabric-Apps (Vorschau) finden Sie anonymen Datenzugriff.
Schalten Sie auf Aktiviert um.
Wenden Sie die Einstellung auf die gesamte Organisation oder auf bestimmte Sicherheitsgruppen an.
Wählen Sie Anwenden aus.
Änderungen können ein paar Minuten dauern, bis sie wirksam werden. Wenn du die Einstellung auf Sicherheitsgruppen beschränkest, stelle sicher, dass der App-Entwickler oder App-Besitzer in einer erlaubten Gruppe enthalten ist.
Definieren Sie anonymen Zugriff in einem Datenmodell
Verwenden Sie den @roleDecorator auf einer Entität und geben Sie anonymous als Rollennamen an. Das zweite Argument definiert die erlaubten Datenoperationen: create, read, update oder delete.
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
roleName |
string |
Der Rollenname, z. B. authenticated oder eine benutzerdefinierte Anwendungsrolle |
actions |
string \| string[] |
Einzelne Aktion oder Matrix: create, , read, update, deleteoder * für alle |
options |
object |
Optionales Objekt mit check, includeund exclude Eigenschaften |
Das folgende Beispiel ermöglicht es unauthentifizierten Nutzern, öffentliche Ankündigungen zu lesen:
Füge diese Entitäten dem in rayfin/rayfin.yml konfigurierten Datendienst hinzu. In der Standard-Universal-App aktivieren Sie Daten und verwenden Sie packages/data/src/, mit passenden Verträgen in packages/shared/src/. Eine flache Vorlage kann stattdessen verwendet werden rayfin/data/ . Siehe Definieren von Datenmodellen.
import { entity, role, uuid, text } from '@microsoft/rayfin-core';
@entity()
@role('anonymous', 'read')
export class Announcement {
@uuid() id!: string;
@text({ max: 200 }) title!: string;
@text({ max: 4000 }) content!: string;
}
Die Rolle anonymous verwendet keine Identitätsansprüche, da keine angemeldete Identität verfügbar ist. Definiere die engste Menge an Operationen, die dein Szenario unterstützen.
Erlauben Sie Nutzern, Daten einzureichen
Für ein Feedback-Formular create Zugriff gewähren, ohne read, update oder delete Zugriff zu gewähren:
import { entity, role, uuid, text } from '@microsoft/rayfin-core';
@entity()
@role('anonymous', 'create')
export class Feedback {
@uuid() id!: string;
@text({ max: 2000 }) comment!: string;
}
Dieses Modell erlaubt es Nutzern, Feedback einzureichen, aber sie können eingereichte Einträge nicht einsehen oder ändern.
Mehrere Vorgänge zulassen
Geben Sie ein Array durch, wenn ein Szenario mehr als eine Operation erfordert:
import { boolean, entity, role, text, uuid } from '@microsoft/rayfin-core';
@entity()
@role('anonymous', ['create', 'read', 'update'])
export class SharedTodo {
@uuid() id!: string;
@text({ max: 200 }) title!: string;
@boolean({ default: false }) completed!: boolean;
}
Jeder, der Zugriff auf diese App hat, kann jede gemeinsame Aufgabe erstellen, ansehen und aktualisieren. Sie können To-dos nicht löschen, weil delete nicht enthalten ist. Verwenden Sie solche weitreichenden Berechtigungen nur für öffentliche oder temporäre Daten, bei denen Nutzer den Zugriff teilen sollen.
Anonyme und authentifizierte Rollen kombinieren
Wenden Sie beide Rollen auf eine Entität an, wenn nicht angemeldete und angemeldete Nutzer unterschiedliche Berechtigungen benötigen. Zum Beispiel kann jeder einen Blogbeitrag lesen, aber nur der angemeldete Besitzer kann ihn ändern:
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({ max: 200 }) title!: string;
@text({ max: 4000 }) content!: string;
@text({ max: 255 }) createdBy!: string;
}
Die anonyme Rolle erlaubt öffentliche Lesezugriffe, ohne die Identitäts-Claims zu prüfen. Die authentifizierte Rolle nutzt die Claims des angemeldeten Nutzers, um Änderungen auf Inhalte zu beschränken, die der Nutzer besitzt.
Sicherheitsleitfaden
- Gewähren Sie den mindestens erforderlichen Zugriff. Bevorzugt
readodercreateallein. Gewähren Sieupdateoderdeletenur, wenn der öffentliche Workflow es verlangt. - Beschränke sichtbare Felder. Verwenden Sie
includeoderexcludeOptionen, um den Zugriff auf Felder zu verhindern, die anonyme Nutzer nicht benötigen. Weitere Informationen finden Sie unter Datenberechtigungen definieren. - Verlasse dich beim Schutz nicht auf die Benutzeroberfläche der App. Berechtigungen müssen im Datenmodell definiert werden, da Anrufer Anfragen senden können, ohne Ihr Frontend zu verwenden.
- Planen Sie für nicht vertrauenswürdige Eingaben. Validieren Sie eingereichte Daten und legen Sie öffentliche Schreibvorgänge gegen Spam, Automatisierung und unerwarteten Traffic aus.
- Abgelehnte Testvorgänge Stellen Sie sicher, dass in der Rolle ausgelassene Operationen für Benutzer ohne Sitzung abgelehnt werden.
Deaktivieren Sie den anonymen Zugriff
Um den öffentlichen Zugang aus einer App zu entfernen:
- Entferne die
anonymousRolle aus jedem Datenmodell. - Deploye die App neu, indem du
npx rayfin upausführst.
Ein Tenant-Administrator kann außerdem die Einstellung deaktivieren, um anonymen Datenzugriff für alle Anwendungen innerhalb eines Tenants zu blockieren und den Zugriff auf ausgewählte Sicherheitsgruppen zu beschränken.