Dela via


Skydda din Data API Builder-lösning

Data-API-byggare exponerar dina data via REST- och GraphQL-slutpunkter. För att skydda API:et krävs tre kärnområden: autentisering (vem anropar?), auktorisering (vad kan de göra?) och transportsäkerhet (är anslutningen skyddad?).

Bild av flödet för begäran från slutpunkt till slutpunkt som visar autentisering, auktorisering och databasåtkomst.

Tre grundpelare för säkerhet

Grundpelare Frågan den besvarar Nyckelbegrepp
autentisering Vem är uppringaren? Verifiera token från en identitetsprovider
Behörighet Vad kan de göra? Rollbaserade behörigheter för entiteter
Transport Är anslutningen säker? TLS-kryptering (Transport Layer Security) för all trafik

Välj din autentiseringsprovider

Data API Builder stöder flera autentiseringsproviders. Välj den som matchar distributionsscenariot:

Leverantör Användningsfall Guide
Oautentiserad DAB sitter bakom en betrodd klientdel som hanterar identitet (som standard) Konfigurera den oautentiserade leverantören
Microsoft Entra-ID (EntraID/AzureAD) Produktionsappar med Microsoft-identitet Konfigurera Microsoft Entra-autentisering
Anpassad JSON-webbtoken (JWT) Ip-adresser från tredje part (Okta, Auth0, Keycloak) Konfigurera anpassad JWT-autentisering
App Service Appar som körs bakom Azure App Service EasyAuth (plattformens huvuden) Konfigurera App Service-autentisering
Simulator Lokal utveckling och testning Konfigurera simulatorautentisering
OBO (användardelegering) SQL-databaser som kräver den verkliga användaridentiteten (säkerhet på radnivå, granskning) Konfigurera OBO-autentisering

Anmärkning

Funktionerna i Data API Builder 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras före allmän tillgänglighet. Mer information finns i Nyheter i version 2.0.

Authentication

Autentisering verifierar anroparens identitet. Data API Builder autentiserar begäranden genom att antingen validera JWT-ägartoken (EntraID/AzureAD, Custom) eller lita på identitetshuvuden som tillhandahålls av plattformen (AppService, ). StaticWebApps Simulator hoppar över extern validering för utveckling.

Bild av hur klienter autentiserar till Data API Builder med hjälp av JWT-token.

Så här fungerar det

  1. För JWT-leverantörer hämtar klienten en token från identitetsprovidern
  2. Klienten skickar token i Authorization: Bearer <token> huvudena (JWT-leverantörer) eller plattformen infogar identitetsrubriker (EasyAuth/SWA)
  3. Data-API-byggare verifierar token- eller plattformshuvudet (utfärdare, målgrupp, signatur för JWT-leverantörer)
  4. DAB extraherar användarens roller från token- eller identitetsrubriken

Snabbreferens

Inställning Beskrivning
runtime.host.authentication.provider Autentiseringsprovidern (Unauthenticated, EntraID/AzureAD, Custom, AppService, StaticWebApps, ) Simulator
runtime.host.authentication.jwt.audience Förväntat målgruppsanspråk för JWT-leverantörer (används inte av AppService/StaticWebApps/Simulator/Unauthenticated)
runtime.host.authentication.jwt.issuer Förväntad utfärdare/myndighet för JWT-leverantörer (används inte av AppService/StaticWebApps/Simulator/Unauthenticated)

För providerspecifik konfiguration, se autentiseringsguiderna i det här avsnittet.

Authorization

Auktorisering avgör vad en autentiserad (eller anonym) användare kan göra. Data API Builder använder rollbaserad åtkomstkontroll (RBAC) för att begränsa åtkomsten till entiteter och åtgärder.

Bild av hur Data API Builder väljer en roll och utvärderar behörigheter för en begäran.

Så här fungerar det

  1. DAB tilldelar en roll till begäran baserat på token och rubriker
  2. DAB söker efter entitetens behörigheter för den rollen
  3. Om rollen har behörighet för den begärda åtgärden kör DAB frågan
  4. Annars returnerar DAB ett 403 Forbidden svar

Systemroller jämfört med användarroller

Rolltyp Beskrivning
Anonymous Tilldelad när ingen autentiserad identitet finns
Authenticated Tilldelad när en begäran autentiseras (JWT-godkänt eller betrott plattformshuvud) och ingen specifik användarroll har valts
Användarroller Anpassade roller från tokenens roles krav (eller plattformsroller) som valts via X-MS-API-ROLE header

Säker som standard

Entiteter har inga behörigheter som standard. Du måste uttryckligen bevilja åtkomst:

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

Detaljerad konfiguration finns i Översikt över auktorisering.

Säkerhet på radnivå och fältnivå

Gå längre än behörigheter på entitetsnivå med detaljerad åtkomstkontroll:

Funktion Beskrivning Guide
Databasprinciper (säkerhet på radnivå) Översätta principuttryck till frågepredikat som filtrerar rader baserat på anspråk eller sessionskontext Implementera säkerhet på radnivå
Säkerhet på fältnivå Inkludera eller exkludera specifika kolumner per roll Fältåtkomst
På uppdrag av (OBO) Byt ut den inkommande användartoken mot en underordnad SQL-token så att databasen autentiseras som den faktiska anropande användaren (endast mssql) Användardelegerad autentisering

Arv av roll

DAB 2.0 introducerar rollbaserad arvshantering för entitetsbehörigheter. Arvskedjan är named-role → authenticated → anonymous. Om en roll inte uttryckligen har konfigurerats för en entitet ärver den från nästa bredare roll. Definiera behörigheter en gång på anonymous, så får varje bredare roll samma åtkomst. Mer information finns i Rollärvning.

Transport- och konfigurationssäkerhet

Transportsäkerhet

  • Använd TLS för alla anslutningar: Kryptera trafik mellan klienter och DAB
  • Inaktivera äldre TLS-versioner: Förlita dig endast på TLS 1.2+
  • Använd HTTPS-slutpunkter: Exponera aldrig DAB över okrypterad HTTP i produktion

Mer information finns i Metodtips för säkerhet.

Konfigurationssäkerhet

  • Lagra hemligheter i miljövariabler: Använd @env('SECRET_NAME') i konfigurationen
  • Använd Azure Key Vault: Referera till hemligheter med @azure('key-vault-uri')
  • Checka aldrig in hemligheter: Håll dig dab-config.json fri från lösenord och anslutningssträngar
{
  "data-source": {
    "connection-string": "@env('SQL_CONNECTION_STRING')"
  }
}

Övervakning och uppdateringar

  • Övervaka åtkomst: Använd Application Insights för att spåra begäranden och identifiera avvikelser
  • Granska loggar: Sök efter misslyckade autentiseringsförsök och behörighetsnekanden
  • Håll DAB uppdaterat: Tillämpa säkerhetskorrigeringar genom att uppgradera till den senaste versionen

Snabbstartsguider

Uppgift Guide
Använda en betrodd klientdel utan JWT-validering i DAB Konfigurera den oautentiserade leverantören
Konfigurera Microsoft Entra ID-autentisering Konfigurera Microsoft Entra-autentisering
Använd Okta eller Auth0 Konfigurera anpassad JWT-autentisering
Drivs bakom Azure App Service Konfigurera App Service-autentisering
Testa behörigheter lokalt Konfigurera simulatorautentisering
Begränsa rader efter användare Implementera säkerhet på radnivå
Förstå rolltilldelning Översikt över auktorisering