O exame Certified Kubernetes Security Specialist (CKS) é uma avaliação baseada em desempenho e independente de fornecedor, focada em tarefas de segurança do Kubernetes realizadas via linha de comando em clusters Kubernetes. Atualmente, utiliza-se o Kubernetes v1.35, mas a Linux Foundation alinha o ambiente a uma versão secundária (minor release) recente do Kubernetes; portanto, verifique a versão atual e o conteúdo programático antes de basear-se em um comando, recurso ou peso de domínio específico. Os seis domínios são: Configuração do Cluster (15%), Endurecimento (Hardening) do Cluster (15%), Endurecimento do Sistema (10%), Minimização de Vulnerabilidades em Microsserviços (20%), Segurança da Cadeia de Suprimentos (20%) e Monitoramento, Logs e Segurança em Tempo de Execução (20%). O exame é baseado em desempenho e supervisionado online: você deve resolver várias tarefas via linha de comando em um período de duas horas, sendo pré-requisito ter sido aprovado anteriormente no exame Certified Kubernetes Administrator (CKA).
A seguir, podemos examinar o fluxo de tarefas e a distribuição atual dos domínios.
Uma tarefa do CKS é considerada concluída quando o estado de segurança solicitado existe e você possui evidências de que o controle relevante do Kubernetes o aplica. Memorizar um comando pode criar um objeto rapidamente, mas não garante que uma carga de trabalho (workload) seja selecionada por uma política, que uma identidade tenha apenas a permissão de API pretendida ou que uma regra de detecção observe o comportamento esperado em tempo de execução. Leia os requisitos referentes ao recurso de destino, ao limite de segurança e ao sinal de verificação necessário antes de alterar a configuração.
Sob pressão de tempo, produza artefatos pequenos e passíveis de inspeção. Eles geralmente incluem um manifesto que declara o estado pretendido, um comando de escopo restrito que o aplica ou inspeciona, e uma saída que mostra o objeto ou comportamento após a alteração. Um manifesto comprova a configuração enviada à API do Kubernetes. A saída de um comando comprova apenas o estado do recurso ou a resposta observada naquele momento, dentro do cluster e do namespace selecionados. Isoladamente, nenhum deles prova que todos os caminhos estão seguros.
Utilize um ciclo repetível. Primeiro, identifique o contexto ativo do cluster e o namespace de destino. Em seguida, inspecione os objetos e rótulos (labels) existentes que determinam a seleção de políticas ou o escopo de autorização. Aplique a menor alteração possível que atenda à condição estabelecida e, depois, verifique o resultado com uma observação condizente com essa condição. Por fim, preserve contexto suficiente para desfazer uma alteração incorreta, especialmente ao modificar configurações de todo o cluster, arquivos de nós ou configurações do servidor de API.
Regra operacional Dê preferência a evidências vinculadas ao limite solicitado em vez de comandos familiares que alteram recursos não relacionados.
Ao longo deste curso, protegeremos uma carga de trabalho fictícia de varejo no namespace shop. Um namespace é um escopo do Kubernetes que agrupa recursos associados a namespaces e pode formar um limite de autorização e de políticas. A carga de trabalho possui um caminho de entrada (ingress) acessível externamente para orders-api:1.0 na porta 8080; essa aplicação chama payments-api:1.0 na porta 8443; a payments-api, por sua vez, utiliza o orders-db. Neste modelo, nenhuma carga de trabalho, exceto a de entrada (ingress), é acessível a partir de fora do cluster.
Cada aplicação utiliza sua própria ServiceAccount, uma identidade do Kubernetes que um Pod pode usar ao chamar a API do Kubernetes. A orders-api utiliza a orders-sa, enquanto a payments-api utiliza a payments-sa. Manter essas identidades distintas nos permite testar a autorização de privilégio mínimo separadamente da acessibilidade de rede, da procedência da imagem, das restrições de Pod e dos sinais de tempo de execução. A regra reutilizável consiste em identificar o caminho da carga de trabalho e o limite de identidade antes de selecionar um controle de segurança.
Agora podemos traçar o limite da carga de trabalho que defesas posteriores deverão preservar.