Anonymní přístup k datům v aplikacích Fabric

Anonymní přístup k datům umožňuje aplikaci Fabric zpřístupnit vybrané datové operace uživatelům, kteří nejsou přihlášeni. Tento přístup ovládáte na úrovni Fabric tenant a v každém datovém modelu. Anonymní přístup je možnost autorizace, nikoli náhrada za autentizaci. Stejná aplikace může poskytovat veřejný přístup některým subjektům, přičemž uživatelé musí přihlašovat k jiným subjektům nebo operacím.

Important

Kdokoli, kdo se dostane na URL aplikace, může použít operace přiřazené roli anonymous . Nezveřejňujte osobní, důvěrná, finanční ani interní obchodní data prostřednictvím této role.

Případy použití

Zvažte anonymní přístup k datům, když aplikace musí poskytovat omezenou funkčnost bez požadavku na přihlášení.

Scenario Příklad přístupu Doporučený obor
Veřejná referenční data Zobrazit katalogy produktů, jízdní plány nebo veřejné datové sady read
Sběr zpětné vazby Odesílejte komentáře nebo odpovědi do průzkumu create

Anonymní přístup není vhodný, pokud aplikace musí identifikovat uživatele, vynucovat vlastnictví nebo poskytovat přístup na základě tvrzení o identitě. Používejte ověřené role pro tyto scénáře.

Jak funguje anonymní přístup

Anonymní přístup k datům využívá nezávislé kontroly:

  1. Nastavení nájemníka: Správce nájemce Fabric uděluje anonymní přístup k datům organizaci nebo vybraným bezpečnostním skupinám.
  2. Role datového modelu: Entita používá roli anonymous k definování operací, které mohou provádět neautentizovaní uživatelé.

Nastavení nájemce je celofiremní hranice. Nastavení aplikace umožňuje anonymním požadavkům dosáhnout datové služby aplikace. Role entity určuje, ke kterým datům a operacím tyto požadavky mohou přistupovat. Zapnutí pouze jednoho nebo dvou těchto ovládání neposkytuje anonymní přístup.

Povolte nastavení tenant

Správce Fabric tenantu musí povolit anonymní přístup k datům, než je vývojáři aplikací mohou používat. Nastavení je ve výchozím nastavení zakázané.

  1. Přihlaste se k portálu pro správu Fabric.

  2. Vyberte Nastavení tenanta.

  3. V sekci Fabric apps (náhled) najděte přístup k anonymním datům.

    Screenshot nastavení anonymního přístupu k datům v administrátorském portálu Fabric.

  4. Nastavte přepínač na Povoleno.

  5. Aplikujte toto nastavení na celou organizaci nebo na konkrétní bezpečnostní skupiny.

  6. Vyberte Použít.

Změny mohou trvat několik minut, než se projeví. Když omezíte nastavení na bezpečnostní skupiny, ověřte, že vývojář aplikace nebo vlastník aplikace je zahrnut ve skupině povolených aplikací.

Definujte anonymní přístup v datovém modelu

Použijte @role dekorátor na entitě a zadejte anonymous název role. Druhý argument definuje povolené datové operace: create, read, update, nebo delete.

Parameters

Parameter Typ Description
roleName string Název role, například authenticated nebo vlastní role aplikace
actions string \| string[] Jedna akce nebo pole: create, read, update, delete nebo * pro vše
options object Volitelný objekt s vlastnostmi check, include a exclude

Následující příklad umožňuje neautentizovaným uživatelům číst veřejná oznámení:

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

Role anonymous nepoužívá nároky na identitu, protože není k dispozici žádná přihlášená identita. Definujte nejužší soubor operací, které podporují váš scénář.

Umožnit uživatelům odesílat data

Pro zpětnou vazbu udělte create přístup bez udělení read, update, nebo delete přístupu:

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

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

Tento model umožňuje uživatelům odesílat zpětnou vazbu, ale neumožňuje jim zobrazit ani měnit zaslané záznamy.

Povolit více operací

Předání pole, když scénář vyžaduje více než jednu operaci:

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

Kdokoli, kdo má přístup k této aplikaci, může vytvářet, zobrazovat a aktualizovat všechny sdílené úkoly. Nemohou smazat úkoly, protože delete nejsou zahrnuty. Používejte široká oprávnění jako tato pouze pro veřejná nebo dočasná data, kde se očekává, že uživatelé budou sdílet přístup.

Kombinace anonymních a ověřených rolí

Aplikujte obě role na entitu, když veřejní a přihlášení uživatelé vyžadují odlišná oprávnění. Například kdokoli může číst blogový příspěvek, ale pouze jeho přihlášený vlastník ho může změnit:

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

Anonymní role umožňuje veřejným čtení bez posuzování tvrzení o identitě. Ověřená role využívá nároky přihlášeného uživatele k omezení změn obsahu, který uživatel vlastní.

Pokyny k zabezpečení

  • Udělit minimální požadovaný přístup. Preferovat read nebo create sám. Udělit grant, update nebo delete jen tehdy, když to vyžaduje veřejný pracovní postup.
  • Omezte exponovaná pole. Použijte includeexclude nebo možnosti, které zabrání přístupu k polím, která anonymní uživatelé nepotřebují. Pro více informací viz Definujte oprávnění k datům.
  • Nespoléhejte se na uživatelské rozhraní aplikace pro ochranu. Oprávnění musí být definována na datovém modelu, protože volající mohou posílat požadavky bez použití frontendu.
  • Plánujte na nedůvěryhodné vstupy. Ověřujte odevzdaná data a navrhněte veřejné zápisové operace pro spam, automatizaci a neočekávaný provoz.
  • Testovací operace byly odepřeny. Potvrďte, že operace vynechané v roli jsou pro uživatele bez relace odmítnuty.

Vypněte anonymní přístup

Odebrání veřejného přístupu z aplikace:

  1. Odeberte roli anonymous z každého datového modelu.
  2. Aplikaci znovu nasadit spuštěním npx rayfin up.

Správce tenantu může také deaktivovat nastavení tenanta, které blokuje anonymní přístup k datům pro všechny aplikace v rámci tenanta a omezuje přístup na vybrané bezpečnostní skupiny.