Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
kubeaudit — kubeaudit ajuda você a auditar seus clusters Kubernetes contra controles de segurança comuns. | Kitploit
Ferramentas/GitHubGitHub/shopify/kubeaudit
Segurança de Infraestrutura em NuvemScanners de VulnerabilidadesSegurança de ContêineresAuditoria de ConfiguraçãoSegurança na NuvemDevSecOpsConfiguração IncorretaArchived
GitHubshopify/kubeaudit

kubeaudit

kubeaudit ajuda você a auditar seus clusters Kubernetes contra controles de segurança comuns.

Ver Repositório
1.9k18921há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Build Status Go Report Card GoDoc

Agora é necessário que os clusters executem Kubernetes >=1.19.

As labels de override com anotações kubernetes.io não registradas serão descontinuadas. Em breve será obrigatório usar kubeaudit.io em vez disso. Consulte esta discussão para mais contexto.

🚨 Aviso de Descontinuação 🚨

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 ☁️ 🔒 💪

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:

  • executar como não-root
  • usar um sistema de arquivos raiz somente leitura
  • remover capacidades perigosas, não adicionar novas
  • não executar como privilegiado
  • e mais!

tl;dr. O kubeaudit garante que você implante contêineres seguros!

Pacote

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.

Interface de Linha de Comando (CLI)

  • Instalação
  • Início Rápido
  • Resultados da Auditoria
  • Comandos
  • Arquivo de Configuração
  • Sobrescrever Erros
  • Contribuindo

Instalação

Brew

root@kitploit:~
brew install kubeaudit

Baixar um binário

O Kubeaudit possui lançamentos oficiais que são abençoados e estáveis: Lançamentos oficiais

Construção DIY

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:

root@kitploit:~
go get -v github.com/Shopify/kubeaudit

Comece a usar o kubeaudit com o Início Rápido ou veja todos os comandos suportados.

Plugin do Kubectl

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

  • executar make plugin e ter $GOPATH/bin disponível em seu path.

ou

  • renomear o binário para kubectl-audit e tê-lo disponível em seu path.

Docker

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.

Início Rápido

O kubeaudit possui três modos:

  1. Modo Manifesto
  2. Modo Local
  3. Modo Cluster

Modo Manifesto

Se um arquivo de manifesto Kubernetes for fornecido usando a flag -f/--manifest, o kubeaudit auditará o arquivo de manifesto.

Exemplo de comando:

root@kitploit:~
kubeaudit all -f "/caminho/para/manifest.yml"

Exemplo de saída:

root@kitploit:~
$ 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:

root@kitploit:~
Todas as verificações concluídas. 0 vulnerabilidades de alto risco encontradas

Autocorreção

O modo manifesto também suporta a correção automática de todos os problemas de segurança usando o comando autofix:

root@kitploit:~
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.

root@kitploit:~
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.

root@kitploit:~
kubeaudit autofix -k "/caminho/para/kubeaudit-config.yml" -f "/caminho/para/manifest.yml" -o "/caminho/para/fixo"

Modo Cluster

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:

root@kitploit:~
kubeaudit all

Modo Local

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.

root@kitploit:~
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/

Resultados da Auditoria

O kubeaudit produz resultados com três níveis de gravidade:

  • Error: Um problema de segurança ou configuração inválida do kubernetes
  • Warning: Uma recomendação de melhor prática
  • Info: Informativo, nenhuma ação necessária. Inclui resultados que foram sobrescritos

O 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:

root@kitploit:~
kubeaudit all -f caminho-para-meu-arquivo.yaml --format="sarif" > exemplo.sarif

Se houver resultados de nível de gravidade error, o kubeaudit sairá com código de saída 2. Isso pode ser alterado usando a flag --exitcode/-e.

Para todas as formas de personalização do kubeaudit, veja Flags Globais.

Comandos

ComandoDescriçãoDocumentação
allExecuta todos os auditores disponíveis, ou aqueles especificados usando um config do kubeaudit.docs
autofixCorrige automaticamente problemas de segurança.docs
versionExibe a versão atual do kubeaudit.

Auditores

Os auditores também podem ser executados individualmente.

