Controlo de acessos e fluxos

Matriz, ACL, capacidades, DAC, RBAC, Bell-LaPadula, Biba e permissões Unix.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

A Ana tem sessão iniciada mas continua sem permissão para ler a pauta de outro curso. Autenticar confirma quem é a Ana. Uma entidade pode ser uma pessoa, conta ou processo. Autorizar decide se essa entidade pode executar uma operação sobre um objeto concreto como a pauta. É esse passo que decide o acesso.

Matriz de acessos

Dois pedidos concretizam a matriz: Ana quer ler precos.csv e um processo de atualização quer escrever nesse ficheiro. A matriz regista uma linha por sujeito, uma coluna por objeto e, em cada célula, as operações permitidas. Uma ACL guarda permissões junto do objeto, como uma coluna da matriz: para decidir, o sistema procura o sujeito na lista do objeto. Uma capacidade é o percurso oposto: uma referência protegida contra falsificação que o sujeito apresenta e que concede operações sobre um objeto. Não confundas este conceito com as Linux capabilities, que são fragmentos de privilégio de root divididos por tipo de operação.

DAC, MAC e RBAC

No DAC (controlo discricionário), o dono pode decidir parte dos acessos, por exemplo partilhar a sua pasta com um colega. No MAC (controlo obrigatório), uma política central limita decisões dos sujeitos, mesmo que sejam donos, por exemplo impedir que um documento Secreto seja partilhado. No RBAC (controlo baseado em papéis), atribuímos permissões a papéis e papéis a utilizadores: o papel Docente pode alterar pautas e o papel Aluno só pode consultar as suas. Trocar o papel de uma pessoa não garante que retiramos autorizações concedidas por outros caminhos: temos de considerar a política completa.

ABAC: atributos e contexto

No ABAC (controlo baseado em atributos), a política avalia atributos do sujeito, do objeto e da operação, podendo incluir o contexto. Por exemplo, ler uma pauta exige que o sujeito seja docente da cadeira dessa pauta e que o período de consulta esteja aberto. Ter o papel Docente, sozinho, deixa de ser suficiente.

Considera Ana, docente de FSI, e uma pauta de FSI disponível até às 18:00. Às 17:00, o pedido satisfaz as duas condições. Uma pauta de outra cadeira falha a correspondência; a mesma pauta às 19:00 falha o horário. Em ambos os casos, a identidade continua autenticada. Os atributos relevantes vêm de fontes que o servidor valida: aceitar cadeira=FSI enviado pelo cliente como prova de que é docente volta a dar ao requerente a decisão de autorização.

RBAC pode ser representado por atributos de papel. ABAC permite acrescentar condições sobre objetos e contexto; não é outra forma de armazenar uma coluna da matriz.

Confidencialidade com Bell-LaPadula

Considera níveis ordenados Público < Confidencial < Secreto. Na versão básica de Bell-LaPadula, um sujeito não lê acima do seu nível, no read up, e não escreve abaixo, no write down. Assim, um sujeito Confidencial lê Público ou Confidencial e escreve Confidencial ou Secreto, sujeito às restantes permissões.

A proibição de escrita para baixo impede que um processo que conhece um segredo o copie para um objeto público. Não impede corrupção de dados em níveis superiores. O modelo protege confidencialidade, não integridade.

Desclassificar um resumo exige um procedimento confiável fora desta regra básica. Anonimizar alguns campos não prova automaticamente que um documento deixa de ser confidencial.

Integridade com Biba

Na política estrita de Biba, os níveis representam integridade, não secretismo. Um sujeito não lê dados de integridade inferior, no read down, e não escreve em integridade superior, no write up. Isto evita que dados menos confiáveis contaminem decisões e objetos mais confiáveis.

Um processo de integridade Alta pode ler Alta e escrever Alta ou Baixa. Um processo Baixa não pode alterar um objeto Alta. O modelo não impede a divulgação de segredos. Antes de aplicar setas, identifica qual propriedade e qual variante da política o enunciado usa.

