
kubeaudit ajuda você a auditar seus clusters Kubernetes contra controles de segurança comuns.
Agora é necessário que os clusters executem Kubernetes >=1.19.
As labels de override com anotações
kubernetes.ionão registradas serão descontinuadas. Em breve será obrigatório usarkubeaudit.ioem vez disso. Consulte esta discussão para mais contexto.
O Kubeaudit está planejado para ser descontinuado até outubro de 2024.
Estamos ativamente buscando mantenedores interessados em assumir a administração deste projeto. Se você tem paixão por continuar seu desenvolvimento e manutenção, entre em contato conosco.
Para usuários que buscam alternativas, recomendamos a transição para o Kubebench, que oferece funcionalidade semelhante e é mantido ativamente.
Agradecemos à comunidade por suas contribuições e apoio.
kubeaudit é uma ferramenta de linha de comando e um pacote Go para auditar clusters Kubernetes em relação a diversas preocupações de segurança, tais como:
tl;dr. O kubeaudit garante que você implante contêineres seguros!
Para usar o kubeaudit como um pacote Go, consulte a documentação do pacote.
O restante deste README focará em como usar o kubeaudit como uma ferramenta de linha de comando.
brew install kubeaudit
O Kubeaudit possui lançamentos oficiais que são abençoados e estáveis: Lançamentos oficiais
A branch main pode ter funcionalidades mais recentes que as versões estáveis. Se você precisar de uma funcionalidade mais nova ainda não incluída em um lançamento, certifique-se de usar a versão mais recente do Go e execute o seguinte:
go get -v github.com/Shopify/kubeaudit
Comece a usar o kubeaudit com o Início Rápido ou veja todos os comandos suportados.
Pré-requisito: kubectl v1.12.0 ou posterior
Com o kubectl v1.12.0 introduzindo plugabilidade fácil de funções externas, o kubeaudit pode ser invocado como kubectl audit através de
make plugin e ter $GOPATH/bin disponível em seu path.ou
kubectl-audit e tê-lo disponível em seu path.Não publicamos mais imagens no Docker Hub (desde que o Docker Hub descontinuou as organizações Free Team). Por enquanto, imagens antigas ainda estão disponíveis, mas podem parar de funcionar a qualquer momento. Em breve começaremos a publicar imagens no registro de contêineres do Github.
Para executar o kubeaudit como um job em seu cluster, veja Executando kubeaudit em um cluster.
O kubeaudit possui três modos:
Se um arquivo de manifesto Kubernetes for fornecido usando a flag -f/--manifest, o kubeaudit auditará o arquivo de manifesto.
Exemplo de comando:
kubeaudit all -f "/caminho/para/manifest.yml"
Exemplo de saída:
$ kubeaudit all -f "internal/test/fixtures/all_resources/deployment-apps-v1.yml"
---------------- Resultados para ---------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment
namespace: deployment-apps-v1
--------------------------------------------
-- [error] AppArmorAnnotationMissing
Mensagem: Anotação AppArmor ausente. A anotação 'container.apparmor.security.beta.kubernetes.io/container' deve ser adicionada.
Metadados:
Container: container
MissingAnnotation: container.apparmor.security.beta.kubernetes.io/container
-- [error] AutomountServiceAccountTokenTrueAndDefaultSA
Mensagem: Conta de serviço padrão com token montado. automountServiceAccountToken deve ser definido como 'false' ou uma conta de serviço não padrão deve ser usada.
-- [error] CapabilityShouldDropAll
Mensagem: Capacidade não definida como ALL. Idealmente, você deve remover todas as capacidades e adicionar as específicas que precisa na lista de adição.
Metadados:
Container: container
Capability: AUDIT_WRITE
...
Se nenhum erro com uma gravidade mínima especificada for encontrado, o seguinte é retornado:
Todas as verificações concluídas. 0 vulnerabilidades de alto risco encontradas
O modo manifesto também suporta a correção automática de todos os problemas de segurança usando o comando autofix:
kubeaudit autofix -f "/caminho/para/manifest.yml"
Para gravar o manifesto corrigido em um novo arquivo em vez de modificar o arquivo fonte, use a flag -o/--output.
kubeaudit autofix -f "/caminho/para/manifest.yml" -o "/caminho/para/fixo"
Para corrigir um manifesto com base em regras personalizadas especificadas em um arquivo de configuração do kubeaudit, use a flag -k/--kconfig.
kubeaudit autofix -k "/caminho/para/kubeaudit-config.yml" -f "/caminho/para/manifest.yml" -o "/caminho/para/fixo"
O kubeaudit pode detectar se está sendo executado dentro de um contêiner em um cluster. Se sim, ele tentará auditar todos os recursos Kubernetes nesse cluster:
kubeaudit all
O kubeaudit tentará conectar-se a um cluster usando o arquivo kubeconfig local ($HOME/.kube/config). Um local diferente do kubeconfig pode ser especificado usando a flag --kubeconfig. Para especificar um contexto do kubeconfig, use a flag -c/--context.
kubeaudit all --kubeconfig "/caminho/para/config" --context meu_cluster
Para mais informações sobre arquivos de configuração do kubernetes, veja https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
O kubeaudit produz resultados com três níveis de gravidade:
Error: Um problema de segurança ou configuração inválida do kubernetesWarning: Uma recomendação de melhor práticaInfo: Informativo, nenhuma ação necessária. Inclui resultados que foram sobrescritosO nível mínimo de gravidade pode ser definido usando a flag --minSeverity/-m.
Por padrão, o kubeaudit exibirá os resultados de forma legível por humanos. Se a saída for destinada a processamento posterior, pode ser configurada para saída JSON usando a flag --format json. Para exibir os resultados como logs (o padrão anterior) use --format logrus. Alguns formatos de saída incluem cores para facilitar a leitura no terminal. Para desabilitar cores (por exemplo, se você estiver enviando a saída para um arquivo de texto), você pode usar a flag --no-color.
Você pode gerar um relatório kubeaudit em SARIF usando a flag --format sarif. Para gravar os resultados SARIF em um arquivo, você pode redirecionar a saída com >. Por exemplo:
kubeaudit all -f caminho-para-meu-arquivo.yaml --format="sarif" > exemplo.sarif