Anonym dataåtkomst i Fabric-appar

Anonym dataåtkomst gör det möjligt för en Fabric-app att exponera utvalda dataoperationer för användare som inte är inloggade. Du kontrollerar denna åtkomst på Fabric-tenant-nivå och i varje datamodell. Anonym åtkomst är ett auktorisationsalternativ, inte en ersättning för autentisering. Samma app kan ge offentlig tillgång till vissa enheter samtidigt som användare måste logga in för andra enheter eller operationer.

Important

Alla som kan nå appens URL kan använda de operationer som tilldelats anonymous rollen. Exponera inte personlig, konfidentiell, finansiell eller intern affärsdata genom denna roll.

Användningsfall

Tänk på anonym dataåtkomst när en app måste erbjuda begränsad funktionalitet utan inloggningskrav.

Scenario Exempelåtkomst Rekommenderat omfång
Offentliga referensdata Visa produktkataloger, scheman eller publika datamängder read
Återkopplingssamling Skicka in kommentarer eller svar på enkäter create

Anonym åtkomst är inte lämplig när en app måste identifiera användaren, upprätthålla äganderätt eller ge tillgång baserat på identitetsanspråk. Använd autentiserade roller för dessa scenarier.

Hur anonym åtkomst fungerar

Anonym dataåtkomst använder oberoende kontroller:

  1. Hyresgästinställning: En Fabric-tenantadministratör ger anonym dataåtkomst för organisationen eller utvalda säkerhetsgrupper.
  2. Datamodellroll: En entitet använder anonymous rollen för att definiera de operationer som icke-autentiserade användare kan utföra.

Hyresgästinställningen är den övergripande gränsen för organisationen. Appinställningen tillåter anonyma förfrågningar att nå appens datatjänst. Entitetsrollen avgör vilken data och vilka operationer dessa förfrågningar kan nå. Att aktivera endast en eller två av dessa kontroller ger inte anonym åtkomst.

Aktivera hyresgästinställningen

En Fabric-tenantadministratör måste aktivera anonym dataåtkomst innan apputvecklare kan använda den. Inställningen är inaktiverad som standard.

  1. Logga in på administratörsportalen Fabric.

  2. Välj Hyresgästinställningar.

  3. Under Fabric-appar (förhandsvisning), hitta anonym dataåtkomst.

    Skärmdump av inställningen Anonym dataåtkomst i Fabric-administratörsportalen.

  4. Ange växlingsknappen till Aktiverad.

  5. Applicera inställningen på hela organisationen eller på specifika säkerhetsgrupper.

  6. Välj Använd.

Förändringarna kan ta några minuter innan de träder i kraft. När du begränsar inställningen till säkerhetsgrupper, bekräfta att apputvecklaren eller appägaren ingår i en tillåten grupp.

Definiera anonym åtkomst i en datamodell

Använd dekoratören @role på en entitet och ange anonymous som rollnamn. Det andra argumentet definierar de tillåtna dataoperationerna: create, , read, update, eller delete.

Parameters

Parameter Type Beskrivning
roleName string Rollnamnet, till exempel authenticated eller en anpassad programroll
actions string \| string[] Enskild åtgärd eller matris: create, read, update, deleteeller * för alla
options object Valfritt objekt med check, includeoch exclude egenskaper

Följande exempel tillåter oautentiserade användare att läsa offentliga meddelanden:

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

Rollen anonymous använder inte identitetsanspråk eftersom ingen inloggad identitet finns tillgänglig. Definiera den smataste uppsättningen operationer som stöder ditt scenario.

Tillåt användare att skicka in data

För ett feedbackformulär, ge create tillgång utan att ge read, update, eller delete tillgång:

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

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

Denna modell låter användare lämna in feedback, men den tillåter dem inte att se eller ändra inskickade poster.

Tillåt flera operationer

Skicka en array när ett scenario kräver mer än en operation:

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

Alla med tillgång till denna app kan skapa, se och uppdatera varje delad att-göra-uppgift. De kan inte radera att-göra-uppgifter eftersom delete det inte är inkluderat. Använd breda behörigheter som dessa endast för offentliga eller tillfälliga data där användare förväntas dela åtkomst.

Kombinera anonyma och autentiserade roller

Tillämpa båda rollerna på en enhet när publika och inloggade användare kräver olika behörigheter. Till exempel kan vem som helst läsa ett blogginlägg, men endast dess inloggade ägare kan ändra det:

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

Den anonyma rollen tillåter offentliga läsningar utan att utvärdera identitetsanspråk. Den autentiserade rollen använder den inloggade användarens anspråk för att begränsa ändringar till innehåll som användaren äger.

Säkerhetsvägledning

  • Ge den minsta åtkomst som krävs. Föredrar read eller create ensam. Bevilja update eller delete bara när det offentliga arbetsflödet kräver det.
  • Begränsa exponerade fält. Använd include eller exclude alternativ för att förhindra åtkomst till fält som anonyma användare inte behöver. För mer information, se Definiera databehörigheter.
  • Lita inte på appens gränssnitt för skydd. Behörigheter måste definieras i datamodellen eftersom anropare kan skicka förfrågningar utan att använda ditt frontend.
  • Planera för opålitlig input. Validera inskickad data och utforma offentliga skrivoperationer för spam, automatisering och oväntad trafik.
  • Testet nekades operation. Bekräfta att operationer som utelämnats från rollen avvisas för användare utan session.

Inaktivera anonym åtkomst

För att ta bort offentlig åtkomst från en app:

  1. Ta bort anonymous rollen från varje datamodell.
  2. Distribuera om appen genom att köra npx rayfin up.

En hyresgästadministratör kan också inaktivera hyresgästinställningen för att blockera anonym dataåtkomst för alla appar inom en hyresgäst och begränsa åtkomsten till utvalda säkerhetsgrupper.