No diagrama, o sujeito está no nível alto e o objeto no nível baixo, e assumimos que as restantes permissões estão satisfeitas. As setas mostram o sentido dos dados, não o nome da operação: ao ler, os dados vão do objeto para o sujeito; ao escrever, vão do sujeito para o objeto. Em Bell-LaPadula, os níveis medem confidencialidade; em Biba estrito, medem integridade.

Permissões Unix

Num ficheiro regular, r permite ler conteúdo, w alterar conteúdo e x executar. Num diretório, r permite enumerar nomes, x procurar/atravessar e w, em conjunto com x, permite alterar entradas, como criar ou remover nomes, sujeito a restrições adicionais.

Escolhemos um trio: dono se o processo corresponde ao dono; senão grupo se pertence ao grupo; senão outros. Não tentamos as permissões dos outros quando o trio do dono nega uma operação. Esta regra assume os bits tradicionais, sem ACL adicionais, capacidades especiais ou privilégios de root.

Em octal, r=4r=4, w=2w=2, x=1x=1. O modo 640 significa rw-r-----, e 750 significa rwxr-x---.

Exemplo resolvido

Todos os diretórios anteriores são atravessáveis. /srv/loja pertence a loja:vendas e tem 750. precos.csv pertence ao mesmo dono e grupo e tem 640.

PedidoDecisãoRegra
Ana, grupo vendas, lê o ficheiroPermitidoTem x na pasta e r no ficheiro
Bruno, grupo vendas, escreve conteúdoNegadoO trio do grupo no ficheiro não tem w
Carlos, fora de vendas, lêNegadoO trio dos outros na pasta não tem x
Processo com identidade efetiva loja escrevePermitidoTem x na pasta e w de dono no ficheiro

A última linha usa a identidade efetiva do processo. Não assumimos que um script ganha setuid: em sistemas como Linux, o bit setuid de scripts interpretados é ignorado. Um executável setuid pode mudar a identidade efetiva segundo as regras do sistema, e por isso exige revisão cuidada.

Agora muda a pasta para 770. Bruno pode remover o nome do ficheiro, apesar de não poder escrever o seu conteúdo, porque tem w+x no diretório. O sticky bit, como em diretórios temporários partilhados, acrescenta restrições à remoção. Por isso, «ficheiro só de leitura» não implica «impossível de apagar»: remover um nome altera o diretório, não o conteúdo do ficheiro.

Revogação e autoridade

Retirar uma permissão não desfaz dados já copiados. Em Unix, alterar os bits de permissão de um ficheiro não retira automaticamente todos os direitos de um descritor já aberto. O guião Set-UID mostra o caso relacionado: baixar o UID não fecha um descritor obtido antes. Quando analisamos revogação, precisamos de indicar qual referência se verifica, quando se verifica e que acessos existentes a política pretende terminar.

Isolamento no sistema operativo

Permissões e políticas dependem do mecanismo que as aplica. Continua em memória virtual e fronteira do kernel para distinguir traduções e autoridade; em Android, observa UID e políticas da aplicação; em containers e seccomp, identifica o kernel partilhado e os limites de cada controlo, porque cada fronteira tem hipóteses diferentes.

Exercícios

Não há segunda tentativa nos outros

Sem ACL nem privilégios especiais, Ana é dona de um ficheiro com modo 004. Pode ler o conteúdo por ter r no trio dos outros? Assume diretórios atravessáveis.

A tua resposta

Pista

Seleciona a classe antes de avaliar o bit.

Solução

Ana é dona, por isso usa o trio ---. A leitura é negada na configuração dada. A possibilidade de alterar permissões é uma operação diferente.

  • Não, aplica-se o trio do dono, que não tem r.. Ser dona seleciona o primeiro trio; não há recurso ao trio dos outros.
  • Sim, outros inclui toda a gente.. A seleção de classe usa precedência dono, grupo, outros.
  • Sim, todo dono pode ler sempre.. O dono pode normalmente mudar permissões, mas isso não é já ter leitura no estado dado.
  • Só se executar o ficheiro.. Execução não concede automaticamente leitura do conteúdo.

Erros frequentes

Não confundir poder mudar a política com a decisão do acesso atual.

Voltar à explicação
Dois modelos, duas propriedades

