Zabezpečte řešení vytvořené pomocí nástroje pro sestavení Data API

Tvůrce rozhraní Data API zveřejňuje vaše data prostřednictvím koncových bodů REST a GraphQL. Zabezpečení rozhraní API vyžaduje pozornost ve třech základních oblastech: ověřování (kdo volá?), autorizace (co můžou dělat?) a zabezpečení přenosu (je chráněné připojení?).

Ilustrace toku end-to-end žádosti znázorňující ověřování, autorizaci a přístup k databázi.

Tři pilíře zabezpečení

Pilíř Otázka, na kterou odpovídá Klíčový koncept
Autentizace Kdo je volající? Ověřit tokeny od poskytovatele identity
Authorization Co můžou dělat? Oprávnění založená na rolích u entit
Přeprava Je připojení zabezpečené? Šifrování TLS (Transport Layer Security) pro veškerý provoz

Volba zprostředkovatele ověřování

Tvůrce rozhraní DATA API podporuje více zprostředkovatelů ověřování. Zvolte ten, který odpovídá vašemu scénáři nasazení:

Poskytovatel Případ použití Guide
Neověřené DAB se nachází za důvěryhodným front-endem, který zpracovává identitu (výchozí) Konfigurace neověřeného zprostředkovatele
Microsoft Entra ID (EntraID/AzureAD) Produkční aplikace využívající identitu Microsoftu Konfigurace ověřování Microsoft Entra
Vlastní webový token JSON (JWT) Poskytovatelé identity třetích stran (Okta, Auth0, Keycloak) Konfigurace vlastního ověřování JWT
App Service Aplikace běžící za Azure App Service EasyAuth (platformní hlavičky) Konfigurace ověřování ve službě App Service
Simulátor Místní vývoj a testování Konfigurace ověřování simulátoru
OBO (delegovaný uživatelem) Databáze SQL, které vyžadují skutečnou identitu uživatele (zabezpečení na úrovni řádků, auditování) Konfigurace ověřování OBO

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.

Autentizace

Ověřování ověřuje identitu volajícího. Tvůrce rozhraní DATA API ověřuje požadavky buď ověřováním nosných tokenů JWT (EntraID/AzureAD, Custom) nebo důvěryhodností hlaviček identity poskytovaných platformou (AppService, StaticWebApps). Simulator vynechává externí ověřování pro vývoj.

Obrázek toho, jak se klienti ověřují v Tvůrci rozhraní Data API pomocí tokenů JWT

Jak to funguje

  1. Pro zprostředkovatele JWT klient získá token od zprostředkovatele identity.
  2. Klient odešle token v Authorization: Bearer <token> hlavičce (zprostředkovatelé JWT) nebo platforma vloží hlavičky identit (EasyAuth/SWA).
  3. Tvůrce rozhraní Data API ověří hlavičku tokenu nebo platformy (vystavitel, cílová skupina, podpis pro poskytovatele JWT).
  4. DAB extrahuje role uživatele z hlavičky tokenu nebo identity.

Stručná referenční dokumentace

Setting Description
runtime.host.authentication.provider Zprostředkovatel ověřování (Unauthenticated,EntraID/AzureAD , CustomAppService, StaticWebApps, ) Simulator
runtime.host.authentication.jwt.audience Očekávaná deklarace cílové skupiny pro zprostředkovatele JWT (nepoužívá ji AppService/StaticWebApps/Simulator/Neověřená)
runtime.host.authentication.jwt.issuer Očekávaný vydavatel/autorita pro poskytovatele JWT (nepoužívá se službou AppService/StaticWebApps/Simulator/Unauthenticated)

Informace o konfiguraci specifické pro poskytovatele najdete v průvodcích ověřováním v této části.

Autorizace

Autorizace určuje, co může ověřený (nebo anonymní) uživatel dělat. Tvůrce rozhraní Data API používá řízení přístupu na základě role (RBAC) k omezení přístupu k entitě a akcím.

Obrázek toho, jak Tvůrce rozhraní Data API vybere roli a vyhodnotí oprávnění pro požadavek

