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.
Uwaga / Notatka
Funkcja narzędzia Data API Builder 2.0 opisana w tej sekcji jest obecnie dostępna w wersji zapoznawczej i może ulec zmianie przed ogólną dostępnością. Aby uzyskać więcej informacji, zobacz Co nowego w wersji 2.0.
Dziedziczenie ról pozwala na zdefiniowanie uprawnień na poziomie szerszej roli, a bardziej szczegółowe role automatycznie dziedziczą te uprawnienia. Bez dziedziczenia ról należy powtórzyć ten sam blok uprawnień dla każdej roli w każdej jednostce. W przypadku dziedziczenia ról, zdefiniuj dostęp na anonymous raz, a każda szersza rola otrzyma ten sam dostęp.
Łańcuch dziedziczenia
Łańcuch dziedziczenia przepływa z najniższych uprawnień do najbardziej uprzywilejowanych:
named-role → authenticated → anonymous
| roli | Dziedziczy po | Notatki |
|---|---|---|
Nazwana rola (na przykład editor) |
authenticated |
Lub w anonymous przypadku, gdy authenticated nie skonfigurowano |
authenticated |
anonymous |
Ma zastosowanie, gdy nie istnieje jawny authenticated blok |
anonymous |
(brak) | Podstawa łańcucha; brak zapasowego |
Łańcuch oznacza:
- Jeśli nazwana rola nie ma bloku uprawnień, DAB szuka
authenticatedbloku. Jeśli żadna nie istnieje, wraca doanonymous. - Jeśli
authenticatednie ma bloku uprawnień, DAB używa blokuanonymous. - Jeśli
anonymousnie ma bloku uprawnień, żądanie zostanie odrzucone403 Forbidden.
Jak rozwiązuje się dziedziczenie
Gdy DAB ocenia żądanie, określa efektywną rolę, a następnie przechodzi przez łańcuch dziedziczenia, aby znaleźć blok uprawnień.
- DaB identyfikuje obowiązującą rolę z żądania (za pośrednictwem
X-MS-API-ROLEnagłówka, oświadczeń tokenu lub wartości domyślnych). - Język DAB szuka jawnego bloku uprawnień w
entities.<name>.permissions, który pasuje do obowiązującej roli. - Jeśli nie istnieje pasujący blok, DAB przechodzi w górę łańcucha:
authenticated→anonymous. - Pierwszy znaleziony pasujący blok definiuje uprawnienia dla żądania.
- Jeśli żaden blok nie pasuje do żadnej roli w łańcuchu, funkcja DAB zwraca wartość
403 Forbidden.
Uwaga / Notatka
DAB ocenia uprawnienia w kontekście dokładnie jednej efektywnej roli na każde żądanie. Dziedziczenie roli nie łączy uprawnień z wielu ról.
Examples
Minimalna konfiguracja: pojedyncze uprawnienie dla wszystkich ról
Zdefiniuj read uprawnienie na anonymous. Każda rola — authenticated i dowolna nazwana rola — dziedziczy ten dostęp.
{
"entities": {
"Book": {
"source": "dbo.books",
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] }
]
}
}
}
Obowiązujące uprawnienia dla tej konfiguracji:
Entity: Book
Role: anonymous | Actions: Read
Role: authenticated | Actions: Read (inherited from: anonymous)
Unconfigured roles | Inherit from: anonymous
Konfiguracja warstwowa: inny dostęp na rolę
Jeśli potrzebujesz różnych poziomów dostępu na rolę, zdefiniuj je jawnie. Dziedziczenie wypełnia tylko role, które nie są konfigurowane.
{
"entities": {
"Order": {
"source": "dbo.orders",
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] },
{ "role": "authenticated", "actions": [ "read", "create" ] },
{ "role": "admin", "actions": [ "*" ] }
]
}
}
}
Obowiązujące uprawnienia dla tej konfiguracji:
Entity: Order
Role: anonymous | Actions: Read
Role: authenticated | Actions: Read, Create
Role: admin | Actions: Create, Read, Update, Delete
Unconfigured roles | Inherit from: authenticated
Dowolna nazwana rola inna niż admin—na przykład viewer lub support—dziedziczy z authenticated i uzyskuje dostęp do read i create.
Brak dziedziczenia: w pełni zablokowane
Jeśli anonymous nie ma bloku uprawnień i nie ma żadnej innej roli w łańcuchu, każde żądanie do tej jednostki zostanie odrzucone.
{
"entities": {
"AuditLog": {
"source": "dbo.audit_log",
"permissions": [
{ "role": "admin", "actions": [ "read" ] }
]
}
}
}
W tej konfiguracji tylko admin może uzyskać dostęp do AuditLog.
authenticated i anonymous nie mają żadnej blokady do dziedziczenia, więc DAB odrzuca żądania z tych ról przy 403 Forbidden.
Ważna
DAB emituje ostrzeżenie podczas uruchamiania, gdy skonfigurowano authenticated lub nazwane role na jednostce, ale dostawca Unauthenticated jest aktywny. Gdy Unauthenticated funkcja jest aktywna, te role nigdy nie są aktywowane. Aby uzyskać więcej informacji, zobacz Konfigurowanie nieuwierzytelnionego dostawcy.
Wyświetlanie obowiązujących uprawnień
Użyj dab configure --show-effective-permissions do wyświetlania ustalonych uprawnień dla każdej jednostki, w tym które role są dziedziczone z których. To polecenie jest najszybszym sposobem zweryfikowania, czy dziedziczenie działa zgodnie z oczekiwaniami bez uruchamiania silnika.
dab configure --show-effective-permissions
Można również określić określony plik konfiguracji:
dab configure --show-effective-permissions --config my-config.json
Przykładowy wynik:
Entity: Book
Role: anonymous | Actions: Read
Role: authenticated | Actions: Read (inherited from: anonymous)
Unconfigured roles inherit from: anonymous
Entity: Order
Role: admin | Actions: Create, Read, Update, Delete
Role: anonymous | Actions: Read
Role: authenticated | Actions: Read (inherited from: anonymous)
Unconfigured roles inherit from: authenticated
Aby uzyskać pełne opcje, zobacz --show-effective-permissions.
Dziedziczenie a jawne uprawnienia
| Scenario | Zalecenie |
|---|---|
| Wszystkie role powinny mieć taki sam dostęp | Zdefiniuj raz na anonymous; niech wszystkie role dziedziczą |
| Uwierzytelnieni użytkownicy potrzebują większego dostępu niż anonimowy | Zdefiniuj anonymous odczyt, dodaj authenticated utwórz/zaktualizuj |
Zdefiniowana rola wymaga szerszego dostępu niż authenticated |
Zdefiniuj jawnie nazwaną rolę; inne dziedziczą z authenticated |
Rola o nazwie wymaga mniejszego dostępu niż authenticated |
Jawne definiowanie nazwanej roli za pomocą ograniczonych akcji |
| Jednostka musi być w pełni prywatna | Przyznaj tylko określoną nazwaną rolę; pozostaw authenticated i anonymous niezdefiniowane |