Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
- Ustawianie najemcy: Administrator dzierżawcy Fabric udziela anonimowego dostępu do danych organizacji lub wybranych grup bezpieczeństwa.
-
Rola modelu danych: Jednostka wykorzystuje tę
anonymousrolę 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.
Zaloguj się do portalu administracyjnego Fabric.
Wybierz Ustawienia dzierżawcy.
W sekcji Fabric apps (podgląd) znajdź dostęp do danych Anonymous.
Ustaw przełącznik na Włączone.
Zastosuj to ustawienie do całej organizacji lub do konkretnych grup bezpieczeństwa.
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
readalbocreatesam. Przyznanie uprawnieńupdatelubdeletetylko wtedy, gdy wymaga tego publiczny przepływ pracy. - Ogranicz pola wystawione. Użyj
includeexcludeopcji 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:
- Usuń
anonymoustę rolę z każdego modelu danych. - 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ń.