Anonimowy dostęp do danych w aplikacjach Fabric

Anonimowy dostęp do danych pozwala aplikacji Fabric udostępniać wybrane operacje dane użytkownikom, którzy nie są zalogowani. Kontrolujesz ten dostęp na poziomie dzierżawcy Fabric oraz w każdym modelu danych. Anonimowy dostęp jest opcją autoryzacji, a nie zastępuje uwierzytelnianie. Ta sama aplikacja może zapewniać publiczny dostęp do niektórych podmiotów, wymagając od użytkowników logowania się do innych podmiotów lub operacji.

Important

Każdy, kto może dotrzeć do adresu URL aplikacji, może korzystać z operacji przypisanych do roli anonymous . Nie ujawniaj danych osobowych, poufnych, finansowych ani wewnętrznych w ramach tej roli.

Przypadki użycia

Rozważ anonimowy dostęp do danych, gdy aplikacja musi zapewniać ograniczoną funkcjonalność bez wymogu logowania.

Scenario Przykładowy dostęp Zalecany zakres
Publiczne dane referencyjne Zobacz katalogi produktów, harmonogramy lub publiczne zbiory danych read
Zbieranie informacji zwrotnych Prześlij komentarze lub odpowiedzi w ankietach create

Anonimowy dostęp nie jest odpowiedni, gdy aplikacja musi zidentyfikować użytkownika, egzekwować własność lub udostępnić dostęp na podstawie roszczeń tożsamościowych. Używaj uwierzytelnionych ról w takich sytuacjach.

Jak działa anonimowy dostęp

Anonimowy dostęp do danych wykorzystuje niezależne mechanizmy:

  1. Ustawianie najemcy: Administrator dzierżawcy Fabric udziela anonimowego dostępu do danych organizacji lub wybranych grup bezpieczeństwa.
  2. Rola modelu danych: Jednostka wykorzystuje tę anonymous rolę do określenia operacji, które mogą wykonywać użytkownicy nieuwierzytelnieni.

Setting tenant to granica całej organizacji. Ustawienia aplikacji pozwalają anonimowym żądaniom dotrzeć do usługi danych aplikacji. Rola jednostki decyduje, do jakich danych i operacji te żądania mogą mieć dostęp. Włączenie tylko jednej lub dwóch z tych opcji nie daje anonimowego dostępu.

Włącz ustawienia tenant

Administrator dzierżawcy Fabric musi umożliwić anonimowy dostęp do danych, zanim deweloperzy aplikacji będą mogli z nich korzystać. Ustawienie jest domyślnie wyłączone.

  1. Zaloguj się do portalu administracyjnego Fabric.

  2. Wybierz Ustawienia dzierżawcy.

  3. W sekcji Fabric apps (podgląd) znajdź dostęp do danych Anonymous.

    Zrzut ekranu ustawienia Anonymous access data w portalu administratora Fabric.

  4. Ustaw przełącznik na Włączone.

  5. Zastosuj to ustawienie do całej organizacji lub do konkretnych grup bezpieczeństwa.

  6. Wybierz pozycję Zastosuj.

Zmiany mogą zająć kilka minut, zanim wejdą w życie. Gdy ograniczasz ustawienie do grup bezpieczeństwa, popewnij, że deweloper aplikacji lub właściciel aplikacji jest uwzględniony w grupie dozwolonej.

Zdefiniuj anonimowy dostęp w modelu danych

Użyj dekoratora @role na jednostce i określ anonymous nazwę roli. Drugi argument definiuje dozwolone operacje danych: create, read, update, lub delete.

Parameters

Parametr Typ Opis
roleName string Nazwa roli, taka jak authenticated lub rola aplikacji niestandardowej
actions string \| string[] Pojedyncza akcja lub tablica: create, read, update, delete lub * dla wszystkich
options object Opcjonalny obiekt z właściwościami check, includei exclude

Poniższy przykład pozwala użytkownikom nieuwierzytelnionym czytać ogłoszenia publiczne:

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

Rola nie anonymous korzysta z roszczeń tożsamości, ponieważ nie ma dostępnej tożsamości zalogowanej. Zdefiniuj najwęższy zestaw operacji, które wspierają Twój scenariusz.

Pozwól użytkownikom na przesyłanie danych

W przypadku formularza opinii przyznaj create dostęp bez przyznania read, update, lub delete dostępu:

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

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

Model ten pozwala użytkownikom przesyłać opinie, ale nie pozwala im przeglądać ani zmieniać przesłanych wpisów.

Pozwól na wiele operacji

Przekazuj tablicę, gdy scenariusz wymaga więcej niż jednej operacji:

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

Każdy, kto ma dostęp do tej aplikacji, może tworzyć i aktualizować każde wspólne zadanie. Nie mogą usuwać zadań do załatwiania, bo delete nie są dołączone. Szerokie uprawnienia takie typu używaj tylko dla danych publicznych lub tymczasowych, gdzie użytkownicy mają dzielić się dostępem.

Połączenie ról anonimowych i uwierzytelnionych

Przypisz obie role do jednostki, gdy użytkownicy publiczni i zalogowani wymagają różnych uprawnień. Na przykład każdy może przeczytać wpis na blogu, ale tylko jego zalogowany właściciel może go zmienić:

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

Rola anonimowa pozwala na publiczne odczyty bez oceny roszczeń tożsamości. Rola uwierzytelniona wykorzystuje roszczenia zalogowanego użytkownika do ograniczania zmian w treściach, które użytkownik posiada.

Wskazówki dotyczące zabezpieczeń

  • Udziel minimalnego wymaganego dostępu. Wolisz read albo create sam. Przyznanie uprawnień update lub delete tylko wtedy, gdy wymaga tego publiczny przepływ pracy.
  • Ogranicz pola wystawione. Użyj includeexclude opcji uniemożliwiających dostęp do pól, których anonimowi użytkownicy nie potrzebują. Więcej informacji można znaleźć w artykule Zdefiniuj uprawnienia danych.
  • Nie polegaj na interfejsie aplikacji jako ochronie. Uprawnienia muszą być zdefiniowane w modelu danych, ponieważ wywołujący mogą wysyłać żądania bez użycia frontendu.
  • Planuj na wypadek niezaufanych danych. Weryfikuj przesłane dane i projektuj operacje publicznego zapisu pod kątem spamu, automatyzacji i nieoczekiwanego ruchu.
  • Testy odmówione operacji. Potwierdź, że operacje pominięte w roli są odrzucane dla użytkowników bez sesji.

Wyłącz anonimowy dostęp

Aby usunąć publiczny dostęp z aplikacji:

  1. Usuń anonymous tę rolę z każdego modelu danych.
  2. Ponownie wdroż aplikację, uruchamiając npx rayfin up.

Administrator tenanta może także wyłączyć ustawienie tenanta, aby blokować anonimowy dostęp do danych dla wszystkich aplikacji w ramach tenanta oraz ograniczyć dostęp do wybranych grup zabezpieczeń.