Casos de Uso e Exemplos Práticos
Atribuir permissões granulares a utilizadores não-root no Docker pode ser benéfico numa variedade de cenários. Apresentam-se aqui alguns casos de uso e exemplos práticos:
Cenário 1: Executando um Servidor Web
Suponha que tem uma aplicação web a executar num contendor Docker e pretende que o utilizador não-root tenha as permissões necessárias para iniciar e gerir o processo do servidor web.
## Dockerfile
FROM ubuntu:22.04
RUN useradd -ms /bin/bash myuser
RUN apt-get update && apt-get install -y nginx
RUN chown -R myuser:myuser /var/www/html
USER myuser
CMD ["nginx", "-g", "daemon off;"]
Neste exemplo, o utilizador não-root myuser recebe a propriedade do diretório /var/www/html, que é o local predefinido para o servidor web Nginx. Isto permite que o utilizador não-root inicie e gere o processo Nginx dentro do contendor.
Cenário 2: Aceder a Ficheiros Sensíveis
Se o seu contendor precisar de aceder a ficheiros ou diretórios sensíveis, pode conceder ao utilizador não-root as permissões necessárias para ler ou escrever nesses locais.
## Executar o contendor com permissões de volume específicas
docker run -it --user myuser -v /path/to/sensitive/files:/sensitive:rw,uid=1000,gid=1000 ubuntu:22.04 bash
Neste exemplo, o utilizador não-root com um ID de utilizador de 1000 e um ID de grupo de 1000 recebe permissão de leitura e escrita para o diretório /path/to/sensitive/files dentro do contendor.
Cenário 3: Interagir com o Daemon do Docker
Se o seu utilizador não-root precisar de interagir com o daemon do Docker, pode adicioná-lo ao grupo "docker" dentro do contendor.
## Dockerfile
FROM ubuntu:22.04
RUN useradd -ms /bin/bash myuser
RUN usermod -aG docker myuser
USER myuser
Este Dockerfile cria um utilizador não-root chamado myuser e adiciona-o ao grupo "docker", permitindo-lhe executar tarefas relacionadas com o Docker, como construir e gerir contentores.
Cenário 4: Executar Comandos com Privilégios
Em alguns casos, o seu utilizador não-root pode precisar de executar comandos com privilégios que exigem capacidades específicas. Pode utilizar a flag --cap-add para conceder as capacidades necessárias ao utilizador não-root.
## Executar o contendor com capacidade específica
docker run -it --user myuser --cap-add=SYS_ADMIN ubuntu:22.04 bash
Neste exemplo, o utilizador não-root recebe a capacidade "CAP_SYS_ADMIN", que lhe permite executar tarefas de administração do sistema que exigem privilégios elevados.
Compreendendo estes casos de uso e exemplos práticos, pode atribuir eficazmente permissões granulares a utilizadores não-root no Docker, garantindo que eles têm o acesso necessário para executar as suas tarefas, mantendo um ambiente seguro e isolado.