Introdução
O Docker tornou-se uma escolha popular para a contenção de aplicações, mas a gestão da segurança e controlo destes containers é crucial. Este tutorial irá guiá-lo através do processo de compreensão e configuração de conjuntos de limites de capacidades no Docker, permitindo-lhe melhorar a segurança e o controlo das suas aplicações baseadas em Docker.
Compreendendo as Capacidades do Docker
As capacidades do Docker são um recurso de segurança que lhe permite conceder ou restringir privilégios específicos a um contêiner. As capacidades são um recurso do kernel Linux que proporciona um controlo mais granular sobre as permissões concedidas a um processo, em vez da abordagem tradicional de tudo ou nada do utilizador root.
No kernel Linux, existem mais de 30 capacidades diferentes que podem ser concedidas ou restringidas. Alguns exemplos incluem:
CAP_NET_ADMIN: Permite que o contêiner execute operações relacionadas com a rede, como configurar interfaces de rede, configurar firewalls e gerir tabelas de encaminhamento.CAP_SYS_ADMIN: Concede uma vasta gama de privilégios de administração do sistema, incluindo o montagem de sistemas de ficheiros, carregamento de módulos do kernel e a execução de outras operações de baixo nível do sistema.CAP_CHOWN: Permite que o contêiner altere a propriedade de ficheiros e diretórios.
Por defeito, os contêineres Docker têm um conjunto limitado de capacidades, o que ajuda a reduzir a superfície de ataque e os potenciais riscos de segurança. No entanto, em alguns casos, pode ser necessário conceder capacidades adicionais ao seu contêiner para ativar determinadas funcionalidades.
graph TD
A[Kernel Linux] --> B[Capacidades]
B --> C[CAP_NET_ADMIN]
B --> D[CAP_SYS_ADMIN]
B --> E[CAP_CHOWN]
B --> F[Outras Capacidades]
C --> G[Gestão de Rede]
D --> H[Administração do Sistema]
E --> I[Alterações de Propriedade]
Tabela 1: Capacidades Comuns do Docker
| Capacidade | Descrição |
|---|---|
CAP_NET_ADMIN |
Permite que o contêiner execute operações relacionadas com a rede. |
CAP_SYS_ADMIN |
Concede uma vasta gama de privilégios de administração do sistema. |
CAP_CHOWN |
Permite que o contêiner altere a propriedade de ficheiros e diretórios. |
Compreender as capacidades do Docker é crucial para proteger os seus contêineres e garantir que estes têm o nível apropriado de acesso aos recursos do sistema.
Configurando Conjuntos de Limites de Capacidades
Para configurar o conjunto de limites de capacidades de um contêiner Docker, pode usar as opções --cap-add e --cap-drop ao iniciar o contêiner.
A opção --cap-add permite adicionar uma ou mais capacidades ao conjunto de limites do contêiner, enquanto a opção --cap-drop permite remover uma ou mais capacidades do conjunto de limites do contêiner.
Aqui está um exemplo de como iniciar um contêiner com a capacidade CAP_NET_ADMIN adicionada e a capacidade CAP_SYS_ADMIN removida:
docker run --cap-add=NET_ADMIN --cap-drop=SYS_ADMIN -it ubuntu:22.04 /bin/bash
Neste exemplo, o contêiner terá a capacidade CAP_NET_ADMIN, que lhe permite executar operações relacionadas com a rede, mas a capacidade CAP_SYS_ADMIN, que concede uma vasta gama de privilégios de administração do sistema, será removida.
Também pode visualizar o conjunto de limites de capacidades atual de um contêiner em execução usando o comando docker inspect:
docker inspect <container_id> | grep "CapBnd"
Isto irá mostrar o conjunto de limites de capacidades atual para o contêiner especificado.
graph TD
A[Contêiner Docker] --> B[Conjunto de Limites de Capacidades]
B --> C[--cap-add=NET_ADMIN]
B --> D[--cap-drop=SYS_ADMIN]
C --> E[CAP_NET_ADMIN]
D --> F[CAP_SYS_ADMIN]
Tabela 1: Opções Comuns de Conjuntos de Limites de Capacidades do Docker
| Opção | Descrição |
|---|---|
--cap-add=<capacidade> |
Adiciona a capacidade especificada ao conjunto de limites do contêiner. |
--cap-drop=<capacidade> |
Remove a capacidade especificada do conjunto de limites do contêiner. |
Configurar o conjunto de limites de capacidades dos seus contêineres Docker é um passo importante na segurança das suas aplicações e na redução da superfície de ataque.
Aplicações Práticas de Limites de Capacidades
Os conjuntos de limites de capacidades no Docker podem ser usados em diversos cenários práticos para melhorar a segurança e o isolamento dos seus contêineres.
Executando Aplicações Não Confiáveis
Ao executar aplicações não confiáveis ou potencialmente maliciosas num contêiner, pode usar conjuntos de limites de capacidades para limitar os privilégios concedidos ao contêiner. Por exemplo, pode remover a capacidade CAP_SYS_ADMIN para evitar que o contêiner execute tarefas sensíveis de administração do sistema.
docker run --cap-drop=SYS_ADMIN -it untrusted-app /bin/bash
Segurança de Serviços Sensíveis
Se o seu contêiner estiver a executar um serviço sensível, como um banco de dados ou um servidor web, pode usar conjuntos de limites de capacidades para restringir o acesso do contêiner apenas aos recursos do sistema necessários. Isto ajuda a reduzir a superfície de ataque e a minimizar o impacto potencial de uma violação de segurança.
docker run --cap-drop=CHOWN --cap-drop=SETUID --cap-drop=SETGID -it secure-service /bin/bash
Conformidade e Requisitos Regulatórios
Em algumas indústrias, como a saúde ou as finanças, podem existir requisitos específicos de conformidade ou regulamentares relativos aos privilégios concedidos às aplicações. Os conjuntos de limites de capacidades podem ser usados para garantir que os seus contêineres Docker cumprem esses requisitos e aderem aos padrões de segurança necessários.
graph TD
A[Contêiner Docker] --> B[Conjunto de Limites de Capacidades]
B --> C[Aplicações Não Confiáveis]
B --> D[Serviços Sensíveis]
B --> E[Requisitos de Conformidade]
C --> F[Limitar Privilégios]
D --> G[Restringir Acesso]
E --> H[Cumprir Padrões de Segurança]
Tabela 1: Configurações de Exemplo de Conjuntos de Limites de Capacidades
| Caso de Utilização | Capacidades a Remover |
|---|---|
| Aplicações Não Confiáveis | CAP_SYS_ADMIN, CAP_SETUID, CAP_SETGID |
| Serviços Sensíveis | CAP_CHOWN, CAP_SETUID, CAP_SETGID |
| Requisitos de Conformidade | CAP_SYS_ADMIN, CAP_MKNOD, CAP_AUDIT_WRITE |
Compreendendo e configurando os conjuntos de limites de capacidades dos seus contêineres Docker, pode melhorar a segurança e o isolamento das suas aplicações, cumprir os requisitos de conformidade e reduzir a superfície de ataque potencial.
Resumo
No final deste tutorial, terá um conhecimento abrangente das capacidades do Docker e como configurar conjuntos de limites de capacidades. Irá aprender aplicações práticas para gerir estas capacidades, permitindo-lhe melhorar a segurança e o controlo das suas aplicações baseadas em Docker.



