Com a velocidade de desenvolvimento no Kubernetes, existem frequentemente novas funcionalidades de segurança para usar. Este documento descreve como proteger os seus clusters do Google Distributed Cloud.
Este documento dá prioridade a mitigações de segurança de elevado valor que requerem a sua ação no momento da criação do cluster. As funcionalidades menos críticas, as definições seguras por predefinição e as que podem ser ativadas após a criação do cluster são mencionadas mais adiante no documento. Para uma vista geral dos tópicos de segurança, reveja o artigo Segurança.
Lista de verificação
A seguinte lista de verificação de implementação realça as práticas recomendadas para proteger a implementação da plataforma dos clusters do GKE. Para mais informações sobre cada prática, consulte as secções neste documento.
Lista de verificação da implementação | Descrição |
---|---|
Identidade e controlo de acesso | Use privilégios da conta do vSphere: Proteja Google Cloud as contas de serviço: Configure o OpenID Connect (OIDC): Use espaços de nomes do Kubernetes e CABF para restringir o acesso: |
Proteção de dados | Encriptar máquinas virtuais do vSphere: Faça a gestão de Secrets: |
Proteção de rede | Restrinja o acesso à rede ao plano de controlo e aos nós: Use políticas de rede para restringir o tráfego: |
Segurança declarativa | Use o Policy Controller: |
Manutenção | Atualizações: Monitorize os boletins de segurança: |
Monitorização e registo | Defina opções para o registo: |
Identidade e controlo de acesso
Esta secção fornece informações sobre o controlo do acesso aos seus clusters.
Use privilégios da conta do vSphere
A conta de utilizador do vCenter que usa para instalar o Google Distributed Cloud tem de ter privilégios suficientes. Por exemplo, uma conta de utilizador à qual é atribuída a função de administrador do vCenter tem privilégios de acesso completo a todos os objetos do vCenter e fornece a um administrador do cluster do Google Distributed Cloud acesso total.
Recomendamos o princípio do menor privilégio, concedendo apenas os privilégios necessários para instalar com êxito o {product_name}. Predefinimos o conjunto mínimo de privilégios necessários para realizar a instalação, bem como os comandos necessários para conceder estas autorizações.
Proteja as Google Cloud contas de serviço
O Google Distributed Cloud requer várias Google Cloud contas de serviço. Durante a instalação, associa funções de gestão de identidade e de acesso a estas contas de serviço. Essas funções concedem privilégios específicos às contas de serviço no seu projeto. Algumas das contas de serviço podem ser geradas para si durante a instalação.
Configure a autenticação para utilizadores do cluster
Para configurar a autenticação de utilizadores para o seu cluster, pode usar o OpenID Connect (OIDC) ou o Lightweight Directory Access Protocol (LDAP).
Para mais informações, consulte o serviço de identidade do GKE.
Use namespaces do Kubernetes e RBAC para restringir o acesso
Para conceder às equipas acesso com privilégios mínimos ao Kubernetes, crie espaços de nomes do Kubernetes ou clusters específicos do ambiente. Atribua centros de custos e etiquetas adequadas a cada espaço de nomes para responsabilidade e reembolso. Conceda apenas aos programadores o nível de acesso aos respetivos espaços de nomes de que precisam para implementar e gerir as respetivas aplicações, especialmente em produção.
Mapeie as tarefas que os utilizadores têm de concluir em relação ao cluster e defina as autorizações necessárias para concluir cada tarefa. Para conceder autorizações ao nível do cluster e do espaço de nomes, use o RBAC do Kubernetes.
Além das autorizações para Google Cloud contas de serviço usadas para instalar o Google Distributed Cloud, o IAM não se aplica aos clusters do Google Distributed Cloud.
Para mais informações, consulte a seguinte documentação:
Proteção de dados
Esta secção fornece informações sobre a proteção dos seus dados.
Encriptar máquinas virtuais do vSphere
Os nós do cluster do Google Distributed Cloud são executados em máquinas virtuais (VMs) no seu cluster do vSphere. A Google recomenda vivamente que encripte todos os dados em repouso. Para o fazer no vSphere, siga o Guia de configuração e reforço de segurança do VMware vSphere 7 e as orientações de práticas recomendadas para encriptar VMs.
Isto tem de ser feito antes da instalação do Google Distributed Cloud.
Faça a gestão de segredos
Para oferecer uma camada adicional de proteção para dados confidenciais, como segredos do Kubernetes armazenados no etcd, configure um gestor de segredos integrado com clusters do Google Distributed Cloud.
Se estiver a executar cargas de trabalho em vários ambientes, pode preferir uma solução que funcione para o Google Kubernetes Engine e o Google Distributed Cloud. Se optar por usar um gestor de segredos externo, como o HashiCorp Vault, configure-o antes de integrar os seus clusters do Google Distributed Cloud.
Tem várias opções para a gestão de segredos:
- Pode usar segredos do Kubernetes nativamente no Google Distributed Cloud. Esperamos que os clusters estejam a usar a encriptação do vSphere para VMs, conforme descrito anteriormente, o que oferece proteção básica de encriptação em repouso para segredos. Por predefinição, os Secrets não são encriptados adicionalmente.
- Pode usar um gestor de segredos externo, como o HashiCorp Vault. Pode autenticar-se no HashiCorp através de uma conta de serviço do Kubernetes ou de uma Google Cloud conta de serviço.
Proteção de rede
Esta secção fornece informações sobre a proteção da sua rede.
Restrinja o acesso à rede ao plano de controlo e aos nós
Limite a exposição do painel de controlo e dos nós do cluster à Internet. Não é possível alterar estas opções após a criação do cluster. Por predefinição, os nós do cluster do Google Distributed Cloud são criados com endereços RFC 1918, e é uma prática recomendada não alterar esta definição. Implemente regras de firewall na sua rede no local para restringir o acesso ao plano de controlo.
Use políticas de rede para restringir o tráfego
Por predefinição, todos os serviços num cluster do Google Distributed Cloud podem comunicar entre si. Para obter informações sobre o controlo da comunicação de serviço a serviço, conforme necessário para as suas cargas de trabalho, consulte as secções seguintes.
Restringir o acesso à rede aos serviços torna muito mais difícil para os atacantes moverem-se lateralmente no cluster e oferece aos serviços alguma proteção contra a negação de serviço acidental ou deliberada. Existem duas formas recomendadas de controlar o tráfego:
- Para controlar o tráfego da camada 7 para os pontos finais das suas aplicações, use o Istio. Escolha esta opção se tiver interesse no equilíbrio de carga, na autorização de serviços, na limitação, na quota e nas métricas.
- Para controlar o tráfego da camada 4 entre Pods, use as políticas de rede do Kubernetes. Escolha esta opção se estiver à procura das capacidades básicas de controlo de acesso geridas pelo Kubernetes.
Pode ativar o Istio e a política de rede do Kubernetes depois de criar os clusters do Google Distributed Cloud. Pode usá-los em conjunto se precisar.
Para mais informações, consulte a seguinte documentação:
Segurança declarativa
Esta secção oferece recomendações para proteger os seus clusters.
Use o Controlador de políticas
Os controladores de admissão do Kubernetes são plug-ins que regem e aplicam a forma como um cluster do Kubernetes é usado. Os controladores de admissão são uma parte importante da abordagem de defesa em profundidade para reforçar a segurança do cluster.
A prática recomendada é usar o Policy Controller. O Policy Controller usa a estrutura de restrições da OPA para descrever e aplicar a política como CRDs. As restrições que aplica ao seu cluster são definidas em modelos de restrições, que são implementados nos seus clusters.
Para obter informações sobre como usar restrições do Policy Controller para alcançar muitas das mesmas proteções que as PodSecurityPolicies, com a capacidade adicional de testar as suas políticas antes de as aplicar, consulte o artigo Usar restrições para aplicar a segurança dos pods.
Para mais informações, consulte a seguinte documentação:
Restrinja a capacidade de as cargas de trabalho se automodificarem
Determinadas cargas de trabalho do Kubernetes, especialmente cargas de trabalho do sistema, têm autorização para se automodificarem. Por exemplo, algumas cargas de trabalho são dimensionadas automaticamente na vertical. Embora seja conveniente, isto pode permitir que um atacante que já comprometeu um nó avance ainda mais no cluster. Por exemplo, um atacante pode ter uma carga de trabalho no próprio nó que se altera para ser executada como uma conta de serviço mais privilegiada que existe no mesmo espaço de nomes.
Idealmente, as cargas de trabalho não devem ter autorização para se modificarem a si próprias. Quando a automodificação é necessária, pode limitar as autorizações aplicando restrições do Gatekeeper ou do Policy Controller, como NoUpdateServiceAccount da biblioteca de código aberto do Gatekeeper, que fornece várias políticas de segurança úteis.
Quando implementa políticas, normalmente, é necessário permitir que os controladores que gerem o ciclo de vida do cluster ignorem as políticas e os pipelines de registo e monitorização. Isto é necessário para que os controladores possam fazer alterações
ao cluster, como aplicar atualizações do cluster. Por exemplo, se implementar a política de NoUpdateServiceAccount
no Google Distributed Cloud, tem de definir os seguintes parâmetros no Constraint
:
parameters:
allowedGroups:
- system:masters
allowedUsers:
- system:serviceaccount:kube-system:monitoring-operator
- system:serviceaccount:kube-system:stackdriver-operator
- system:serviceaccount:kube-system:metrics-server-operator
- system:serviceaccount:kube-system:logmon-operator
Manutenção
Esta secção fornece informações sobre a manutenção dos seus clusters.
Atualize o Google Distributed Cloud
O Kubernetes introduz regularmente novas funcionalidades de segurança e fornece patches de segurança.
É responsável por manter os seus clusters do Google Distributed Cloud atualizados. Para cada lançamento, reveja as notas de lançamento. Além disso, planeie atualizar para novos lançamentos de patches todos os meses e versões secundárias a cada três meses. Saiba como atualizar os seus clusters.
Também é responsável pela atualização e proteção da infraestrutura do vSphere:
- Estabeleça um processo para aplicar patches e atualizações atempadamente às suas VMs
- Mantenha-se a par dos avisos de segurança da VMware mais recentes
- Siga as orientações sobre como aplicar patches aos hosts
Monitorize boletins de segurança
A equipa de segurança do GKE publica boletins de segurança para vulnerabilidades de gravidade elevada e crítica.
Estes boletins seguem um esquema de numeração de vulnerabilidades comum e têm links na página de boletins principal e nas notas de lançamento do Google Distributed Cloud. Google Cloud Google Cloud Cada página do boletim de segurança tem um feed RSS onde os utilizadores podem subscrever atualizações.
Quando é necessária a ação do cliente para resolver estas vulnerabilidades elevadas e críticas, a Google contacta os clientes por email. Além disso, a Google também pode contactar os clientes com contratos de apoio técnico através dos canais de apoio técnico.
Para mais informações, consulte a seguinte documentação:
Monitorização e registo
O Google Distributed Cloud inclui várias opções para o registo e a monitorização de clusters, incluindo serviços geridos baseados na nuvem, ferramentas de código aberto e compatibilidade validada com soluções comerciais de terceiros:
- Cloud Logging e Cloud Monitoring ativados por agentes no cluster implementados com o Google Distributed Cloud
- Configurações validadas com soluções de terceiros
Qualquer que seja a solução de registo que escolher com base nos requisitos empresariais, recomendamos vivamente que registe eventos e alertas relevantes para o encaminhamento num serviço de gestão de eventos e informações de segurança (SIEM) centralizado para a gestão de incidentes de segurança.
Para mais informações, consulte a seguinte documentação:
- Registo e monitorização
- Usar o registo e a monitorização
- Registo e monitorização de aplicações
- Monitorizar o Google Distributed Cloud com o Elastic Stack
- Faça stream de registos de Google Cloud para o Splunk