Dela via


Rollärvning i Data API Builder

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.

Med rollarv kan du definiera behörigheter en gång för en bredare roll och ha mer specifika roller som automatiskt ärver den åtkomsten. Utan att roller ärvs måste du upprepa behörighetsblocket för varje roll på varje entitet. Med rollarv definierar du åtkomst på anonymous en gång, och alla bredare roller får samma åtkomst.

Arvskedjan

Arvskedjan flödar från minst privilegierad till mest privilegierad:

named-role → authenticated → anonymous
Befattning Ärver från Notes
Namngiven roll (till exempel editor) authenticated Eller från anonymous om authenticated inte har konfigurerats
authenticated anonymous Gäller när det inte finns något explicit authenticated block
anonymous (ingen) Kedjans bas; ingen reservlösning

Kedjan innebär:

  • Om en namngiven roll inte har något behörighetsblock, söker DAB efter ett authenticated block. Om det inte finns någon återgår den till anonymous.
  • Om authenticated inte har något behörighetsblock, använder DAB anonymous-blocket.
  • Om det inte finns något behörighetsblock för anonymous, avvisas begäran med 403 Forbidden.

Hur arv hanteras

När DAB utvärderar en begäran avgör den den effektiva rollen och går sedan igenom arvskedjan för att hitta ett behörighetsblock:

  1. DAB identifierar den effektiva rollen från begäran (via X-MS-API-ROLE huvud, tokenanspråk eller standardvärden).
  2. DAB söker efter ett explicit behörighetsblock i entities.<name>.permissions som motsvarar den effektiva rollen.
  3. Om det inte finns något matchande block går DAB upp i kedjan: authenticatedanonymous.
  4. Det första matchande blocket som hittades innehåller behörigheterna för begäran.
  5. Om inget block matchar någon roll i kedjan returnerar DAB 403 Forbidden.

Anmärkning

DAB utvärderar behörigheter inom exakt en effektiv roll per begäran. Rollarv kombinerar inte behörigheter från flera roller.

Exempel

Minsta konfiguration: enkel behörighet för alla roller

Definiera en read behörighet för anonymous. Varje roll–authenticated och valfri namngiven roll – ärver den åtkomsten.

{
  "entities": {
    "Book": {
      "source": "dbo.books",
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ]
    }
  }
}

Gällande behörigheter för den här konfigurationen:

Entity: Book
    Role: anonymous        | Actions: Read
    Role: authenticated    | Actions: Read (inherited from: anonymous)
    Unconfigured roles     | Inherit from: anonymous

Skiktad konfiguration: olika åtkomst per roll

När du behöver olika åtkomstnivåer per roll definierar du var och en explicit. Arv fyller bara i de roller som du inte konfigurerar.

{
  "entities": {
    "Order": {
      "source": "dbo.orders",
      "permissions": [
        { "role": "anonymous",      "actions": [ "read" ] },
        { "role": "authenticated",  "actions": [ "read", "create" ] },
        { "role": "admin",          "actions": [ "*" ] }
      ]
    }
  }
}

Gällande behörigheter för den här konfigurationen:

Entity: Order
    Role: anonymous        | Actions: Read
    Role: authenticated    | Actions: Read, Create
    Role: admin            | Actions: Create, Read, Update, Delete
    Unconfigured roles     | Inherit from: authenticated

Någon annan namngiven roll än admin– till exempel viewer eller support– ärver från authenticated och får read och create åtkomst.

Inget arv: helt blockerat

Om anonymous inte har något behörighetsblock och ingen annan roll i kedjan har ett, avvisas varje begäran till den entiteten.

{
  "entities": {
    "AuditLog": {
      "source": "dbo.audit_log",
      "permissions": [
        { "role": "admin", "actions": [ "read" ] }
      ]
    }
  }
}

I den här konfigurationen kan bara admin komma åt AuditLog. authenticated och anonymous har inget block att ärva, så DAB avvisar begäranden från dessa roller med 403 Forbidden.

Viktigt!

DAB genererar en varning vid start när authenticated eller namngivna roller konfigureras på en entitet men providern Unauthenticated är aktiv. När Unauthenticated är aktiv aktiveras aldrig dessa roller. Mer information finns i Konfigurera den oautentiserade providern.

Visa gällande behörigheter

Använd dab configure --show-effective-permissions för att visa de fastställda behörigheterna för varje entitet, inklusive vilka roller som har ärvts från vilka. Det här kommandot är det snabbaste sättet att kontrollera att arv fungerar som förväntat utan att köra motorn.

dab configure --show-effective-permissions

Du kan också rikta in dig på en specifik konfigurationsfil:

dab configure --show-effective-permissions --config my-config.json

Exempel på utdata:

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

Fullständiga alternativ finns i --show-effective-permissions.

Arv jämfört med explicita behörigheter

Scenario Recommendation
Alla roller ska ha samma åtkomst Definiera en gång på anonymous; låt alla roller ärva
Autentiserade användare behöver mer åtkomst än anonyma Definiera anonymous läsa, lägga till authenticated skapa/uppdatera
En namngiven roll behöver bredare åtkomst än authenticated Definiera den namngivna rollen explicit. andra ärver från authenticated
En namngiven roll behöver mindre åtkomst än authenticated Definiera den namngivna rollen explicit med de reducerade åtgärderna
En entitet måste vara helt privat Bevilja endast den specifika namngivna rollen. lämna authenticated och anonymous odefinierad