Este documento explica as vantagens e as limitações do isolamento de nós num cluster do Kubernetes isolado do ar do Google Distributed Cloud (GDC). O isolamento de nós com pools de nós dedicados melhora a segurança do cluster, dando-lhe um controlo preciso sobre onde os pods específicos são executados no cluster.
O isolamento da carga de trabalho oferece algumas vantagens, como:
- Risco reduzido de ataques de escalada de privilégios no seu cluster do Kubernetes.
- Mais controlo sobre agrupamentos que requerem recursos adicionais.
Para estes casos, considere isolar as cargas de trabalho do contentor em pools de nós dedicados para ter mais controlo e otimização. Certifique-se de que também considera as limitações para tomar uma decisão informada sobre o custo de manutenção adicional que o isolamento de nós requer.
Este documento destina-se a públicos como os administradores de TI no grupo de administradores da plataforma, que são responsáveis pela gestão dos conjuntos de nós de um cluster do Kubernetes, e os programadores de aplicações no grupo de operadores de aplicações, que são responsáveis pela gestão das cargas de trabalho de contentores. Para mais informações, consulte a documentação sobre públicos-alvo para GDC com isolamento de ar.
Por que motivo devo isolar as minhas cargas de trabalho?
Embora não seja obrigatório, dedicar pools de nós a cargas de trabalho de contentores específicas pode evitar potenciais problemas. No entanto, esta abordagem exige mais gestão e, muitas vezes, não é essencial.
Os clusters do Kubernetes usam cargas de trabalho privilegiadas geridas pelo GDC para ativar capacidades e funcionalidades específicas do cluster, como a recolha de métricas. Estas cargas de trabalho recebem autorizações especiais para serem executadas corretamente no cluster.
As cargas de trabalho que implementa nos seus nós podem ser potencialmente comprometidas por uma entidade maliciosa. A execução destas cargas de trabalho juntamente com cargas de trabalho privilegiadas geridas pelo GDC significa que um atacante que consiga sair de um contentor comprometido pode usar as credenciais da carga de trabalho privilegiada no nó para aumentar os privilégios no seu cluster.
Os conjuntos de nós dedicados também são úteis quando tem de agendar pods que requerem mais recursos do que outros, como mais memória ou mais espaço no disco local.
Pode usar os seguintes mecanismos para agendar as suas cargas de trabalho num conjunto de nós dedicado:
- Taints de nós: informa o cluster do Kubernetes para evitar o agendamento de cargas de trabalho em nós específicos sem uma tolerância correspondente.
- Afinidade de nós: informa o cluster do Kubernetes para agendar pods específicos em nós dedicados.
O isolamento de nós é um mecanismo de defesa em profundidade avançado que só deve usar juntamente com outras funcionalidades de isolamento, como contentores com privilégios mínimos e contas de serviço. O isolamento de nós pode não abranger todos os caminhos de encaminhamento e nunca deve ser usado como limite de segurança principal.
Como funciona o isolamento de nós
Para implementar o isolamento de nós para as suas cargas de trabalho, tem de fazer o seguinte:
Contamine e etiquete um conjunto de nós para as suas cargas de trabalho.
Atualize as suas cargas de trabalho com a regra de tolerância e afinidade de nós correspondente.
Este guia pressupõe que começa com um node pool no seu cluster. A utilização da afinidade de nós, além das restrições de nós, não é obrigatória, mas recomendamos que o faça porque beneficia de um maior controlo sobre o agendamento.
Recomendações e práticas recomendadas
Depois de configurar o isolamento de nós, recomendamos que faça o seguinte:
Ao criar novos node pools, impeça que a maioria das cargas de trabalho geridas pela GDC sejam executadas nesses nós adicionando a sua própria marca de contaminação a esses node pools.
Sempre que implementar novas cargas de trabalho no cluster, como quando instalar ferramentas de terceiros, audite as autorizações que os pods requerem. Sempre que possível, evite implementar cargas de trabalho que usem autorizações elevadas em nós partilhados.
Limitações
Aplicam-se as seguintes limitações aos pods executados num conjunto de nós isolado:
Os atacantes continuam a poder iniciar ataques de negação de serviço (DoS) a partir do nó comprometido.
Se implementar recursos
DaemonSet
com autorizações elevadas e que possam tolerar qualquer contaminação, esses pods podem ser um caminho para a escalada de privilégios a partir de um nó comprometido.Os nós comprometidos ainda podem ler muitos recursos, incluindo todos os pods e namespaces no cluster.
Os nós comprometidos podem aceder a segredos e credenciais usados por todos os pods em execução nesse nó.
Os nós comprometidos podem continuar a ignorar as políticas de rede de saída.
A utilização de um node pool separado para isolar as cargas de trabalho pode afetar a eficiência de custos, o dimensionamento automático e a utilização de recursos.
Algumas cargas de trabalho geridas pelo GDC têm de ser executadas em todos os nós do cluster e estão configuradas para tolerar todas as manchas.
O que se segue?
- Isole cargas de trabalho de contentores em node pools dedicados
- Vista geral do cluster do Kubernetes
- Cargas de trabalho de contentores no GDC