Mandatory Access Control (MAC), ou Controle de Acesso Mandatório é outro tipo de controle de acesso definido pelo Orange Book - Trusted Computer System Evaluation Criteria [NSA 1985] como uma maneira de restringir acesso a um objeto baseado na sensitividade (representada por um rótulo) da informação contida nos objetos.
O MAC é muito mais efetivo que o DAC, pelas seguintes razões:
- MAC não pode ser sobrescrito pelo proprietário do objeto, somente pelo administrador. Enquanto o ponto-chave do DAC é o fato de que os usuários são considerados donos do objeto e portanto responsáveis pelas suas permissões de acesso, o modelo mandatório prevê que usuários individuais não têm escolha em relação a que permissões de acesso eles possuem ou a que objetos podem acessar. Os usuários individuais não são considerados donos dos objetos, e não podem definir suas permissões, isso é realizado pelos administradores do sistema. Assim os usuários não têm o poder de conceder (acidentalmente ou intencionalmente) acesso a dados ou recursos para usuários não autorizados, de acordo com a política definida pelo sistema;
- MAC pode ser aplicado em outros agentes não protegidos pelo DAC além de usuários, como programas, diretórios, sockets, tcp sockets, unix stream sockets, sistemas de arquivos, i-nodos, etc;
- MAC é especificado pelo sistema. Ele não pode ser aplicado, modificado ou removido, exceto por uma operação privilegiada (através do kernel ou pelo usuário que obrigatoriamente possuir um papel específico);
- Sobre MAC, cada programa roda sobre uma sandbox que limita suas capacidades. Sandbox é um mecanismo utilizado para rodar programas de forma segura que provê um conjunto controlado de recursos, como memória, arquivos e rede. O exemplo mais comum de uso de sanboxes é o uso de jails;
Atualmente existem algumas implementações do mecanimo MAC para o Linux, como: SELinux, AppArmor, GRSecurity, RBAC, e Smack. Esse trabalho irá abordar somente a implementação MAC SELinux (Security Enhanced Linux).
Jeronimo Zucco
2008-04-26