Política como código com Kyverno
O Kyverno é uma ferramenta open-source que permite definir políticas de validação, mutação e geração de recursos Kubernetes. Com o Kyverno, você pode definir políticas de segurança, conformidade e boas práticas de forma declarativa.
As políticas do Kyverno são definidas em objetos do tipo ClusterPolicy
e Policy
. Um ClusterPolicy
é aplicado a todos os namespaces do cluster, enquanto um Policy
é aplicado a um namespace específico.
Instalação
Para instalar o Kyverno, execute o seguinte comando:
Para definir a utilização do Kyverno em modo HA (High Availability), execute o seguinte comando:
Políticas
As políticas aplicadas para esse projeto estão disponíveis no diretório kyverno
na raiz do repositório. As políticas são definidas em arquivos YAML e aplicadas ao cluster com o comando kubectl apply -f kyverno/
.
São elas:
check-deprecated-api.yaml
: Verifica se os recursos estão utilizando versões de API descontinuadas.dissalow-latest-tag.yaml
: Verifica se os recursos estão utilizando a taglatest
em imagens de containers. A taglatest
não é recomendada em ambientes de produção porque torna o versionamento da imagem ambíguo, o que pode causar problemas de compatibilidade, dificuldades de rastreamento e problemas de segurança.dissalow-secrets-from-env-vars.yaml
: Verifica se os recursos estão utilizando variáveis de ambiente para passar credenciais sensíveis. O uso de variáveis de ambiente para passar credenciais sensíveis é uma prática insegura, pois as variáveis de ambiente são visíveis para qualquer processo em execução no mesmo host.no-root-containers.yaml
: Verifica se os recursos estão utilizando containers com usuárioroot
. Utilizar o usuárioroot
em containers é uma prática insegura, pois permite que o container tenha acesso total ao host. Por definição, um container deve ter todos os processos isolados, isso vale para o usuário também.require-labels.yaml
: Verifica se os recursos possuem as labelsapp
eenv
. Essas labels são úteis para identificar e agrupar recursos relacionados.require-probes.yaml
: Verifica se os recursos possuem os probesliveness
ereadiness
. Os probes são essenciais para garantir a disponibilidade e a confiabilidade dos recursos.require-requests-limits.yaml
: Verifica se os recursos possuem requests e limits definidos para CPU e memória. Definir requests e limits é essencial para garantir a previsibilidade, a eficiência dos recursos e economizar custos.verify-image.yaml
: Verifica se as imagens possuem assinatura digital. Verificar a assinatura digital das imagens é essencial para garantir a autenticidade e a integridade das imagens.
Para aplicar as polícas mencionadas acima, execute o seguinte comando:
Last updated