ComandoDescriçãoDocumentação
apparmorEncontra contêineres executando sem AppArmor.docs
asatEncontra pods usando uma conta de serviço padrão montada automaticamentedocs
capabilitiesEncontra contêineres que não removem as capacidades recomendadas ou adicionam novas.docs
deprecatedapisEncontra qualquer recurso definido com uma versão de API obsoleta.docs
hostnsEncontra contêineres que têm HostPID, HostIPC ou HostNetwork habilitados.docs
imageEncontra contêineres que não usam a versão desejada de uma imagem (através da tag) ou usam uma imagem sem tag.docs
limitsEncontra contêineres que excedem os limites especificados de CPU e memória ou não especificam nenhum.docs
mountsEncontra contêineres que têm caminhos sensíveis do host montados.docs
netpolsEncontra namespaces que não têm uma política de rede default-deny.

Flags Globais

CurtaLongaDescrição
--formatO formato de saída a ser usado (um de "sarif", "pretty", "logrus", "json") (padrão é "pretty")
--kubeconfigCaminho para o arquivo de configuração local do Kubernetes. Usado apenas no modo local (padrão é $HOME/.kube/config)
-c--contextO nome do contexto do kubeconfig a ser usado
-f--manifestCaminho para a configuração yaml a ser auditada. Usado apenas no modo manifesto. Você pode usar - para ler da entrada padrão.
-n--namespaceAuditar apenas recursos no namespace especificado. Não suportado atualmente no modo manifesto.
-g--includegeneratedIncluir recursos gerados na varredura (como Pods gerados por deployments). Se você quiser que o kubeaudit produza resultados para recursos gerados (por exemplo, se você tiver recursos personalizados ou quiser capturar recursos órfãos onde o recurso proprietário não existe mais), você pode usar esta flag.
-m--minseverityDefine o nível de severidade mais baixo a ser relatado (um de "error", "warning", "info") (padrão é "info")
-e--exitcodeCódigo de saída a ser usado se houver resultados com severidade "error". Convencionalmente, 0 é usado para sucesso e todos os códigos não zero para erro. (padrão é 2)
--no-colorNão usar cores na saída (padrão é falso)

Arquivo de Configuração

O config do kubeaudit pode ser usado para duas coisas:

  1. Habilitar apenas alguns auditores
  2. Especificar configuração para auditores

Qualquer configuração que possa ser especificada usando flags para os auditores individuais pode ser representada usando o config.

O config possui o seguinte formato:

root@kitploit:~
enabledAuditors:
  # Auditores são habilitados por padrão se não forem explicitamente definidos como "false"
  apparmor: false
  asat: false
  capabilities: true
  deprecatedapis: true
  hostns: true
  image: true
  limits: true
  mounts: true
  netpols: true
  nonroot: true
  privesc: true
  privileged: true
  rootfs: true
  seccomp: true
auditors:
  capabilities:
    # adicione capacidades necessárias à lista de adição, para que o kubeaudit não reporte erros
    allowAddList: ['AUDIT_WRITE', 'CHOWN']
  deprecatedapis:
    # Se nenhuma versão for especificada e o auditor 'deprecatedapis' estiver habilitado, resultados WARN
    # serão gerados para os recursos definidos com uma API obsoleta.
    currentVersion: '1.22'
    targetedVersion: '1.25'
  image:
    # Se nenhuma imagem for especificada e o auditor 'image' estiver habilitado, resultados WARN
    # serão gerados para contêineres que usam uma imagem sem tag
    image: 'myimage:mytag'
  limits:
    # Se nenhum limite for especificado e o auditor 'limits' estiver habilitado, resultados WARN
    # serão gerados para contêineres que não têm limites de cpu ou memória especificados
    cpu: '750m'
    memory: '500m'

Para mais detalhes sobre cada auditor, incluindo uma descrição da configuração específica do auditor no config, veja a Documentação dos Auditores.

Nota: O config do kubeaudit não é o mesmo que o arquivo kubeconfig especificado com a flag --kubeconfig, que se refere ao arquivo de configuração do Kubernetes (veja Modo Local). Observe também que apenas os comandos all e autofix suportam o uso de um config do kubeaudit. Não funcionará com outros comandos.

