Azure / Azure/data-api-builder
[Feature] Add support for database policies with relations
- Lingua principale
- C#
- Stelle
- 1.5k
- Fork
- 370
- Merge medio
- 3g 22h
- PR unite (30g)
- 9
Descrizione
DAB currently offers support for simple Odata expressions when defining “RLS” policies for an entity as explained in the [public doc](https://learn.microsoft.com/en-us/azure/data-api-builder/reference-configuration?tabs=http#database).
```
{
"entities": {
"User": {
"source": {
"object": "dbo.Users",
"type": "table"
},
"permissions": [
{
"role": "selfReader",
"actions": [
{
"action": "read",
"policy": {
"database": "@claims.userId eq @item.Id"
}
}
]
}
]
}
}
}
```
This instructs DAB to return rows from User table only for which Id value matches with the userId claim. The expression supports filtering on columns on the same entity only.
In many cases, customers keep user details or mapping details on a separate table altogether. Consider the following database schema.
Books
-Id
-Title
-SellerId (relationship with Sellers on its id)
Sellers
-id
-email
Let’s say we want to return Book rows only if its seller email is the same as caller’s email.
To support his behavior, we would need support for enhanced Odata expressions such as
`@item.sellerId/all(s: s/email eq @claims.upn)`
OR
`@item.sellerId/any(s: s/email eq @claims.upn)`
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia dalla documentazione collegata sulle policy del database e dall’implementazione corrente delle semplici espressioni RLS di OData. Traccia come vengono rappresentate le relazioni tra entità e i claim, quindi determina come devono essere valutate le espressioni relazionali come any/all. Il lavoro è completato quando le policy possono filtrare un’entità tramite una tabella correlata utilizzando il claim richiesto del chiamante, con una copertura per l’esempio Books e Sellers.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- csharp
- Ambito
- api, authorization, databases
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 38/100