Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.
Dědičnost rolí vám umožňuje jednou definovat oprávnění pro širší roli a automaticky zajistit, že konkrétnější role tento přístup zdědí. Bez dědičnosti rolí je nutné opakovat stejný blok oprávnění pro každou roli v každé entitě. Pomocí dědičnosti rolí nastavte přístup na anonymous jednou a každá širší role získá stejný přístup.
Řetězec dědičnosti
Řetěz dědičnosti prochází z nejméně privilegovaného na nejvíce privilegovaný:
named-role → authenticated → anonymous
| Úloha | Dědí z | Poznámky |
|---|---|---|
Pojmenovaná role (například editor) |
authenticated |
Nebo z anonymous, pokud authenticated není nakonfigurovaný |
authenticated |
anonymous |
Platí, pokud neexistuje žádný explicitní authenticated blok. |
anonymous |
(žádný) | Základ řetězce; bez záložní možnosti |
Řetězec znamená:
- Pokud pojmenovaná role nemá žádný blok oprávnění, DAB hledá
authenticatedblok. Pokud žádný neexistuje, vrátí se zpět naanonymous. - Pokud
authenticatednemá žádný blok oprávnění, DAB použije blokanonymous. - Pokud
anonymousnemá žádný blok oprávnění, žádost se zamítne s403 Forbidden.
Jak se řeší dědičnost
Když DAB vyhodnocuje požadavek, určí efektivní roli a pak prochází řetězem dědičnosti, aby našel blok oprávnění.
- DAB identifikuje efektivní roli z požadavku (prostřednictvím
X-MS-API-ROLEhlaviček, deklarací identity tokenů nebo výchozích hodnot). - DAB hledá explicitní blok oprávnění v
entities.<name>.permissions, který odpovídá efektivní roli. - Pokud neexistuje žádný odpovídající blok, DAB prochází nahoru po řetězu:
authenticated→anonymous. - První nalezený odpovídající blok poskytuje oprávnění pro požadavek.
- Pokud žádný blok neodpovídá žádné roli v řetězci, DAB vrátí
403 Forbidden.
Poznámka:
DAB vyhodnocuje oprávnění v kontextu přesně jedné efektivní role na požadavek. Dědičnost rolí nezkombinuje oprávnění z více rolí.
Příklady
Minimální konfigurace: jedno oprávnění pro všechny role
Definujte oprávnění pro read na anonymous. Každá role – authenticated i jakákoli pojmenovaná role dědí tento přístup.
{
"entities": {
"Book": {
"source": "dbo.books",
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] }
]
}
}
}
Platná oprávnění pro tuto konfiguraci:
Entity: Book
Role: anonymous | Actions: Read
Role: authenticated | Actions: Read (inherited from: anonymous)
Unconfigured roles | Inherit from: anonymous
Vrstvená konfigurace: jiný přístup pro každou roli
Pokud potřebujete různé úrovně přístupu pro každou roli, definujte je explicitně. Dědičnost vyplní pouze role, které nepřizpůsobíte.
{
"entities": {
"Order": {
"source": "dbo.orders",
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] },
{ "role": "authenticated", "actions": [ "read", "create" ] },
{ "role": "admin", "actions": [ "*" ] }
]
}
}
}
Platná oprávnění pro tuto konfiguraci:
Entity: Order
Role: anonymous | Actions: Read
Role: authenticated | Actions: Read, Create
Role: admin | Actions: Create, Read, Update, Delete
Unconfigured roles | Inherit from: authenticated
Libovolná pojmenovaná role jiná než admin—například viewer nebo support—dědí z authenticated a získá přístup k read a create.
Bez dědičnosti: plně zablokováno
Pokud anonymous nemá žádný blok oprávnění a žádná jiná role v řetězu žádnou nemá, každý požadavek na tuto entitu se odmítne.
{
"entities": {
"AuditLog": {
"source": "dbo.audit_log",
"permissions": [
{ "role": "admin", "actions": [ "read" ] }
]
}
}
}
V této konfiguraci má přístup pouze admin na AuditLog.
authenticated a anonymous nemají k dědění žádný blok, takže DAB odmítne žádosti z těchto rolí pomocí 403 Forbidden.
Důležité
DAB při spuštění vygeneruje upozornění, když jsou na entitě nakonfigurovány pojmenované role authenticated, ale poskytovatel Unauthenticated je aktivní. Pokud Unauthenticated je aktivní, tyto role se nikdy neaktivují. Další informace najdete v tématu Konfigurace neověřeného zprostředkovatele.
Zobrazení efektivních oprávnění
Použijte dab configure --show-effective-permissions k zobrazení vyřešených oprávnění pro každou entitu, včetně toho, které role byly zděděny od kterých. Tento příkaz představuje nejrychlejší způsob, jak ověřit, že dědičnost funguje podle očekávání bez spuštění engine.
dab configure --show-effective-permissions
Můžete také cílit na konkrétní konfigurační soubor:
dab configure --show-effective-permissions --config my-config.json
Příklad výstupu:
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
Pro úplný výběr podívejte se na --show-effective-permissions.
Dědičnost vs. explicitní oprávnění
| Scénář | Recommendation |
|---|---|
| Všechny role by měly mít stejný přístup. | Definujte jednou na anonymous; umožněte, aby všechny role dědily |
| Ověření uživatelé potřebují více přístupu než anonymní. | Definovat anonymous číst, přidat authenticated vytvořit/aktualizovat |
Pojmenovaná role potřebuje širší přístup než authenticated |
Definujte pojmenovanou roli explicitně; ostatní dědí z authenticated |
Pojmenovaná role potřebuje méně přístupu než authenticated |
Definování pojmenované role explicitně pomocí omezených akcí |
| Entita musí být plně soukromá. | Udělte pouze konkrétní pojmenovanou roli; nechte authenticated a anonymous nedefinované |