Solução da comunidade

O que faz realmente o interruptor de privilégios das aplicações do ZimaOS

IceWhale support explained that the App Privileges switch gives a container host-like permissions, direct hardware access, and root-level execution.

O interruptor “Privilégios” da aplicação ZimaOS corresponde, na prática, ao modo privilegiado do Docker. O suporte da IceWhale descreveu-o como concedendo ao contentor permissões semelhantes às do anfitrião, acesso direto ao hardware e capacidades ao nível da raiz. Ative-o apenas quando uma aplicação necessitar realmente desse nível de acesso.

Para a maioria das aplicações, o modo privilegiado é desnecessário e enfraquece o isolamento que torna os contentores mais seguros. Prefira mapear um dispositivo ou adicionar uma capacidade Linux, em vez de conceder tudo ao contentor.

O que muda com o modo privilegiado

O atual guia de contentores privilegiados do Docker indica que --privileged concede ao contentor todas as capacidades Linux e acesso a todos os dispositivos do anfitrião, além de flexibilizar controlos de segurança importantes.

Por que motivo a IceWhale o descreveu como acesso ao nível do anfitrião

A resposta oficial de origem afirma que o processo do contentor pode aceder diretamente ao hardware do anfitrião e executar-se com privilégios semelhantes aos da raiz. É uma explicação resumida útil, mas o impacto prático na segurança é mais amplo: o contentor deixa de estar fortemente isolado.

Não ative os privilégios apenas para corrigir um erro aleatório

Se uma aplicação não conseguir aceder a um dispositivo USB, GPU, função de rede ou montagem, determine primeiro qual é exatamente a permissão em falta. O modo privilegiado pode ocultar o verdadeiro problema de configuração, expondo simultaneamente todo o anfitrião.

Prefira o mapeamento de dispositivos

devices:
  - /dev/dri/renderD128:/dev/dri/renderD128

Para um único dispositivo de hardware, mapeie esse dispositivo em vez de todos os dispositivos do anfitrião.

Prefira capacidades Linux específicas

cap_add:
  - NET_ADMIN

Um contentor de VPN/router pode necessitar de uma capacidade de rede específica. Conceda apenas o conjunto mínimo necessário, em vez de ativar o modo privilegiado, quando a documentação da aplicação o permitir.

Aplicações que podem legitimamente necessitar de mais acesso

Entre os exemplos encontram-se ferramentas de hardware de baixo nível, Docker-in-Docker, alguns dispositivos de VPN/rede, gestão de USB/dispositivos ou software especializado de monitorização do sistema. Mesmo nesses casos, consulte primeiro as orientações de implementação do projeto original.

Aplicações que normalmente não precisam dele

Aplicações web normais, bibliotecas multimédia, aplicações de notas, bases de dados, gestores de fotografias, painéis e a maioria dos serviços de API não devem necessitar do modo totalmente privilegiado apenas para funcionar.

Reveja os privilégios após uma atualização da aplicação

Um pacote antigo da aplicação pode ter ativado o modo privilegiado por conveniência, mesmo depois de o projeto original ter adicionado permissões mais restritas. Ao atualizar, volte a verificar os requisitos atuais do Compose.

O guia de segurança do Docker apresenta o padrão mais seguro para aplicações personalizadas.

Inspecione o contentor antes de conceder mais acesso

docker inspect CONTAINER

Verifique os mapeamentos de dispositivos, as capacidades, as montagens, o modo de rede e a configuração do utilizador existentes. Muitas aplicações falham porque falta um dispositivo ou caminho necessário, não porque precisem de acesso irrestrito ao anfitrião.

O modo privilegiado pode aumentar o impacto de uma intrusão

Se uma aplicação web normal e não privilegiada for comprometida, o isolamento do contentor pode limitar aquilo a que um atacante consegue aceder. Um contentor privilegiado pode aceder a muito mais dispositivos do anfitrião e interfaces do kernel, pelo que uma vulnerabilidade nessa aplicação pode ter consequências em todo o sistema.

Documente o motivo pelo qual os privilégios estão ativados

Quando os ativar intencionalmente, registe a funcionalidade exata que os exige. Durante uma atualização posterior da aplicação, volte a testar se esta consegue funcionar com permissões mais restritas e desative o interruptor se já não forem necessários.

FAQ

“Privilégios” significa que o contentor é executado como raiz?

É mais abrangente do que simplesmente executar como raiz dentro do contentor; o modo privilegiado concede amplas capacidades sobre o anfitrião e acesso aos seus dispositivos.

Devo ativá-lo para todas as aplicações personalizadas?

Não. Mantenha-o desativado, a menos que a documentação do projeto original indique que a carga de trabalho necessita dele.

Posso conceder apenas acesso à GPU ou ao USB?

Sim. Prefira mapeamentos específicos de dispositivos e definições de execução em vez do modo totalmente privilegiado.

O modo privilegiado é perigoso?

Reduz significativamente o isolamento do contentor, pelo que uma aplicação privilegiada comprometida pode ter um impacto muito maior no anfitrião.