Il Controllo Di Accesso Elenca il Acl
Una variante evidente della tabella di controllo di
accesso deve immagazzinare ogni colonna con l'oggetto che rappresenta.
Quindi, ogni oggetto ha associato con esso un insieme degli
accoppiamenti, con ogni accoppiamento che contiene un oggetto e un
insieme dei diritti. L'oggetto chiamato può accedere
all'oggetto collegato usando c'è ne di quei diritti. Più
formalmente:
Lasci la S essere l'insieme degli oggetti e la R l'insieme
dei diritti, di un sistema. Un Access Control List
(ACL) l è un insieme degli accoppiamenti l = {(s,
r): s inclusa nella S, nella r incluse nella R}. Lasci il
acl essere una funzione che determina il Access Control List l
connesso con un oggetto particolare o. Interpretazione del
acl(o) del Access Control List = {(silicone, ri): 1 < = i < = n}
è che il silicone tematico può accedere alla o usando affatto a
destra nel ri.
Un'edizione è la materia di permesso di difetto. Se
un oggetto non è chiamato nel ACL, non ha diritti sopra l'oggetto
collegato. Su un sistema con molti oggetti, il ACL può essere
molto grande. Se molti oggetti hanno la stessa destra sopra la
lima, si potrebbe definire "un metacarattere" per abbinare tutti gli
oggetti non specificati e dà loro i diritti di difetto.
| ESEMPIO: UNICOS 7.0 ACLs hanno entrate della forma
(utente, gruppo, diritti). Se l'utente è nel gruppo chiamato,
lui o lei ha quei diritti sopra l'oggetto. Per esempio, il
tripletto (agrifoglio, il maceranch, r) dà l'accesso colto agrifoglio
dell'utente (r) sopra l'oggetto soltanto quando l'agrifoglio ha
maceranch come suo gruppo.
Se l'utente o il gruppo è specificato come "*", quel
carattere è preso per abbinare tutti gli utenti o tutti i gruppi.
Quindi, (agrifoglio, *, r) dà l'agrifoglio ha letto il permesso
sopra l'oggetto senza riguardo al gruppo ch'è dentro; (*, il
maceranch, r) dà tutto il permesso colto utente sopra l'oggetto
quando quell'utente è nel maceranch del gruppo. |
Abbreviazioni delle liste di controllo di accesso
Alcuni sistemi abbreviano le liste di controllo di
accesso. La base per controllo di accesso della lima nel sistema
operativo di UNIX è di questa varietà. I sistemi di UNIX
dividono l'insieme degli utenti in tre codici categoria: il
proprietario della lima, il proprietario del gruppo della lima e tutti
gli altri utenti. Ogni codice categoria ha un insieme separato
dei diritti.
ESEMPIO: I sistemi di UNIX forniscono leggono (r),
scrivono (w) ed eseguono (x) i diritti. Quando il bishop
dell'utente genera una lima, supponga che è nel vulner del gruppo.
Inizialmente, il bishop chiede che può leggere da e scrivere
alla lima, che ai membri del gruppo sono permessi leggere dalla lima e
che nessun altro hanno accesso alla lima. Allora i permessi
sarebbero rw per il proprietario, la r per il gruppo e nessun per
altra.
I permessi di UNIX sono rappresentati come tre tripletti.
Il primo è i diritti del proprietario; il secondo,
diritti del gruppo; ed il terzo, altri diritti.
All'interno di ogni tripletto, la prima posizione è r se
l'accesso colto è permesso o se non è; la seconda posizione è
W se scriva l'accesso si concede o se non è; e la terza
posizione è x se esegua l'accesso si concede o se non è. I
permessi per la lima del bishop sarebbero rwr.
Una domanda interessante è come i sistemi di UNIX
assegnano la proprietà del gruppo. Tradizionalmente, i sistemi
di UNIX assegnano l'identificazione di gruppo principale efficace del
processo di generazione. Ma in alcuni casi questo non è adatto.
Per esempio, supponga impianti di programma dello stampante di
linea usando i permessi del gruppo; dica che il relativo gruppo
è lpdaemon. Allora, quando un utente copia una lima nell'indice
di bobina, il lpdaemon deve possedere la lima di bobina. Il
senso più semplice fare rispettare questo requisito deve fare il
gruppo dell'indice di bobina posseduto da lpdaemon e fare la
proprietà del gruppo ereditare da tutte le lime generate in
quell'indice. Alcuni systemsnotably, systemsaugment che di SunOS
e di Solaris la semantica dei modi di protezione di lima regolando il
setgid ha morso sull'indice quando tutte le lime generate nell'indice
devono ereditare la proprietà del gruppo dell'indice contenente. |
Le abbreviazioni delle liste di controllo di accesso, come
quelli sostenuti dal sistema operativo di UNIX, soffrono da una
perdita del granularity. Supponga che un sistema di UNIX ha
cinque utenti. Anne desidera permettere che Beth legga la suoi
lima, Caroline per scrivere esso, Della da leggere e scrivere esso ed
Elizabeth per eseguirlo. Poiché ci sono soltanto tre insiemi
dei permessi e cinque hanno voluto le disposizioni dei diritti (Alice
compresa), tre tripletti sono insufficienti per permettere tutti i
modi voluti di accesso. Quindi, Alice deve compromettere e dia
qualcuno più diritti che vuole o dà qualcuno pochi diritti.
Similmente, il controllo di accesso tradizionale di UNIX non
permette che si dica "ognuno ma l'utente Fran"; per fare questo,
uno deve generare i gruppi di tutti gli utenti tranne Fran. Una
tal disposizione è ingombrante, tanto più perché soltanto un
coordinatore di sistema può generare i gruppi.
Molti sistemi aumentano le abbreviazioni di ACLs con ACLs
completo. Questo schema usa le abbreviazioni di ACLs come i
comandi di permesso di difetto; il ACL esplicito esclude i
difetti come stati necessari. Il metodo esatto varia.
ESEMPIO: La versione dell'IBM del sistema operativo
di UNIX, denominata AIX, usa un ACL (chiamato "ha esteso i permessi")
per aumentare le abbreviazioni tradizionali di UNIX di ACL (chiamato
"permessi bassi"). Diverso di ACLs tradizionale, il AIX ACL
permette che si specifichi i permessi essere aggiunto o cancellato
dall'insieme dell'utente. Come UNICOS, AIX basa i fiammiferi
sull'identità dell'utente e del gruppo. La procedura specifica
(usando la terminologia del AIX, in cui "i permessi bassi" sono le
abbreviazioni di UNIX di ACLs e "di permessi estesi" è entrate
unabbreviated di ACL) è come segue.
-
Determini che cosa ha regolato la S dei permessi che
l'utente ha dai permessi bassi.
-
Se i permessi estesi sono disabled, arrestisi.
L'insieme S è l'insieme dell'utente dei permessi.
-
Ottenga l'entrata seguente nei permessi estesi. Se
ci sono nient'altro, arrestisi. L'insieme S è l'insieme
dell'utente dei permessi.
-
Se l'entrata ha lo stessi utente e gruppo del processo che
chiede l'accesso, determini se l'entrata nega l'accesso. In caso
affermativo, arrestisi. L'accesso è negato.
-
Modifichi la S come dettata dai permessi nell'entrata.
-
Come esempio specifico, consideri la seguente
rappresentazione dei permessi di controllo di accesso del sistema di
AIX per la lima xyzzy.
attributi: owner(bishop) basso di
permessi: group(sys) del rw-: r
-- altre: --- i permessi estesi permessi specificano il permesso del rw- u:holly - il W u:heidi, il rw- u:matt del permesso dei g=sys neghi - W u:holly, g=faculty
Nelle linee estese di permessi, il primo campo
determina che cosa la linea significa ("specifichi" per escludere i
permessi bassi, "permesso" aggiungere i diritti e "neghi" ai diritti
di cancellazione); il secondo campo dichiara i diritti in
questione, per mezzo del tripletto tradizionale di UNIX; ed il
terzo campo definisce l'utente ("u:") e gruppo ("g:")
implicato.
In questo esempio, l'agrifoglio può leggere xyzzy perché
le linee di quarto e primo nella sezione estesa di permessi
escludono la smentita bassa di permesso di accesso ad altri (il codice
categoria di cui agrifoglio sia un membro). Se l'agrifoglio sta
funzionando nel gruppo della facoltà, non può scrivere a xyzzy
(l'ultima linea) ma può leggerla (prima linea). Il heidi
dell'utente, funzionante nel sistema del gruppo, può leggere e
scrivere alla lima (la linea del gruppo nei permessi bassi dà il
permesso colto heidi; la prima linea del permesso nei permessi
che estesi la sezione dà il suo scrive il permesso). In questo
modo, i permessi estesi aumentano i permessi bassi. |
Creazione e mantenimento delle liste di controllo di
accesso
Le esecuzioni specifiche di ACLs differiscono da
in dettaglio. Alcune delle edizioni sono come segue.
-
Quali oggetti possono modificare il ACL dell'oggetto?
-
Se ci è un utente privilegiato (quali la radice nel
sistema di UNIX o il coordinatore in Windows NT), i ACLs si applicano
a quell'utente?
-
i gruppi di sostegno di ACL o i metacaratteri (cioè
possono gli utenti essere raggruppati in serie basate su una nozione
del sistema "del gruppo" o sulla corrispondenza di modello)?
-
Come i permessi contradittori di controllo di accesso sono
maneggiati? Se lle concessioni dell'una voce leggono i privilegi
soltanto e lle altre concessioni scrivono i privilegi soltanto, che di
destra l'oggetto ha sopra l'oggetto?
-
Se una regolazione di difetto è permessa, i permessi di
ACL la modificano, o il difetto è usato soltanto quando l'oggetto non
è accennato esplicitamente nel ACL?
Poiché questi isues sono critici all'uso corretto di ACLs
su un sistema, li esploreremo più dettagliatamente.
Quali oggetti possono modificare il ACL dell'oggetto?
Quando un ACL è generato, i diritti sono instantiated.
Il capo fra questi diritti è quello che denomineremo per
possedere. I possessors del possedere a destra possono
modificare il ACL.
La generazione dell'oggetto inoltre genera il relativo
ACL, con un certo valore iniziale (possibilmente vuoto, ma il creatore
inizialmente è dato più solitamente tutti i diritti, compreso il
proprio, sopra il nuovo oggetto). Dalla convenzione, l'oggetto
con i propri diritti è permesso modificare il ACL. Tuttavia,
alcuni sistemi permettono che chiunque con accesso maneggi i diritti.
ESEMPIO: Il sistema R della base di dati relazionale
contiene gli insiemi dei n-n-tuples che fanno sulle annotazioni ed
ogni elemento di ogni n-n-tuple ha attributi. Questi n-n-tuples
sono immagazzinati come tabelle, con le annotazioni come le file e gli
attributi come le colonne. Ogni tabella definisce un rapporto.
I diritti per il maneggiamento della tabella (rapporto)
includono colto (per le file della lettura, interrogando usando il
rapporto, o definendo le viste), aggiornano (per la scrittura ad una
tabella), inseriscono (per la aggiunta delle file), cancellano (per la
cancellazione delle file) e goccia (per la cancellazione delle
tabelle). Ciascuno di destra ha un modificatore, denominato
l'opzione di concessione, che se l'insieme permette che il possessor
dia la destra ad un altro. Tutto l'utente con accesso ad una
tabella può dare i diritti a qualunque altro utente, se la destra ha
l'opzione di concessione. Quindi, possesso di accesso (e
un'opzione di concessione connessa con ciascuno destra), non
proprietà, comandi il trasferimento dei diritti. |
I ACLs si applicano ad un utente privilegiato?
Molti sistemi hanno utenti con i privilegi supplementari.
I due conosciuti il più bene sono il super-user della radice
sui sistemi di UNIX e sull'utente del coordinatore su Windows NT e
2000 sistemi. Tipicamente, ACLs (o le loro forme degenerate)
sono applicati ad un modo limitato a tali utenti.
ESEMPIO: I sistemi di Solaris UNIX usano sia le
abbreviazioni del campione di ACLs ai sistemi di UNIX che un ACL
completo. Le abbreviazioni di ACLs sono ignorate quando la
radice è l'oggetto, ma i ACLs pieni si applicano anche alla radice. |
i gruppi di sostegno di ACL ed i metacaratteri?
Nella relativi forma, ACLs classici non i gruppi di
sostegno o i metacaratteri. In pratica, i sistemi sostengono uno
o l'altro (o entrambi) per limitare il formato del ACL e per rendere
la manipolazione delle liste più facile. Ad un gruppo può
raffinare le caratteristiche dei processi da essere concedutsi
l'accesso o essere un sinonimo per un insieme degli utenti (i membri
del gruppo).
ESEMPIO: Nell'esempio di AIX qui sopra, ricordi che
le linee estese di permesso (che corrispondono al massimo ACL) erano
i permessi estesi hanno permesso specifichi il rw- u:holly permesso - W u:heidi, g=sys rw- u:matt del permesso neghi - il W u:holly, g=faculty
Inizialmente, il sistema del gruppo aveva letto il
permesso soltanto sulla lima. La seconda linea aggiunge scrive
il permesso per i processi con il heidi di UID ed il sistema di GID.
La prima linea dà i processi con l'agrifoglio di UID colto e
scrive l'accesso, a meno che quando il GID del processo è facoltà,
nel qual caso il processo non può scrivere all'oggetto (veda la linea
di quarto). |
ESEMPIO: Il sistema operativo di UNICOS fornisce
ACLs simile a quelli di AIX, ma permette i metacaratteri. Per
esempio,
agrifoglio: maceranch: r
significa che un processo con l'agrifoglio di UID
ed il maceranch di GID può leggere l'oggetto con cui il ACL è
collegato. L'entrata di ACL
agrifoglio: *: r
significa che un processo con l'agrifoglio di UID
può accedere all'oggetto senza riguardo al gruppo che il processo è
dentro. E l'entrata
*: maceranch: r
significa che tutto il processo con il maceranch
di GID può leggere l'oggetto. |
Conflitti
Un conflitto presenta quando due entrate del
Access Control List nello stesso ACL danno i permessi differenti
all'oggetto. Il sistema può permettere l'accesso se qualunque
entrata desse l'accesso, nega l'accesso se qualunque entrata negasse
l'accesso, o applica la prima entrata che abbina l'oggetto.
ESEMPIO: Se qualunque entrata in un AIX ACL nega
l'accesso, l'oggetto è negato l'accesso senza riguardo alla posizione
di quell'entrata. Altrimenti, se qualunque entrata ha assegnato
l'accesso, l'oggetto è assegnato l'accesso. Ciò è un esempio
della smentita che prende la precedenza. |
|
ESEMPIO: I routers del Cisco applicano la prima
entrata del Access Control List che abbina il pacchetto ricevuto.
Se nessuno si applica, il pacchetto ricevuto è scartato.
Ciò è un esempio del secondo metodo, con una regola di difetto
di nega. |
ACLs e permessi di difetto
Quando ACLs e le abbreviazioni delle liste di
controllo di accesso o dei diritti di accesso di difetto coesistono
(come su molti sistemi di UNIX), ci sono due sensi determinare i
diritti di accesso. Il primo deve applicare l'entrata adatta di
ACL, se una esiste ed applicare al contrario i permessi di difetto o
le abbreviazioni delle liste di controllo di accesso. Il secondo
senso deve aumentare i permessi di difetto o le abbreviazioni delle
liste di controllo di accesso con quelli nell'entrata adatta di ACL.
ESEMPIO: Il AIX ha esteso i permessi entra nella
seconda categoria, perché modificano i permessi bassi. |
ESEMPIO: Se un pacchetto che entra in un router del
Cisco è destinato ad un ospite su una rete dietro il router, ma il
router non ha entrata della lista di accesso che permetta che il
pacchetto sia spedito, il pacchetto è scartato. Ciò è un
esempio del primo metodo, perché il permesso di difetto è nega. |
Annullamento dei diritti
L'annullamento, o la prevenzione di un oggetto che
accede ad un oggetto, richiede che i diritti dell'oggetto sono
cancellati da ACL dell'oggetto.
Impedendo un oggetto l'accesso a dell'oggetto è semplice.
L'entrata per l'oggetto è cancellata da ACL dell'oggetto.
Se soltanto i diritti specifici devono essere cancellati, sono
rimossi dall'entrata dell'oggetto relativo nel ACL.
Se la proprietà non controlla dare dei diritti,
l'annullamento è più complesso.
ESEMPIO: Il ritorno al sistema R. Suppose Anna ha
dato i diritti dell'aggiornamento di Peter sopra un rapporto T ma ora
desidera revocarlo. Il sistema R sostenge che dopo la revoca, la
protezione dichiara del sistema dovrebbe essere come era prima
che Anna abbia dato a Peter tutti i diritti. Specificamente, se
Peter desse a Mary i diritti dell'aggiornamento, quando Anna revoca i
diritti dell'aggiornamento del Peter, diritti dell'aggiornamento della
Mary è revocato a meno che qualcuno tranne Peter inoltre gli dia i
diritti dell'aggiornamento.
Per effettuare questo, il sistema R definisce un rapporto
denominato Sysauth. Gli attributi di questo rapporto sono
(utente, Tabella, grantor, colto, inserto, cancellazione, goccia,
aggiornamento). I valori degli attributi che corrispondono ai
diritti sono timestamps che indicano quando la destra è stata data
(tranne l'aggiornamento, che ci occuperemo di più successivamente).
Per esempio, se Anna desse Peter ha letto i diritti sopra i
rapporti di rapporto a tempo 10 e Peter li ha dati a Mary a tempo 20,
la tabella sarebbe come segue.
| Utente |
Tabella |
Grantor |
Colto |
Peter |
Rapporti |
Anna |
10 |
Mary |
Rapporti |
Peter |
20 |
Se Anna revoca i diritti colti del Peter e Mary
la ottenesse leggesse i diritti da Peter dopo che Anna li dia a Peter,
lei ha letto i diritti inoltre sarebbe revocata. Tuttavia,
supponga che Michelle inoltre aveva dato i diritti colti Mary sopra i
rapporti. Allora cancellare l'ultima fila nella tabella lascia
un'entrata per Marynamely, quella da Michelle:
| Utente |
Tabella |
Grantor |
Colto |
Peter |
Rapporti |
Anna |
10 |
Mary |
Rapporti |
Michelle |
5 |
Così Mary può rapporti colti tranquilli.
La destra dell'aggiornamento ha un valore di tutti, di
alcuno, o di nessun. Questi valori si riferiscono all'insieme
delle file che possono essere cambiate. Se il valore è alcuno,
uno Syscolauth denominato secondo rapporto registra le colonne che
l'oggetto può aggiornare. Questa tabella inoltre registra i
periodi e l'annullamento continua per quanto riguarda le altre
colonne. |
Esempio: Liste Di Controllo Di Accesso Di Windows
NT
Windows NT fornisce le liste di controllo di
accesso per quelle lime sui divisorii di NTFS. Windows NT
permette che un utente o un gruppo legga, scriva, esegua, cancelli,
cambi i permessi di, o prenda la proprietà di una lima o di un
indice. Questi diritti sono raggruppati in serie comunemente
assegnate denominate diritti generici. I diritti generici per le
lime sono come segue.
-
nessun accesso, per cui l'oggetto non può accedere alla
lima
-
colto, per cui l'oggetto può leggere o eseguire
la lima
-
cambi, per cui l'oggetto può leggere, eseguire,
scrivere, o cancellare la lima
-
controllo completo, per cui l'oggetto ha tutti i
diritti alla lima
In più, il giusto accesso speciale generico
permette l'assegnazione di c'è ne dei sei permessi.
Gli indici di Windows NT inoltre hanno loro propria
nozione dei diritti generici.
-
nessun accesso, per cui l'oggetto non può accedere
all'indice
-
colto, per cui l'oggetto può leggere o eseguire
le lime all'interno dell'indice
-
elenchi, per cui l'oggetto può elencare il
contenuto dell'indice e può cambiare ad un subdirectory all'interno
di quell'indice
-
aggiunga, per cui l'oggetto può generare le lime
o i subdirectories nell'indice
-
aggiunga e legga, che unisce i diritti generici
aggiunge e letto
-
cambi, per cui l'oggetto può generare, colto,
eseguire, o scrivere le lime all'interno dell'indice e può cancellare
i subdirectories
-
controllo completo, per cui l'oggetto ha tutti i
diritti sopra le lime e subdirectories nell'indice
Come prima, il diritto di accesso speciale
generico permette l'assegnazione di altre combinazioni dei permessi.
Quando gli accessi di utente una lima, Windows NT in primo
luogo esamina il ACL della lima. Se l'utente non è assente nel
ACL e non è un membro di qualsiasi gruppo elencato nel ACL, l'accesso
è negato. Altrimenti, se qualunque entrata di ACL nega
l'accesso di utente, Windows NT nega l'accesso (questa è una smentita
esplicita, che è calcolata in primo luogo). Se l'accesso non è
negato esplicitamente e l'utente è chiamato nel ACL (come un utente o
membro di un gruppo), l'utente ha l'unione dell'insieme dei diritti da
ogni entrata di ACL in cui l'utente è chiamato.
Come esempio, supponga che Paul, Quentin e Regina sono
utenti di un sistema di Windows NT. Paul e Quentin sono negli
allievi del gruppo. Quentin e Regina sono nel personale del
gruppo. L'indice e:\roba ha relativo Access Control List
regolato a (personale, aggiunge), (Quentin, cambiamento), (allievi,
nessun accesso). Sotto questa lista, la prima entrata permette a
Regina di generare i subdirectories o le lime in e:\roba. La
terza entrata respinge tutti i membri degli allievi del gruppo
dall'accesso a dell'indice. La seconda entrata permetterebbe che
Quentin cancelli i subdirectories, salvo che Quentin è nel gruppo di
studenti ed in Windows NT un esplicito nega (come dato nella terza
entrata) esclude tutte le concessioni di permesso. Quindi,
Quentin non può accedere all'indice.
Ora, lasci Regina generare un plugh del subdirectory in
e:\roba. Allora respinge l'accesso del Paul, ma che
desidera permettere che Quentin abbia accesso del cambiamento.
Fa quanto segue.
- Generi e:\roba \ plugh; il relativo ACL è
(personale, aggiunge), (Quentin, cambiamento), (allievi, nessun
accesso).
- Cancelli l'ultima entrata nel ACL; dalla seconda
entrata, questo dà l'accesso del cambiamento di Quentin.
- Aggiunga l'entrata (Paul, nessun accesso) al ACL.
L'ultimo punto è superfluo, perché Windows NT nega
l'accesso per difetto, ma è più sicuro aggiungerlo comunque,
affinchè non gli allievi del gruppo sono dati i diritti. Se
quello accade, Paul otterrebbe quei diritti a meno che (Paul, nessun
accesso) l'entrata fosse presente.
ciò è un articolo aggiunto da Fred Foster
|