Codifica dei diritti utente

2

Immagina un sistema che ha un numero di funzioni e un numero di utenti. Un utente deve avere diritti su una funzione specifica. Gli utenti possono appartenere a un gruppo. Un gruppo può appartenere a un gruppo.

Quindi, come semplice illustrazione, l'utente A ha i diritti per le funzioni 1 e 2. L'utente b ha i diritti per le funzioni 2 e 3.

L'utente A è nel gruppo1 che ha i diritti per la funzione 3, ma negativo, cioè l'accesso negato esplicito alla funzione 1.

Per maggiore complessità, forse la funzione ha i diritti di default. Quindi puoi dire, ma per impostazione predefinita tutti hanno accesso alla funzione a, o nessuno ha accesso alla funzione a. Immagino sia lo stesso di avere un gruppo Everybody.

Quindi la domanda è: come gestisci i diritti degli utenti? Fai tutti gli additivi sui diritti? Consentite l'esplicito rifiuto menzionato alla fine? Avete un sistema in cui è concesso il massimo accesso o il minimo? Rendi i diritti di briscola dei diritti utente o viceversa?

Ho visto una serie di varianti per l'applicazione dei diritti. Ora sto definendo il mio e sto davvero cercando qualsiasi esperienza che possiedi in quell'area in cui vorresti aver fatto qualcosa di diverso, o se fossi contento di aver scelto un modo particolare di fare le cose.

Grazie

    
posta Ian 08.07.2011 - 01:16
fonte

2 risposte

7

Do you make all rights additive? Do you allow the explicit denied I mention at the end? Do you make user rights trump group rights, or vice versa?

Queste sono davvero domande sui requisiti. Parlane con chiunque possieda il progetto e discuti le implicazioni con loro, quindi codifica ciò che tu e loro decidono che è meglio per il progetto.

Do you have a system where the most access possible is granted or the least?

È più facile dare una risposta solida a Il principio del privilegio minimo afferma che il sistema è più sicuro quando nessuno ha accesso a qualcosa di cui non ha realmente bisogno. Questo è un principio ben compreso che è stato testato per decenni nella sicurezza del mondo reale, e fa una buona linea guida da seguire.

    
risposta data 08.07.2011 - 01:25
fonte
2

Rendo tali sistemi il più semplice possibile. Ma alla fine è la scelta dei clienti. Eviterei i diritti "negativi", poiché ciò sarebbe molto confuso e richiederebbe un'interfaccia molto ben progettata per l'amministrazione dei diritti.

Quindi grosso modo: I diritti si sommano. Se l'utente si trova in un gruppo A che ha un certo diritto e in un altro gruppo B che non ce l'ha, ottiene il diritto grazie a Un abbonamento.

Se non dovrebbe avere il diritto che guadagnerebbe da un gruppo, non renderlo membro di questo gruppo.

Diritti di default:

Se tutti hanno accesso alla funzione A, semplicemente non è necessario alcun controllo e nessuna voce nella tabella che contiene i possibili diritti

Se nessuno ha accesso alla funzione B, puoi risparmiare tempo a codificarlo, poiché nessuno può usarlo comunque.

Nella mia esperienza pratica, i clienti spesso iniziano con grandi desideri per la gestione complessa dei diritti, solo per scoprire in seguito che non vogliono dover fare tutto il lavoro per gestirli. Pensano di aver bisogno di diritti speciali per ogni impiegato, dipartimento, liberi professionisti, stagisti, tirocinanti e quant'altro. Ma dopo aver lavorato con un tale sistema per un po ', vogliono che sia cambiato in qualcosa di più semplice. Nella maggior parte dei casi ci sono solo pochissime funzioni che sono davvero importanti e consentono di modificare i dati rilevanti o visualizzare i dati utente personali. Quelli hanno bisogno di protezione. Quindi la maggior parte delle volte hai un gruppo di amministratori (può fare tutto) un gruppo di supporto clienti (può visualizzare tutto, ma modifica limitata) e forse qualcosa per gli stagisti (può fare alcune cose come modificare il contenuto, ma non vedere i dati dei clienti o cambiare cose importanti).

Ma tutto dipende dal tipo di sistema che stai scrivendo, ci potrebbero essere più diritti se il denaro è coinvolto o le prenotazioni devono essere fatte. Ma nella maggior parte dei casi questo può essere ridotto al massimo a un gruppo per dipartimento.

Semplificalo o le persone lo abusano concedendo i diritti di amministratore a tutti e al suo gatto.

    
risposta data 08.07.2011 - 02:43
fonte

Leggi altre domande sui tag