Anonym datatilgang i Fabric-apper

Anonym datatilgang lar en Fabric-app eksponere utvalgte dataoperasjoner for brukere som ikke er logget inn. Du kontrollerer denne tilgangen på Fabric-leietakernivå og i hver datamodell. Anonym tilgang er et autorisasjonsalternativ, ikke en erstatning for autentisering. Den samme appen kan gi offentlig tilgang til noen enheter, samtidig som den krever at brukere logger inn for andre enheter eller operasjoner.

Viktig!

Alle som kan få tilgang til app-URL-en kan bruke operasjonene som er tildelt rollen anonymous . Ikke eksponer personlige, konfidensielle, finansielle eller interne forretningsdata gjennom denne rollen.

Brukstilfeller

Vurder anonym datatilgang når en app må tilby begrenset funksjonalitet uten påloggingskrav.

Scenario Eksempeltilgang Anbefalt omfang
Offentlige referansedata Se produktkataloger, tidsplaner eller offentlige datasett read
Innsamling av tilbakemeldinger Send inn kommentarer eller svar på undersøkelser create

Anonym tilgang er ikke passende når en app må identifisere brukeren, håndheve eierskap eller gi tilgang basert på identitetskrav. Bruk autentiserte roller for disse situasjonene.

Hvordan anonym tilgang fungerer

Anonym datatilgang bruker uavhengige kontroller:

  1. Leietakerinnstilling: En Fabric-leietakeradministrator gir anonym datatilgang til organisasjonen eller utvalgte sikkerhetsgrupper.
  2. Datamodellrolle: En enhet bruker anonymous rollen til å definere operasjonene som ikke-autentiserte brukere kan utføre.

Leietakerinnstillingen er den organisasjonsomfattende grensen. App-innstillingen tillater anonyme forespørsler å nå appens datatjeneste. Entitetsrollen bestemmer hvilke data og operasjoner disse forespørslene kan få tilgang til. Å aktivere bare én eller to av disse kontrollene gir ikke anonym tilgang.

Aktiver leietakerinnstillingen

En Fabric-tenant-administrator må aktivere anonym datatilgang før apputviklere kan bruke den. Innstillingen er deaktivert som standard.

  1. Logg inn på Fabric admin-portalen.

  2. Velg Leierinnstillinger.

  3. Under Fabric-apper (forhåndsvisning), finn anonym datatilgang.

    Skjermbilde av innstillingen Anonym datatilgang i Fabric admin-portalen.

  4. Angi veksleknappen til Aktivert.

  5. Bruk innstillingene på hele organisasjonen eller på spesifikke sikkerhetsgrupper.

  6. Velg Apply.

Endringer kan ta noen minutter før de trer i kraft. Når du begrenser innstillingen til sikkerhetsgrupper, bekreft at apputvikleren eller app-eieren er inkludert i en tillatt gruppe.

Definer anonym tilgang i en datamodell

Bruk dekoratøren @role på en enhet og spesifiser anonymous som rollenavn. Det andre argumentet definerer de tillatte dataoperasjonene: create, , read, update, eller delete.

Parametre

Parameteren Type Beskrivelse
roleName string Rollenavnet, som for eksempel authenticated en egendefinert applikasjonsrolle
actions string \| string[] Enkelthandling eller array: create, read, update, , delete, eller * for alle
options object Valgfritt objekt med check, include, og exclude egenskaper

Følgende eksempel lar uautentiserte brukere lese offentlige kunngjøringer:

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 bruker ikke identitetskrav fordi ingen innlogget identitet er tilgjengelig. Definer det smaleste settet av operasjoner som støtter ditt scenario.

La brukere sende inn data

For et tilbakemeldingsskjema, gi create tilgang uten å gi read, update, eller delete tilgang:

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

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

Denne modellen lar brukere sende inn tilbakemeldinger, men den lar dem ikke se eller endre innsendte oppføringer.

Tillat flere operasjoner

Send et array når et scenario krever mer enn én operasjon:

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

Alle med tilgang til denne appen kan opprette, se og oppdatere alle delte oppgaver. De kan ikke slette oppgaver fordi delete det ikke er inkludert. Bruk brede tillatelser som disse kun for offentlige eller midlertidige data der brukere forventes å dele tilgang.

Kombiner anonyme og autentiserte roller

Bruk begge rollene på en enhet når offentlige og innloggede brukere krever forskjellige tillatelser. For eksempel kan hvem som helst lese et blogginnlegg, men bare eieren som er innlogget kan endre 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 anonyme rollen tillater offentlig lesning uten å vurdere identitetskrav. Den autentiserte rollen bruker den innloggede brukerens krav for å begrense endringer til innhold brukeren eier.

Sikkerhetsveiledning

  • Gi minimumstilgangen som kreves. Foretrekk read eller create alene. Gi til, update eller delete bare når den offentlige arbeidsflyten krever det.
  • Begrens eksponerte felt. Bruk include eller exclude alternativer for å forhindre tilgang til felt som anonyme brukere ikke trenger. For mer informasjon, se Definer datatillatelser.
  • Ikke stol på appens brukergrensesnitt for beskyttelse. Tillatelser må defineres i datamodellen fordi callere kan sende forespørsler uten å bruke frontend-en din.
  • Planlegg for upålitelig input. Valider innsendte data og design offentlige skriveoperasjoner for spam, automatisering og uventet trafikk.
  • Test nektet operasjoner. Bekreft at operasjoner som er utelatt fra rollen avvises for brukere uten sesjon.

Deaktiver anonym tilgang

For å fjerne offentlig tilgang fra en app:

  1. Fjern anonymous rollen fra hver datamodell.
  2. Distribuer appen på nytt ved å kjøre npx rayfin up.

En leietakeradministrator kan også deaktivere leietakerinnstillingen for å blokkere anonym datatilgang for alle apper innenfor en leietaker og begrense tilgangen til utvalgte sikkerhetsgrupper.