O Controle De Acesso Alista o Acl
Um variant óbvio da matriz do controle de acesso
deve armazenar cada coluna com o objeto que representa. Assim,
cada objeto associou com ele um jogo dos pares, com cada par que
contem um assunto e um jogo das direitas. O assunto nomeado pode
alcançar o objeto associado usando algumas daquelas direitas.
Mais formalmente:
Deixe S ser o jogo dos assuntos, e R o jogo das direitas,
de um sistema. Um Access Control List (ACL) l é um jogo dos pares l = {(s, r): s incluído em S,
em r incluídos em R}. Deixe o acl ser uma função que
determine o Access Control List l associado com um objeto particular
o. A interpretação do acl(o) do Access Control List =
{(silicone, ri): 1 < = i < = n} é que o silicone sujeito pode
alcançar o se usando para a direita no ri.
Uma edição é a matéria da permissão do defeito.
Se um assunto não for nomeado no ACL, não tem nenhuma direita
sobre o objeto associado. Em um sistema com muitos assuntos, o
ACL pode ser muito grande. Se muitos assuntos tivessem a mesma
direita sobre a lima, se poderia definir um "wildcard" para combinar
todos os assuntos unnamed, e dá-lhes direitas do defeito.
| EXEMPLO: UNICOS 7.0 ACLs têm entradas do
formulário (usuário, grupo, direitas). Se o usuário estiver
no grupo nomeado, ou têm aquelas direitas sobre o objeto. Para
o exemplo, o triplet (o holly, maceranch, r) dá o holly do usuário
lido (r) acesso sobre o objeto somente quando o holly tiver o
maceranch como seu grupo.
Se o usuário ou o grupo forem especificados como "*",
esse caráter está feito exame para combinar todos os usuários ou
todos os grupos. Assim, (holly, *, r) dá o holly leu a
permissão sobre o objeto não obstante o grupo que está dentro;
(*, o maceranch, r) dá toda a permissão lida usuário sobre o
objeto quando esse usuário está no maceranch do grupo. |
Abreviaturas de listas do controle de acesso
Alguns sistemas abrevíam listas do controle de
acesso. A base para o controle de acesso da lima no sistema
operando-se de UNIX é desta variedade. Os sistemas de UNIX
dividem o jogo dos usuários em três classes: o proprietário
da lima, o proprietário do grupo da lima, e todos usuários
restantes. Cada classe tem um jogo separado das direitas.
EXEMPLO: Os sistemas de UNIX fornecem lêem (r),
escrevem (w), e executam (x) direitas. Quando o bishop do
usuário cría uma lima, suponha que está no vulner do grupo.
Inicialmente, o bishop pede que possa ler de e escrever à
lima, que estejam permitidos aos membros do grupo ler da lima, e que
ninguém mais têm o acesso à lima. Então as permissões
seriam rw para o proprietário, o r para o grupo, e os nenhuns para
outros.
As permissões de UNIX são representadas como três
triplets. O primeiro é as direitas do proprietário; o
segundo, direitas do grupo; e o third, outras direitas.
Dentro de cada triplet, a primeira posição é r se o acesso
lido for permitido ou se não for; a segunda posição é w se
escreva o acesso for reservado ou se não for; e a terceira
posição é x se execute o acesso for reservado ou se não for.
As permissões para a lima do bishop seriam rwr.
Uma pergunta interessante é como os sistemas de UNIX
atribuem a posse do grupo. Tradicional, os sistemas de UNIX
atribuem o grupo ID principal eficaz do processo criador. Mas em
alguns casos isto não é apropriado. Por exemplo, suponha a
linha trabalhos do programa da impressora usando permissões do grupo;
diga que seu grupo é lpdaemon. Então, quando um usuário
copía uma lima no diretório de carretel, o lpdaemon deve possuir a
lima de carretel. A maneira a mais simples reforçar esta
exigência deve fazer o grupo do diretório de carretel possuído pelo
lpdaemon e ter a posse do grupo herdada por todas as limas criadas
nesse diretório. Alguns systemsnotably, systemsaugment que de
Solaris e de SunOS a semântica de modalidades da proteção de lima
ajustando o setgid mordeu no diretório quando todas as limas criadas
no diretório deverem herdar a posse do grupo do diretório contendo. |
As abreviaturas de listas do controle de acesso, tais como
aqueles suportados pelo sistema operando-se de UNIX, sofrem de uma
perda do granularity. Suponha que um sistema de UNIX tem cinco
usuários. Anne quer permitir que Beth leia seus lima, Caroline
para escrever-lhe, Della a ler-lhe e escrever, e Elizabeth para
executá-lo. Porque há somente três jogos das permissões e
cinco desejaram arranjos das direitas (Alice including), três
triplets são insuficientes permitir todas as modalidades desejadas do
acesso. Daqui, Alice deve comprometer, e dê a alguém mais
direitas do que deseja ou dá a alguém poucas direitas.
Similarmente, o controle de acesso tradicional de UNIX não
permite que se diga "todos mas o usuário Fran"; para fazer
este, um deve criar grupos de todos os usuários exceto Fran.
Tal arranjo é incómodo, mais assim porque somente um
administrador de sistema pode criar grupos.
Muitos sistemas aumentam abreviaturas de ACLs com ACLs
full-blown. Este esquema usa as abreviaturas de ACLs como os
controles da permissão do defeito; o ACL explícito cancela os
defeitos como necessitados. O método exato varia.
EXEMPLO: A versão da IBM do sistema operando-se de
UNIX, chamada AIX, usa um ACL (chamado "estendeu permissões")
aumentar as abreviaturas tradicionais de UNIX do ACL (chamado
"permissões baixas"). Ao contrário de ACLs tradicional, o AIX
ACL permite que se especifique permissões ser adicionado ou suprimido
do jogo do usuário. Como UNICOS, AIX baseia fósforos na
identidade do grupo e do usuário. O algoritmo específico (usar
a terminologia de AIX, em que "as permissões baixas" são as
abreviaturas de UNIX de ACLs e "de permissões prolongadas" é
entradas unabbreviated do ACL) é como segue.
-
Determine o que ajustou S das permissões que o usuário
tem das permissões baixas.
-
Se as permissões prolongadas forem disabled, pare.
O jogo S é o jogo do usuário das permissões.
-
Comece a entrada seguinte nas permissões prolongadas.
Se não houver não mais, pare. O jogo S é o jogo do
usuário das permissões.
-
Se a entrada tiver o mesmos usuário e grupo que o
processo que pede o acesso, determine se a entrada negar o acesso.
Se assim, pare. O acesso é negado.
-
Modifique S como ditado pelas permissões na entrada.
-
Como um exemplo específico, considere a seguinte
respresentação de permissões do controle de acesso de um sistema de
AIX para a lima xyzzy.
atributos: owner(bishop) baixo das
permissões: group(sys) do rw-: r -- outro: --- as permissões
prolongadas permitidas especificam a
licença do rw- u:holly - w u:heidi, rw- u:matt da licença dos g=sys negue - w u:holly, g=faculty
Nas linhas prolongadas das permissões, o primeiro
campo determina o que a linha significa ("especifique" para cancelar
as permissões baixas, "licença" para adicionar direitas, e "negue"
às direita da supressão); o segundo campo indica as direitas
envolvidas, usando o triplet tradicional de UNIX; e o terceiro
campo define o usuário ("u:") e grupo ("g:") involvido.
Neste exemplo, o holly pode ler xyzzy porque as primeiras
e quartas linhas na seção prolongada das permissões cancelam a
negação baixa da permissão do acesso a outro (a classe de que holly
é um membro). Se o holly estiver trabalhando no grupo da
faculdade, não pode escrever a xyzzy (a última linha) mas pode
lê-la (primeira linha). O heidi do usuário, trabalhando no
sistema do grupo, pode ler e escrever à lima (a linha do grupo nas
permissões baixas dá a permissão lida heidi; a primeira linha
da licença nas permissões que prolongadas a seção dá o seu
escreve a permissão). Nesta maneira, as permissões prolongadas
aumentam as permissões baixas. |
Criação e manutenção de listas do controle de acesso
As execuções específicas de ACLs diferem nos
detalhes. Algumas das edições são como segue.
-
Que assuntos podem modificar o ACL de um objeto?
-
Se houver um usuário privilegiado (tal como a raiz no
sistema de UNIX ou o administrador em Windows NT), os ACLs aplicam-se
a esse usuário?
-
os grupos de sustentação do ACL ou os wildcards (isto
é, podem os usuários ser agrupados em jogos baseados em uma noção
do sistema do "grupo" ou em combinar de teste padrão)?
-
Como as permissões contradictory do controle de acesso
são seguradas? Se as concessões de uma entrada lerem
privilégios somente e umas outras concessões escrevem os
privilégios somente, que direito o assunto tem sobre o objeto?
-
Se um ajuste do defeito for permitido, as permissões do
ACL modificam-no, ou o defeito é usado somente quando o assunto não
é mencionado explicitamente no ACL?
Porque estes isues são críticos ao uso correto de ACLs
em um sistema, nós explorá-lo-emos mais detalhadamente.
Que assuntos podem modificar o ACL de um objeto?
Quando um ACL é criado, as direitas são instantiated.
O chefe entre estas direitas é esse que nós nos chamaremos
para possuir. Os possessors do para possuir para a direita podem
modificar o ACL.
Criar um objeto cría também seu ACL, com algum valor
inicial (possivelmente vazio, mas o criador é dado mais geralmente
inicialmente todas as direitas, including o próprio, sobre o objeto
novo). Pela convenção, o assunto com próprias direitas é
permitido modificar o ACL. Entretanto, alguns sistemas permitem
que qualquer um com acesso manipule as direitas.
EXEMPLO: O sistema R da base de dados relacional
contem jogos dos n-n-tuples que fazem acima dos registros, e cada
elemento de cada n-n-tuple tem atributos. Estes n-n-tuples são
armazenados como tabelas, com os registros como as fileiras e os
atributos como as colunas. Cada tabela define uma relação.
As direitas para manipular uma tabela (relação) incluem
lido (para fileiras da leitura, perguntando usando a relação, ou
definindo vistas), atualizam (para escrever a uma tabela), introduzem
(para adicionar fileiras), suprimem (para suprimir fileiras), e gota
(para suprimir tabelas). Cada um direito tem um modificador,
chamado a opção da concessão, que se o jogo permitir que o
possessor dê a direita a outra. Todo o usuário com acesso a
uma tabela pode dar direitas a qualquer outro usuário, desde que a
direita tem a opção da concessão. Daqui, possessão do acesso
(e uma opção da concessão associada com o cada um direita), não
posse, controles transferência das direitas. |
Os ACLs aplicam-se a um usuário privilegiado?
Muitos sistemas têm usuários com privilégios extra.
Os dois conhecidos melhor são o super-user da raiz em sistemas
de UNIX e no usuário do administrador em Windows NT e 2000 sistemas.
Tipicamente, ACLs (ou seus formulários degenerate) são
aplicados em uma forma limitada a tais usuários.
EXEMPLO: Os sistemas de Solaris UNIX usam as
abreviaturas do padrão de ACLs aos sistemas de UNIX e um ACL
full-blown. As abreviaturas de ACLs são ignoradas quando a raiz
é o assunto, mas os ACLs cheios aplicam-se mesmo à raiz. |
os grupos de sustentação do ACL e os wildcards?
Em seus formulário, ACLs clássicos não os grupos de
sustentação ou os wildcards. Na prática, os sistemas suportam
um ou o outro (ou ambos) para limitar o tamanho do ACL e para fazer a
manipulação das listas mais fácil. Um grupo pode refinar as
características dos processos para ser permitidos o acesso ou ser um
synonym para um jogo dos usuários (membros do grupo).
EXEMPLO: No exemplo de AIX acima, recorde que as
linhas prolongadas da permissão (que correspondem ao ACL cheio) eram
as permissões prolongadas permitiram especifique o rw- u:holly licença - w u:heidi, g=sys rw- u:matt da licença negue - w u:holly, g=faculty
Inicialmente, o sistema do grupo tinha lido a
permissão somente na lima. A segunda linha adiciona escreve a
permissão para processos com heidi de UID e sistema de GID. A
primeira linha dá processos com o holly de UID lido e escreve o
acesso, a não ser que quando o GID do processo é a faculdade, que no
caso o processo não pode escrever ao objeto (veja a quarta linha). |
EXEMPLO: O sistema operando-se de UNICOS fornece
ACLs similar àqueles de AIX, mas permite wildcards. Para o
exemplo,
holly: maceranch: r
significa que um processo com holly de UID e
maceranch de GID pode ler o objeto com que o ACL é associado. A
entrada do ACL
holly: *: r
significa que um processo com holly de UID pode
alcançar o objeto não obstante o grupo que o processo está dentro.
E a entrada
*: maceranch: r
significa que todo o processo com maceranch de GID
pode ler o objeto. |
Conflitos
Um conflito levanta-se quando duas entradas do
Access Control List no mesmo ACL dão permissões diferentes ao
assunto. O sistema pode permitir o acesso se qualquer entrada
der o acesso, nega o acesso se qualquer entrada negar o acesso, ou
aplica a primeira entrada que combina o assunto.
EXEMPLO: Se qualquer entrada em um AIX ACL negar o
acesso, o assunto está negado o acesso não obstante a posição
dessa entrada. Se não, se qualquer entrada conceder o acesso, o
assunto é concedido o acesso. Este é um exemplo da negação
que faz exame da precedência. |
|
EXEMPLO: Os routers do Cisco aplicam a primeira
entrada do Access Control List que combina o pacote entrante. Se
nenhum se aplicar, o pacote entrante está rejeitado. Este é um
exemplo da segunda aproximação, com uma régua do defeito de nega. |
ACLs e permissões do defeito
Quando ACLs e as abreviaturas de listas do
controle de acesso ou de direitas de acesso do defeito coexistirem
(como em muitos sistemas de UNIX), há duas maneiras determinar
direitas de acesso. O primeiro deve aplicar a entrada apropriada
do ACL, se uma existir, e aplicar de outra maneira as permissões do
defeito ou as abreviaturas de listas do controle de acesso. A
segunda maneira deve aumentar as permissões do defeito ou as
abreviaturas de listas do controle de acesso com os aqueles na entrada
apropriada do ACL.
EXEMPLO: O AIX estendeu permissões cai na segunda
categoria, porque modificam as permissões baixas. |
EXEMPLO: Se um pacote que entra em um router do
Cisco for destined para um anfitrião em uma rede atrás do router,
mas o router não tem nenhuma entrada da lista do acesso que permite
que o pacote esteja enviado, o pacote é rejeitado. Este é um
exemplo do primeiro método, porque a permissão do defeito é nega. |
Revogação das direitas
A revogação, ou a prevenção de um assunto que
alcança um objeto, requerem que as direitas do assunto estejam
suprimidas do ACL do objeto.
Impedir que um assunto alcance um objeto é simples.
A entrada para o assunto é suprimida do ACL do objeto. Se
somente as direitas específicas deverem ser suprimidas, estão
removidas da entrada do assunto relevante no ACL.
Se a posse não controlar dar das direitas, a revogação
é mais complexa.
EXEMPLO: O retorno ao sistema R. Supôr Anna deu
direitas do update de Peter sobre uma relação T mas deseja-as agora
revogá-las. O sistema R prendeu que após revogar, o estado da
proteção do sistema deve ser como era antes que Anna deu a Peter
todas as direitas. Especificamente, se Peter der a Mary direitas
do update, quando Anna revogar direitas do update de Peter, direitas
do update de Mary for revogado a menos que alguém à excepção de
Peter lhe der também direitas do update.
Para executar este, o sistema R define uma relação
chamada Sysauth. Os atributos desta relação são (usuário,
tabela, grantor, lido, inserção, supressão, gota, update). Os
valores dos atributos que correspondem às direita são timestamps que
indicam quando a direita foi dada (à exceção do update, que nós
trataremos do mais tarde). Para o exemplo, se Anna desse Peter
leu direitas sobre os relatórios da relação no tempo 10, e Peter
deu-os a Mary no tempo 20, a tabela seria como segue.
| Usuário |
Tabela |
Grantor |
Lido |
Peter |
Relatórios |
Anna |
10 |
Mary |
Relatórios |
Peter |
20 |
Se Anna revogasse direitas lidas de Peter, e Mary
a obtivesse lesse direitas de Peter depois que Anna as deu a Peter,
leu direitas seria revogada também. Entretanto, suponha que
Michelle tinha dado também direitas lidas Mary sobre relatórios.
Então suprimir a última fileira na tabela deixa uma entrada
para Marynamely, essa de Michelle:
| Usuário |
Tabela |
Grantor |
Lido |
Peter |
Relatórios |
Anna |
10 |
Mary |
Relatórios |
Michelle |
5 |
Assim Mary pode relatórios lidos imóveis.
A direita do update tem um valor de tudo, de algum, ou de
nenhuns. Estes valores consultam ao jogo das fileiras que podem
ser mudadas. Se o valor for algum, um Syscolauth chamado segunda
relação grava as colunas que o assunto pode atualizar. Esta
tabela grava também épocas, e a revogação prosegue quanto para às
outras colunas. |
Exemplo: Listas Do Controle De Acesso De Windows NT
Windows NT fornece listas do controle de acesso
para aquelas limas em divisórias de NTFS. Windows NT permite
que um usuário ou um grupo leiam, escrevam, executem, suprimam, mudem
as permissões de, ou façam exame da posse de uma lima ou de um
diretório. Estas direitas são agrupadas nos jogos geralmente
atribuídos chamados direitas genéricas. As direitas genéricas
para limas são como segue.
-
nenhum acesso, por meio de que o assunto não pode
alcançar a lima
-
lido, por meio de que o assunto pode ler ou
executar a lima
-
mude, por meio de que o assunto pode ler,
executar, escrever, ou suprimir a lima
-
controle cheio, por meio de que o assunto tem
todas as direitas à lima
Além, o acesso especial direito genérico
permite a atribuição de algumas das seis permissões.
Os diretórios de Windows NT têm também sua própria
noção de direitas genéricas.
-
nenhum acesso, por meio de que o assunto não pode
alcançar o diretório
-
lido, por meio de que o assunto pode ler ou
executar limas dentro do diretório
-
aliste, por meio de que o assunto pode alistar os
índices do diretório e pode mudar a um subdirectory dentro desse
diretório
-
adicione, por meio de que o assunto pode criar
limas ou subdirectories no diretório
-
adicione e leia, que combina as direitas
genéricas adiciona e lê
-
mude, por meio de que o assunto pode criar, lido,
para executar, ou escrever limas dentro do diretório e possa suprimir
subdirectories
-
controle cheio, por meio de que o assunto tem
todas as direitas sobre as limas e subdirectories no diretório
Como antes, a direita de acesso especial
genérica permite a atribuição de outras combinações das
permissões.
Quando os acessos de usuário uma lima, Windows NT
examinarem primeiramente o ACL da lima. Se o usuário não
estiver atual no ACL, e não for um membro de qualquer grupo alistado
no ACL, o acesso está negado. Se não, se qualquer entrada do
ACL negar o acesso de usuário, Windows NT nega o acesso (esta é uma
negação explícita, que seja calculada primeiramente). Se o
acesso não estiver negado explicitamente, e o usuário estiver
nomeado no ACL (como um usuário ou um membro de um grupo), o usuário
tem a união do jogo das direitas de cada entrada do ACL em que o
usuário é nomeado.
Como um exemplo, suponha que Paul, Quentin, e Regina são
usuários de um sistema de Windows NT. Paul e Quentin estão nos
estudantes do grupo. Quentin e Regina estão na equipe de
funcionários do grupo. O diretório e:\stuff tem seu Access
Control List ajustado a (a equipe de funcionários, adiciona),
(Quentin, mudança), (estudantes, nenhum acesso). Sob esta
lista, a primeira entrada permite Regina de criar subdirectories ou
limas em e:\stuff. A terceira entrada disallows todos os membros
dos estudantes do grupo de alcançar o diretório. A segunda
entrada permitiria que Quentin suprimisse subdirectories, exceto que
Quentin está no grupo de estudantes, e em Windows NT que um
explícito nega (como dado na terceira entrada) cancela todas as
concessões da permissão. Daqui, Quentin não pode alcançar o
diretório.
Agora, deixe Regina criar um plugh do subdirectory em
e:\stuff. Disallows então o acesso de Paul, mas quê-lo
permitir que Quentin tenha o acesso da mudança. Faz o seguinte.
- Críe e:\stuff \ plugh; seu ACL é (a equipe de
funcionários, adiciona), (Quentin, mudança), (estudantes, nenhum
acesso).
- Suprima a última entrada no ACL; da segunda
entrada, isto dá o acesso da mudança de Quentin.
- Adicione a entrada (Paul, nenhum acesso) ao ACL.
A última etapa é superfluous, porque Windows NT nega o
acesso pelo defeito, mas é mais seguro adicioná-lo de qualquer
maneira, a fim de que não os estudantes do grupo sejam dados
direitas. Se isso acontecesse, Paul começaria aquelas direitas
a menos que (Paul, nenhum acesso) a entrada estivesse atual.
este é um artigo adicionado por Fred Promover
|