Come definire le autorizzazioni a livello di articolo in un database relazionale

3

Devo modellare un progetto di database per fornire autorizzazioni a livello di articolo agli utenti in base all'accesso al ruolo dell'utente. Sto usando asp.net con sql server 2012 Sto analizzando un'esperienza simile su come SharePoint fornisce il ritaglio di sicurezza quando accediamo alle risorse con un sito di SharePoint (inclusi i risultati di ricerca)

  1. È una buona pratica modellare questo nel database o nella programmazione dell'applicazione? (Ho visto SharePoint implementarlo, ma non sono passato a capire come lo hanno fatto)

  2. Userò anche lucene.net per l'integrazione con la ricerca. Quindi anche i risultati della ricerca dovrebbero essere tagliati di sicurezza.

Esistono best practice / risorse disponibili per suggerire come modellare questa autorizzazione?

/ Sharath

    
posta Sharath Chandra 07.07.2014 - 15:33
fonte

1 risposta

5

Le autorizzazioni a livello di articolo richiederanno sia la modellazione del database che l'applicazione dell'applicazione.

In sostanza, ti consigliamo di creare una tabella di "sicurezza degli articoli" che colleghi tra loro ID RowID e PermissionID. L'applicazione dovrà quindi determinare se l'utente corrente ha le autorizzazioni necessarie per visualizzare l'elemento richiesto. Il database può anche sfruttare le stored procedure per filtrare le righe restituite per una determinata tabella in base alle autorizzazioni.

Questo tipo di sistema può facilmente diventare complesso molto rapidamente. Assicurati di pianificare in anticipo e fai un sacco di modellazione e test del caso d'uso del modello prima di andare avanti.

Inoltre, se SharePoint è adatto per questa applicazione, potresti prendere in considerazione l'utilizzo di SharePoint invece di reinventare la ruota.

EDIT: avevo un po 'di tempo libero, quindi ho modellato uno schema che ho usato in passato per questo tipo di scenario:

Dovresticontrollareleautorizzazionidell'utenterispettoall'elementocherichiedonosultuositonelcodicedell'applicazione.Seleautorizzazionidell'utentenoncorrispondono,nonhannoaccesso.Potrestianchevolerimplementareunaqualcheformadiaccesso"admin" dove, se un utente ha il permesso "admin", può accedere a tutti gli elementi.

Puoi passare l'ID dell'utente in qualsiasi stored procedure che usi per controllare le loro autorizzazioni e filtrare i risultati dell'elenco solo agli oggetti a cui hanno il permesso di accedere.

    
risposta data 07.07.2014 - 16:01
fonte