Nota: Se flags forem usadas em combinação com o arquivo de configuração, as flags terão precedência.

Sobrescrever Erros

Problemas de segurança podem ser ignorados para contêineres ou pods específicos adicionando labels de sobrescrita. Isso significa que o auditor produzirá resultados info em vez de resultados error e o nome do resultado da auditoria terá Allowed anexado. As labels estão documentadas na documentação de cada auditor, mas o formato geral para auditores que suportam sobrescritas é o seguinte:

Uma label de sobrescrita consiste em uma key e um value.

A key é uma combinação do tipo de sobrescrita (contêiner ou pod) e um identificador de sobrescrita que é único para cada auditor (veja a documentação para o auditor específico). A key pode assumir uma de duas formas, dependendo do tipo de sobrescrita:

  1. Sobrescritas de contêiner, que sobrescrevem o auditor para aquele contêiner específico, são formatadas da seguinte forma:
root@kitploit:~
container.kubeaudit.io/[nome do contêiner].[identificador de sobrescrita]
  1. Sobrescritas de pod, que sobrescrevem o auditor para todos os contêineres dentro do pod, são formatadas da seguinte forma:
root@kitploit:~
kubeaudit.io/[identificador de sobrescrita]

Se o value for definido como uma string não vazia, ele será exibido no resultado info como OverrideReason:

root@kitploit:~
$ kubeaudit asat -f "auditors/asat/fixtures/service-account-token-true-allowed.yml"

---------------- Resultados para ---------------

  apiVersion: v1
  kind: ReplicationController
  metadata:
    name: replicationcontroller
    namespace: service-account-token-true-allowed

--------------------------------------------

-- [info] AutomountServiceAccountTokenTrueAndDefaultSAAllowed
   Mensagem: Resultado da auditoria sobrescrito: 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.
   Metadados:
      OverrideReason: SomeReason

Conforme especificação do Kubernetes, value deve ter 63 caracteres ou menos e deve ser vazio ou começar e terminar com um caractere alfanumérico ([a-z0-9A-Z]) com traços (-), underscores (_), pontos (.), e alfanuméricos entre eles.

Várias labels de sobrescrita (para vários auditores) podem ser adicionadas ao mesmo recurso.

Veja a documentação específica do auditor para o auditor que você deseja sobrescrever para exemplos.

Para aprender mais sobre labels, veja https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/

Contribuindo

Se você deseja corrigir um bug, contribuir com uma funcionalidade ou apenas corrigir um erro de digitação, sinta-se à vontade para fazê-lo, desde que siga nosso Código de Conduta.

  1. Crie seu próprio fork!
  2. Obtenha o código fonte: go get github.com/Shopify/kubeaudit
  3. Vá para o código fonte: cd $GOPATH/src/github.com/Shopify/kubeaudit
  4. Adicione seu repositório fork como um fork: git remote add fork https://github.com/voce-e-incrivel/kubeaudit
  5. Crie sua branch de funcionalidade: git checkout -b funcionalidade-nova-incrivel
  6. Instale o Kind
  7. Execute os testes para ver se tudo está funcionando como esperado: USE_KIND=true make test (para executar os testes sem Kind: make test)
  8. Commit suas alterações: git commit -am 'Adiciona funcionalidade incrível'
  9. Envie para a branch: git push fork
  10. Assine o Contrato de Licença do Contribuidor
  11. Submeta um PR (Todos os PRs devem ser rotulados com 🐛 (Correção de bug), ✨ (Nova funcionalidade), 📖 (Atualização de documentação), ou ⚠️ (Mudanças que quebram compatibilidade) )
  12. ???
  13. Lucro

Note que se você não assinou o CLA antes de abrir seu PR, você pode reexecutar a verificação adicionando um comentário ao PR que diga "I've signed the CLA!"!

Baixar ferramenta
docs
nonrootEncontra contêineres executando como root.docs
privescEncontra contêineres que permitem escalonamento de privilégios.docs
privilegedEncontra contêineres executando como privilegiado.docs
rootfsEncontra contêineres que não têm um sistema de arquivos somente leitura.docs
seccompEncontra contêineres executando sem Seccomp.docs