Anonymer Datenzugriff in Fabric-Apps

Anonymer Datenzugriff ermöglicht es einer Fabric-App, ausgewählte Datenoperationen für Nutzer anzuzeigen, 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 Einheiten öffentlichen Zugang gewähren, während Nutzer sich für andere Einheiten oder Operationen anmelden müssen.

Important

Jeder, der die App-URL erreichen kann, kann die der Rolle anonymous 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, das Eigentum 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 Steuerungen:

  1. Mietereinstellung: Ein Fabric-Tenant-Administrator gewährt der Organisation oder ausgewählten Sicherheitsgruppen anonymen Datenzugriff.
  2. Rolle des Datenmodells: Eine Entität nutzt die anonymous Rolle, um die Operationen zu definieren, die nicht authentifizierte Benutzer ausführen können.

Der Mieter-Setting ist die organisationsweite Grenze. Die App-Einstellung erlaubt anonyme Anfragen, den Datendienst der App zu erreichen. Die Entitätsrolle bestimmt, auf welche Daten und Operationen diese Anfragen zugreifen können. Das Aktivieren von nur ein oder zwei dieser Kontrollen gewährt keinen anonymen Zugriff.

Aktivieren Sie die Mietereinstellung

Ein Fabric-Tenant-Administrator muss anonymen Datenzugriff aktivieren, bevor App-Entwickler ihn nutzen können. Die Einstellung ist standardmäßig deaktiviert.

  1. Melden Sie sich beim Fabric-Verwaltungsportal an.

  2. Wählen Sie Mandanteneinstellungen aus.

  3. Unter Fabric-Apps (Vorschau) finden Sie anonymen Datenzugriff.

    Screenshot der Einstellung Anonyme Datenzugriff im Fabric-Admin-Portal.

  4. Schalten Sie auf Aktiviert um.

  5. Wenden Sie die Einstellung auf die gesamte Organisation oder auf bestimmte Sicherheitsgruppen an.

  6. Wählen Sie Anwenden aus.

Änderungen können ein paar Minuten dauern, bis sie wirksam werden. Wenn du die Einstellung auf Sicherheitsgruppen beschränkest, prüfe, dass der App-Entwickler oder App-Besitzer in einer erlaubten Gruppe enthalten ist.

Definieren Sie anonymen Zugriff in einem Datenmodell

Verwenden Sie den Dekorateur @role auf einer Entität und geben Sie den Rollennamen an anonymous . 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:

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;
}

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 gewähren create Sie Zugriff, ohne read, update, oder delete Zugang:

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

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

Dieses Modell erlaubt es Nutzern, Feedback einzureichen, aber sie können eingereichte Einträge nicht einsehen oder ändern.

Erlauben Sie mehrere Operationen

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() title!: string;
  @boolean({ default: false }) completed!: boolean;
}

Jeder, der Zugriff auf diese App hat, kann jedes gemeinsame To-Do-Format erstellen, ansehen und aktualisieren. Sie können To-dos nicht löschen, weil delete es 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 öffentliche 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() title!: string;
  @text() content!: string;
  @text() createdBy!: string;
}

Die anonyme Rolle erlaubt öffentliche Lektüren, ohne die Identitätsansprüche zu prüfen. Die authentifizierte Rolle nutzt die Ansprüche des angemeldeten Nutzers, um Änderungen auf Inhalte zu beschränken, die der Nutzer besitzt.

Sicherheitsleitfaden

  • Gewähren Sie den Mindestzugang. Bevorzugt read oder create allein. Gewähren update Sie oder delete nur, wenn der öffentliche Workflow es verlangt.
  • Begrenze offene Felder. Verwenden include Sie oder Optionen exclude , um den Zugriff auf Felder zu verhindern, die anonyme Nutzer nicht benötigen. Weitere Informationen finden Sie unter Datenberechtigungen definieren.
  • Verlasse dich nicht auf die App-Benutzeroberfläche zum Schutz. Berechtigungen müssen im Datenmodell definiert werden, da Anrufer Anfragen senden können, ohne Ihr Frontend zu verwenden.
  • Planen Sie nicht vertrauenswürdige Eingaben ein. Validieren Sie eingereichte Daten und gestalten Sie öffentliche Schreiboperationen auf Spam, Automatisierung und unerwarteten Datenverkehr.
  • Test wurde Operationen abgelehnt. Bestätigen Sie, dass in der Rolle ausgelassene Operationen für Benutzer ohne Sitzung abgelehnt werden.

Deaktivieren Sie anonymen Zugriff

Um den öffentlichen Zugang aus einer App zu entfernen:

  1. Entferne die anonymous Rolle aus jedem Datenmodell.
  2. Deploye die App neu, indem du . ausführst npx rayfin up.

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.