Domanda

Sto cercando di creare un RBAC con Zend_Acl. La domanda che ho è che voglio che gli utenti siano in grado di avere più ruoli, ma non sono sicuro di come risolvere i conflitti di autorizzazione tra i vari ruoli? Nei casi in cui v'è una sia un allow e deny, dovrebbe consentire il sempre ignorare il negare? Come sempre, grazie mille per prendere il tempo di controllare la mia domanda. Cheers!

È stato utile?

Soluzione

Pensate a come la vostra casa.

  • negare | persona
  • negare | qualcuno dalla Russia
  • permettere | membro della famiglia
  • permettere | amico

esempio di farvi avere brutto russi. Pensereste, che si dovrebbe negare tuo amico buon accesso alla vostra casa solo perché è un russo? No. Lui ha dimostrato qualche qualità che lo ha concesso lo status "amico". Consenti dovrebbe ignorare la negano IMO.

Senza offesa per i russi: P

Altri suggerimenti

si dovrebbe aggiungere la priorità al ruolo l'implementazione. Se esatto coppia risorsa / privilegio esiste in diversi ruoli si prende uno su di loro con la massima priorità. Se nessuno dei ruoli hanno corrispondenza esatta -. Prendere qualunque maggiore ruolo prioritario tornerà

Un altro approccio è quello di definire il ruolo utente, come user123

$ acl-> addRole ( 'user123', array ( 'admin', 'vietato'));

Non so comportamento di ruolo con molteplici ruoli principali, in modo da controllare it out per te

best practice di sicurezza indicano quando c'è un problema di conflitto di una negazione.

Detto questo, l'esperienza pratica di sicurezza costruisco nel modo seguente (quando si tratta di RBAC):

Ogni utente dispone di una serie di diritti; diritti utente superate diritti di gruppo Ogni utente può avere uno o più diritti di gruppo Ogni gruppo ha un livello di priorità di applicazione; tipicamente amministratore viene applicato dove l'ultimo a destra applicata Io molto raramente applicare più gruppi a più persone; e la maggior parte delle persone che hanno diritto di applicare i diritti non possono fare questo tranne che per l'amministratore primario (invece faccio un nuovo gruppo). Io uso negativi (gruppi con Nega diritti) con molta parsimonia. Al momento l'applicazione di diritti di gruppo a una persona che ho il controllo del sistema di conflitti e notificare alla persona applicarlo. In aggiunta ai ruoli RBAC standard, ho anche una vista bandiera borsa di altri, borsa di modificare gli altri, ecc.

In uso Inoltre molti altri meccanismi, come ad esempio un token di sessione sha256, tabelle di database utilizzare per controllare temporaneo per inattività sessioni + attacchi replay, richiedono soggiorni indirizzo IP costante della persona, ecc.

Entrambe le varianti vanno bene, la domanda è: che cosa si preferisce di più? Avere "negare" la priorità più alta su "Consenti" si tradurrebbe in sistema in cui singolo "negare" l'autorizzazione avrebbe preso i diritti di distanza, non importa quello che gli altri dicono o viceversa - avere "permettono", come priorità superiore comporterebbe quel singolo "permettono" sarebbe concedere il permesso, nonostante molti "denys". Quindi le domande è - come rigoroso il sistema deve essere

?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top