Jak to funguje

  1. DAB přiřadí roli požadavku na základě tokenu a hlaviček.
  2. DAB vyhledá oprávnění entity pro danou roli.
  3. Pokud má role oprávnění k požadované akci, DAB provede dotaz.
  4. Pokud ne, DAB vrátí odpověď 403 Forbidden.

Systémové role vs. role uživatelů

Typ role Description
Anonymous Přiřazeno, když není k dispozici žádná ověřená identita
Authenticated Přiřazeno při ověření požadavku (hlavička JWT akceptovaná nebo důvěryhodná platforma) a není vybrána žádná konkrétní role uživatele.
Role uživatelů Vlastní role z deklarace identity tokenu roles (nebo rolí platformy) vybrané pomocí hlavičky X-MS-API-ROLE

Ve výchozím nastavení zabezpečeno

Entity nemají ve výchozím nastavení žádná oprávnění. Musíte explicitně udělit přístup:

{
  "entities": {
    "Book": {
      "permissions": [
        { "role": "authenticated", "actions": ["read"] }
      ]
    }
  }
}

Podrobné informace o konfiguraci najdete v tématu Přehled autorizace.

Zabezpečení na úrovni řádků a polí

Přejděte nad rámec oprávnění na úrovni entity s jemně odstupňovaným řízením přístupu:

funkce Description Guide
Zásady databáze (zabezpečení na úrovni řádků) Překládejte výrazy zásad do dotazových predikátů, které filtrují řádky na základě tvrzení nebo kontextu relace. Implementace zabezpečení na úrovni řádků
Zabezpečení na úrovni polí Zahrnout nebo vyloučit konkrétní sloupce dle role Přístup k polím
Jménem (OBO) Vyměňte příchozí uživatelský token za podřízený token SQL, aby se databáze autentizovala jako skutečný volající uživatel (pouze mssql) Ověřování delegované uživatelem

Dědičnost rolí

DAB 2.0 zavádí dědičnost rolí pro oprávnění entity. Řetězec dědičnosti je named-role → authenticated → anonymous. Pokud pro entitu není role explicitně nakonfigurovaná, dědí ji z další širší role. Definujte oprávnění jednou na anonymous a každá širší role získá stejný přístup. Podrobnosti najdete v tématu Dědičnost rolí.

Zabezpečení přenosu a konfigurace

Zabezpečení dopravy

  • Použití protokolu TLS pro všechna připojení: Šifrování provozu mezi klienty a DAB
  • Zakázání starších verzí protokolu TLS: Spoléháte pouze na protokol TLS 1.2 nebo novější.
  • Použití koncových bodů HTTPS: Nikdy nezpřístupňujte DAB přes nešifrovaný protokol HTTP v produkčním prostředí.

Podrobnosti najdete v tématu Osvědčené postupy zabezpečení.

Zabezpečení konfigurace

  • Ukládání tajných kódů do proměnných prostředí: Použití @env('SECRET_NAME') v konfiguraci
  • Použití služby Azure Key Vault: Referenční tajné kódy s využitím @azure('key-vault-uri')
  • Nikdy neukládejte tajné kódy: Udržujte dab-config.json bez hesel a připojovacích řetězců
{
  "data-source": {
    "connection-string": "@env('SQL_CONNECTION_STRING')"
  }
}

Monitorování a aktualizace

  • Monitorování přístupu: Sledování požadavků a zjišťování anomálií pomocí Application Insights
  • Kontrola protokolů: Kontrola neúspěšných pokusů o ověření a odepření oprávnění
  • Zachovat aktualizaci DAB: Použití oprav zabezpečení upgradem na nejnovější verzi

Průvodci pro rychlé zahájení práce

Úkol Guide
Použití důvěryhodného front-endu bez ověřování JWT v DAB Konfigurace neověřeného zprostředkovatele
Nastavit ověřování Microsoft Entra ID Konfigurace ověřování Microsoft Entra
Použijte Okta nebo Auth0 Konfigurace vlastního ověřování JWT
Pusťte za službou Azure App Service Konfigurace ověřování ve službě App Service
Místní testování oprávnění Konfigurace ověřování simulátoru
Omezení řádků podle uživatele Implementace zabezpečení na úrovni řádků
Porozumění přiřazení rolí Přehled autorizace