Header Ads

Como indexar as dependências de sua imagem Docker com o Syft

Syft é um utilitário CLI que gera uma lista de materiais de software (SBOM) para imagens de contêiner. Um SBOM é um catálogo de dependências usado por sua imagem. Dá a você visibilidade dos “ materiais ” que formam o sistema de arquivos de sua imagem.

Produzir um SBOM pode ajudá-lo a identificar cadeias de suprimentos de pacotes excessivamente complexos que o colocam em risco de ataques de confusão de dependência. Distribuir um SBOM ao lado de sua imagem informa aos usuários o que está abaixo da superfície. Isso fornece um ponto de partida útil para aumentar a segurança da cadeia de suprimentos.

Syft foi desenvolvido pela Anchore, que também oferece um mecanismo completo de varredura de contêineres. O Syft CLI é capaz de extrair listas de pacotes de imagens usando sistemas operacionais e linguagens de programação populares. Há suporte para imagens Docker e OCI.

Instalando Syft

Um script de instalação está disponível para baixar o binário Syft mais recente e adicioná-lo ao seu caminho:

 curl -sSfL https://raw. githubusercontent. com/anchore/syft/main/install. sh | sh -s - -b / usr / local / bin 

Os usuários de Mac também podem obter Syft do Homebrew adicionando o repositório anchore / syft e instalando o pacote syft.

Publicidade

Assim que tiver o Syft em seu sistema, execute o syft em seu terminal para exibir os comandos disponíveis. Você pode gerar conclusões para o seu shell executando a conclusão do syft.

Use a versão do syft para encontrar a versão da sua instalação. Verifique a página de tags do GitHub periodicamente para encontrar novos lançamentos e, em seguida, reutilize o script de instalação para fazer o download de cada atualização.

Digitalizando uma imagem

A funcionalidade do Syft está exposta atualmente por um único subcomando, os pacotes do syft. Passe uma tag de imagem para gerar um SBOM para:

 pacotes syft alpino: mais recentes 

Syft fará o download da imagem, verificará seu conteúdo e produzirá um catálogo de pacotes descobertos. A saída será mostrada como uma tabela em seu terminal. Cada resultado inclui o nome, a versão e o tipo do pacote detectado.

A lista de pacotes para esta imagem é curta. Por se tratar de uma imagem de base Alpine, os pacotes instalados são intencionalmente otimizados para fornecer a menor superfície possível. Imagens maiores podem conter centenas ou milhares de pacotes em vários formatos diferentes. Pode ser útil combinar o Syft com ferramentas de terminal Unix existentes, como grep e awk, para extrair os dados que você está procurando.

 imagem-exemplo dos pacotes syft: mais recente | grep example-package-to-find 

Tipos de pacotes suportados

Syft suporta muitos formatos de pacote populares nos principais sistemas operacionais e linguagens de programação. A lista inclui:

  • Pacotes de sistema operacional APK (Alpine), DEB (Debian) e RPM (Fedora).
  • Identificação de distribuições Linux nos favores Alpine, CentOS, Debian e RHEL.
  • Módulos Go
  • Java inJAR, EAR e WARvariations
  • pacotes NPM e Yarn
  • Python Wheels and Eggs
  • Pacotes Ruby

Publicidade

Embora nem todos os idiomas sejam cobertos, você &’ ainda se beneficiará da verificação no nível do sistema operacional, independentemente da pilha escolhida pelo seu aplicativo.

Alterando o formato de saída

O formato de saída padrão é chamado de tabela. Ele renderiza uma tabela de resultados baseada em colunas em seu terminal, criando uma nova linha para cada pacote detectado. Um formato legível alternativo é o texto que apresenta uma lista de pacotes com os campos Versão e Tipo aninhados em cada seção.

Syft também oferece suporte a vários formatos programáticos:

  • json – Salve os dados do pacote em uma estrutura JSON.
  • cyclonedx – Um relatório CycloneDX em formato XML.
  • spdx e spdx-json – Relatórios compatíveis com SPDX no formato tag-value ou JSON.

Usar um desses relatórios permite arquivar as descobertas em um arquivo para referência posterior:

 pacotes syft alpine: mais recente -o json > alpine-packages. json 

Os formatos padronizados CycloneDX e SPDX podem ajudar a integrar scans Syft em seus pipelines de CI / CD. Os dados podem ser acessados ​​por outras ferramentas do ecossistema que funcionam com listas de pacotes e resultados de SBOM.

O Syft também se integra com o localizador de vulnerabilidades do sistema de arquivos de contêiner independente da Grype, Anchore. Os dados do Syft podem ser alimentados diretamente no Grype se você usar o formato de saída JSON.

 imagem de exemplo dos pacotes do syft: mais recente -o json > sbom. json grype sbom: ./ sbom. json 

Grype irá comparar a lista de pacotes com seu índice de vulnerabilidades conhecidas. Ele destacará os pacotes que contêm problemas, oferecendo a você um ponto de partida imediato para melhorar sua postura de segurança.

Usando outras fontes de imagem

Syft pode usar imagens de outras fontes além de registros públicos do Docker. Você pode fazer referência a qualquer imagem compatível com OCI, por meio de uma marca de registro ou como um tar de imagem salvo. Caminhos para arquivos de imagens podem ser entregues diretamente ao Syft:

 imagem docker salvar minha imagem: mais recente > pacotes syft my-image. tar ./my-image. tar

Publicidade

Syft também funciona com registros privados do Docker. Ele usa suas credenciais existentes em seu arquivo ~ / . docker / config. json:

{" auths & quot ;: {" registry. example. com & quot ;: {" nome de usuário & quot ;: " & quot ;, " senha & quot ;: " " }}}

Embora o Syft se concentre em varreduras de imagens de contêiner, ele também pode criar um SBOM para caminhos de sistema de arquivos arbitrários. Você pode usar o Syft para indexar os pacotes do seu host, verificando os diretórios que normalmente contêm binários e bibliotecas de software:

 diretório de pacotes syft: / usr / bin 

Você deve adicionar explicitamente o esquema dir: se estiver fazendo referência a um caminho fora do seu diretório de trabalho. Caso contrário, o Syft tentará interpretá-lo como uma referência de tag de imagem.

Conclusão

O Syft extrai listas de pacotes de suas imagens de contêiner. Os dados gerados atuam como um SBOM para sua imagem, aumentando sua consciência sobre o comprimento da sua cadeia de suprimentos.

Syft é distribuído como um único binário que produz relatórios em vários formatos diferentes. Ele pode ser integrado prontamente a sistemas CI / CD para fazer upload de um artefato SBOM como parte de seu pipeline de criação de imagem. Isso aumenta a responsabilidade e auxilia nas trilhas de auditoria, registrando a lista completa de software de cada imagem no momento em que é produzida.

Publicidade

Adicionar scans do Syft ao seu fluxo de trabalho o mantém informado sobre os pacotes que você &’ está usando. Depois de obter essas informações, você pode começar a avaliar cada pacote para determinar se ele é realmente necessário. Se você encontrar muitos pacotes que não são usados ​​por sua carga de trabalho, considere mudar para uma imagem de base mínima e colocar em camadas apenas o software essencial na parte superior.

Nenhum comentário