Nos níveis Baixo < Alto, um sujeito Alto pretende ler Baixo e escrever Baixo. Decide as duas operações em Bell-LaPadula básico e Biba estrito. Assume as restantes permissões satisfeitas.

Pista

Escreve as regras de cada modelo antes de decidir.

Mais uma pista

Bell-LaPadula impede leitura acima e escrita abaixo; Biba estrito inverte as direções relevantes.

Solução

Em Bell-LaPadula, Alto lê Baixo mas não escreve Baixo, para não divulgar informação. Em Biba estrito, Alto não lê Baixo mas escreve Baixo, para evitar contaminação por informação menos confiável, ou seja a diferença está em confidencialidade versus integridade.

Confere a tua resposta:

  • Bell-LaPadula permite leitura Baixo e nega escrita Baixo.
  • Biba estrito nega leitura Baixo e permite escrita Baixo.
  • Relaciona a diferença com confidencialidade versus integridade.

Erros frequentes

Não uses secreto e confiável como se fossem o mesmo nível.

Voltar à explicação
Só de leitura, mas removível

Bruno tem apenas r no ficheiro e w+x no diretório que o contém. Sem sticky bit, ACL ou outras restrições, pode alterar o conteúdo? Pode remover o nome do ficheiro?

Pista

São dois objetos diferentes e duas operações diferentes.

Solução

Bruno não pode escrever o conteúdo. Pode remover a entrada porque tem escrita e procura no diretório, nas hipóteses dadas. O objeto pode continuar acessível por outros nomes ou descritores.

Confere a tua resposta:

  • Nega escrita no conteúdo por faltar w no ficheiro.
  • Permite remover a entrada com w+x no diretório.
  • Distingue conteúdo do ficheiro e entrada do diretório.

Erros frequentes

Não deduzir proteção contra remoção apenas da ausência de w no ficheiro.

Voltar à explicação
Matriz, ACL e mudança de papel

Ana quer ler precos.csv e um processo de atualização quer escrever nesse ficheiro. A ACL do ficheiro permite leitura a Ana e escrita ao processo. Regista os pedidos na matriz e decide-os. Depois a Ana muda de papel e perde o papel de leitura, mas continua dona do ficheiro com entrada própria na ACL. Perde o acesso?

Pista

A matriz tem uma célula por par sujeito-objeto.

Solução

A matriz regista (Ana, ficheiro, ler) e (processo, ficheiro, escrever); ambas as células estão permitidas pela ACL. Depois da mudança de papel, a Ana mantém o acesso pela entrada de dona: retirar um papel não remove autorizações concedidas por outro caminho. É preciso rever a política completa.

Confere a tua resposta:

  • Regista os dois pedidos como células da matriz.
  • Decide cada pedido pela ACL do objeto.
  • Explica que retirar um papel não remove acessos dados por outro caminho.

Erros frequentes

Retirar um papel não apaga uma autorização própria que ainda está na política.

Voltar à explicação
Papel correto, pedido recusado

Uma política permite ler uma pauta apenas se o sujeito tiver papel Docente, pertencer à cadeira da pauta e o horário for anterior às 18:00. Ana é docente de FSI, segundo o registo validado do servidor. Decide três pedidos: pauta FSI às 17:00; pauta de RC às 17:00; pauta FSI às 18:00. A decisão por defeito é negar e não há outras concessões. Para o segundo, Ana envia cadeira=RC no pedido. Esse campo pode substituir o atributo validado? Explica por que o papel sozinho não decide estes casos.

Solução

O primeiro é permitido: papel, cadeira e horário satisfazem a regra. O segundo é negado pela cadeira e o terceiro é negado pelo horário, pois «anterior» exclui as 18:00. O campo externo não demonstra pertença a RC; usá-lo como autoridade permitiria ao requerente escolher os próprios direitos. RBAC descreve o papel; a política ABAC deste caso acrescenta relações com o objeto e contexto temporal.

Confere a tua resposta:

  • Apliquei a correspondência entre cadeira do sujeito e do objeto.
  • Apliquei o horário separadamente do papel.
  • Rejeitei atributos declarados pelo cliente como prova de autoridade.
Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.