Princípio de privilégio mínimo

Em um sistema operacional, algumas operações são privilegiadas e a permissão para execução dessas operações é restrita apenas a usuários autorizados. Essas operações privilegiadas geralmente incluem tarefas como reinicialização do sistema, inclusão e modificação de sistemas de arquivos, inclusão e exclusão de usuários e modificação das informações de data e hora do sistema.

Em sistemas UNIX ® tradicionais, um processo ou usuário pode estar no modo normal ou no modo privilegiado (também chamado de superusuário ou raiz). Um processo executado como root pode executar qualquer comando e executar qualquer operação do sistema, enquanto um usuário normal não pode executar operações privilegiadas. Um sistema tradicional UNIX tem um conceito totalmente grosseiro ou nada de privilégio e enfrenta a ameaça de segurança da administradora superprivilegiada.

A abordagem tradicional do UNIX onde um único modo privilegiado concede todo o acesso ao sistema é muito grosseiro para atender aos requisitos de sistemas altamente seguros. Um sistema que é projetado visando a segurança requer que cada processo receba o conjunto de privilégios mais restritivo possível necessário para a execução de uma tarefa. Os privilégios oferecem a vantagem de que apenas processos que requerem determinados privilégios precisem receber esses privilégios. Essa restrição de privilégios é conhecida como o princípio de privilégio mínimo e serve para limitar os danos ao sistema causados por administradores e operadores descuidados ou mal-intencionados.

Por exemplo, uma mudança de senha requer o uso de certos privilégios para acessar arquivos que normalmente não ficam acessíveis para usuários comuns. Caso sempre tivessem esses privilégios, os usuários poderiam também executar outras ações, consideradas indesejáveis do ponto de vista de segurança. Assim sendo, os privilégios necessários são concedidos apenas para o comando passwd e não para todos os usuários.

Em um ambiente RBAC, os próprios usuários não possuem nenhum privilégio inerente. Os usuários simplesmente têm permissão para a execução de determinados comandos, para os quais recebem, então, privilégios. Se, em vez disso, um usuário recebesse diretamente os privilégios, poderia utilizá-los a qualquer momento e de maneira indesejada. A limitação de privilégios para comandos individuais cria o contexto em que os privilégios são aplicados para serem, posteriormente, restringidos. Isso reforça a segurança, pois caso um aplicativo confiável seja explorado por um invasor, esse invasor terá apenas um conjunto limitado de privilégios, em vez contar com os poderes de um usuário root, que tem todos os privilégios.

Os aplicativos confiáveis devem ser cuidadosamente inspecionados antes de receberem privilégios. Além disso, esses privilégios devem ser concedidos apenas momento e local necessários para o aplicativo. Os aplicativos confiáveis são como qualquer outro programa, a única diferença é que eles tem permissão para a execução de ações que são proibidas para aplicativos não confiáveis.