Amazon Inspector SBOM Generator - Amazon Inspector

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Amazon Inspector SBOM Generator

Uma lista de materiais de software (SBOM) é uma lista formalmente estruturada de componentes, bibliotecas e módulos necessários para criar um software. O gerador Amazon Inspector SBOM (Sbomgen) é uma ferramenta que produz um SBOM para arquivos, imagens de contêineres, diretórios, sistemas locais e compilados Go and Rust binários. Sbomgen verifica arquivos que contêm informações sobre pacotes instalados. Quando Sbomgen encontra um arquivo relevante, ele extrai nomes de pacotes, versões e outros metadados. Sbomgen em seguida, transforma os metadados do pacote em um CycloneDX ESTRONDO. Você pode usar: Sbomgen para gerar o CycloneDX SBOM como um arquivo ou em STDOUT e envie para o Amazon SBOMs Inspector para detecção de vulnerabilidades. Você também pode usar Sbomgen como parte da integração de CI/CD, que digitaliza imagens de contêineres automaticamente como parte do seu pipeline de implantação.

Tipos de pacotes compatíveis

Sbomgen coleta inventário para os seguintes tipos de pacotes:

  • Alpine APK

  • Debian/Ubuntu DPKG

  • Red Hat RPM

  • C#

  • Go

  • Java

  • Node.js

  • PHP

  • Python

  • Ruby

  • Rust

Verificações de configuração de imagens de contêiner compatíveis

Sbomgen pode escanear Dockerfiles autônomos e criar histórico a partir de imagens existentes em busca de problemas de segurança. Para ter mais informações, consulte Amazon Inspector Dockerfile checks.

Instalar Sbomgen

Sbomgen está disponível somente para sistemas operacionais Linux.

Você deve ter... Docker instalado se você quiser Sbomgen para analisar imagens em cache localmente. Docker não é necessário analisar imagens exportadas como .tar arquivos ou imagens hospedadas em registros de contêineres remotos.

O Amazon Inspector recomenda que você execute Sbomgen de um sistema com pelo menos as seguintes especificações de hardware:

  • CPU de 4 núcleos

  • RAM de 8 GB

Para instalar Sbomgen
  1. Baixe o mais recente Sbomgen arquivo zip do URL correto para sua arquitetura:

    Linux AMD64: https://amazon-inspector-sbomgen.s3.amazonaws.com/latest/linux/amd64/inspector-sbomgen.zip

    Linux ARM64: https://amazon-inspector-sbomgen.s3.amazonaws.com/latest/linux/arm64/inspector-sbomgen.zip

    Como alternativa, você pode baixar versões anteriores do arquivo zip do Amazon Inspector SBOM Generator.

  2. Descompacte o download usando o seguinte comando:

    unzip inspector-sbomgen.zip

  3. Verifique os seguintes arquivos no diretório extraído:

    • inspector-sbomgen— Esta é a ferramenta que você executará para gerar SBOMs.

    • README.txt— Esta é a documentação para usar Sbomgen.

    • LICENSE.txt— Este arquivo contém a licença de software para Sbomgen.

    • licenses— Esta pasta contém informações de licença para pacotes de terceiros usados pelo Sbomgen.

    • checksums.txt— Este arquivo fornece hashes do Sbomgen ferramenta.

    • sbom.json— Este é um CycloneDX SBOM para o Sbomgen ferramenta.

    • WhatsNew.txt— Esse arquivo contém um registro de alterações resumido, para que você possa visualizar as principais alterações e melhorias entre Sbomgen versões rápidas.

  4. (Opcional) Verifique a autenticidade e integridade da ferramenta usando o seguinte comando:

    sha256sum < inspector-sbomgen

    1. Compare os resultados com o conteúdo do arquivo checksums.txt.

  5. Conceda permissões executáveis à ferramenta usando o seguinte comando:

    chmod +x inspector-sbomgen

  6. Verifique isso Sbomgen é instalado com sucesso usando o seguinte comando:

    ./inspector-sbomgen --version

    Você deverá ver um resultado semelhante a este:

    Version: 1.X.X

O uso do Sbomgen

Esta seção descreve diferentes maneiras de usar Sbomgen. Você pode aprender mais sobre como usar Sbomgen por meio de exemplos integrados. Para visualizar esses exemplos, execute o comando list-examples:

./inspector-sbomgen list-examples

Gerar uma SBOM para uma imagem de contêiner e enviar o resultado

Você pode usar: Sbomgen SBOMs para gerar imagens de contêiner e enviar o resultado para um arquivo. Esse recurso pode ser habilitado usando o subcomando container.

Exemplo de comando

No trecho a seguir, você pode substituir image:tag pelo ID da sua imagem e output_path.json pelo caminho para a saída que você deseja salvar.

# generate SBOM for container image ./inspector-sbomgen container --image image:tag -o output_path.json
nota

O tempo e o desempenho da verificação dependem do tamanho da imagem e de quão pequeno é o número de camadas. Imagens menores não só melhoram Sbomgen desempenho, mas também reduz a superfície de ataque potencial. Imagens menores também melhoram os tempos de criação, download e upload da imagem.

Ao usar Sbomgen com ScanSbom, a API do Amazon Inspector Scan não processará arquivos SBOMs que contenham mais de 2.000 pacotes. Nesse cenário, a API do Amazon Inspector Scan retorna uma resposta HTTP 400.

Se uma imagem incluir arquivos ou diretórios de mídia em massa, considere excluí-los do Sbomgen usando o --skip-files argumento.

Gerar uma SBOM a partir de diretórios e arquivos

Você pode usar: Sbomgen para gerar a SBOMs partir de diretórios e arquivos. Esse recurso pode ser habilitado usando os subcomandos directory ou archive. O Amazon Inspector recomenda usar esse recurso quando quiser gerar uma SBOM a partir de uma pasta do projeto, como um repositório git baixado.

Exemplo de comando 1

O trecho a seguir mostra um subcomando que gera uma SBOM a partir de um diretório.

# generate SBOM from directory ./inspector-sbomgen directory --path /path/to/dir -o /tmp/sbom.json
Exemplo de comando 2

O trecho a seguir mostra um subcomando que gera uma SBOM a partir de um arquivo. Apenas os formatos .zip, .tar e .tar.gz são compatíveis.

# generate SBOM from archive file (tar, tar.gz, and zip formats only) ./inspector-sbomgen archive --path testData.zip -o /tmp/sbom.json

Gere um SBOM a partir de Go or Rust binários compilados

Você pode usar: Sbomgen para gerar a SBOMs partir do compilado Go and Rust binários. Você pode habilitar esse recurso com o subcomando binary:

./inspector-sbomgen binary --path /path/to/your/binary

Enviar uma SBOM ao Amazon Inspector para identificação de vulnerabilidades

Além de gerar uma SBOM, você pode enviar uma SBOM para verificação com um único comando da API Amazon Inspector Scan. O Amazon Inspector avalia o conteúdo do SBOM em busca de vulnerabilidades antes de retornar as descobertas para Sbomgen. Dependendo da sua entrada, as descobertas podem ser exibidas ou gravadas em um arquivo.

nota

Você deve ter um ativo Conta da AWS com permissões de leitura InspectorScan-ScanSbom para usar esse recurso.

Para habilitar esse recurso, você passa o --scan-sbom argumento para o Sbomgen CLI. Você também pode passar o --scan-sbom argumento para qualquer um dos seguintes Sbomgen subcomandos:archive,,binary, containerdirectory,localhost.

nota

A API Amazon Inspector Scan não processa SBOMs com mais de 2.000 pacotes. Nesse cenário, a API do Amazon Inspector Scan retorna uma resposta HTTP 400.

Você pode se autenticar no Amazon Inspector por meio de AWS um perfil ou de uma função do IAM com os AWS CLI seguintes argumentos:

--aws-profile profile --aws-region region --aws-iam-role-arn role_arn

Você também pode se autenticar no Amazon Inspector fornecendo as seguintes variáveis de ambiente para Sbomgen.

AWS_ACCESS_KEY_ID=$access_key \ AWS_SECRET_ACCESS_KEY=$secret_key \ AWS_DEFAULT_REGION=$region \ ./inspector-sbomgen arguments

Para especificar o formato da resposta, use o argumento --scan-sbom-output-format cyclonedx ou o --scan-sbom-output-format inspector.

Exemplo de comando 1

Esse comando cria um SBOM para o mais recente Alpine Linux libera, verifica o SBOM e grava os resultados da vulnerabilidade em um arquivo JSON.

./inspector-sbomgen container --image alpine:latest \ --scan-sbom \ --aws-profile your_profile \ --aws-region your_region \ --scan-sbom-output-format cyclonedx \ --outfile /tmp/inspector_scan.json
Exemplo de comando 2

Esse comando autentica o Amazon Inspector AWS usando credenciais como variáveis de ambiente.

AWS_ACCESS_KEY_ID=$your_access_key \ AWS_SECRET_ACCESS_KEY=$your_secret_key \ AWS_DEFAULT_REGION=$your_region \ ./inspector-sbomgen container --image alpine:latest \ -o /tmp/sbom.json \ --scan-sbom \ --scan-sbom-output-format inspector
Exemplo de comando 3

Este comando se autentica no Amazon Inspector usando o ARN de um perfil do IAM.

./inspector-sbomgen container --image alpine:latest \ --scan-sbom \ --aws-profile your_profile \ --aws-region your_region \ --outfile /tmp/inspector_scan.json --aws-iam-role-arn arn:aws:iam::123456789012:role/your_role

Personalizar verificações para excluir arquivos específicos

Ao analisar e processar uma imagem de contêiner, Sbomgen digitaliza o tamanho de todos os arquivos na imagem do contêiner. Você pode personalizar as verificações para excluir arquivos específicos ou pacotes de destino específicos.

Para reduzir o consumo de disco, o consumo de RAM, o runtime decorrido e ignorar arquivos que excedam o limite fornecido, use o argumento --max-file-size com o subcomando container:

./inspector-sbomgen container --image alpine:latest \ --outfile /tmp/sbom.json \ --max-file-size 300000000

Desabilitar o indicador de progresso

Sbomgen exibe um indicador de progresso de rotação que pode resultar em caracteres de barra excessivos em ambientes de CI/CD.

INFO[2024-02-01 14:58:46]coreV1.go:53: analyzing artifact | \ / | \ / INFO[2024-02-01 14:58:46]coreV1.go:62: executing post-processors

Você pode desabilitar o indicador de progresso usando o argumento --disable-progress-bar:

./inspector-sbomgen container --image alpine:latest \ --outfile /tmp/sbom.json \ --disable-progress-bar

Autenticação em registros privados com Sbomgen

Ao fornecer suas credenciais de autenticação de registro privado, você pode gerar SBOMs a partir de contêineres hospedados em registros privados. Você pode fornecer essas credenciais por meio dos seguintes métodos:

Autenticar usando credenciais armazenadas em cache (recomendado)

Para esse método, faça autenticação no registro do contêiner. Por exemplo, se estiver usando Docker, você pode se autenticar no seu registro de contêiner usando o Docker comando de registro:docker login.

  1. Faça a autenticação em seu registro de contêiner. Por exemplo, se estiver usando Docker, você pode se autenticar em seu registro usando o Docker Comando da login:

  2. Depois de se autenticar no seu registro de contêiner, use Sbomgen em uma imagem de contêiner que está no registro. Para usar o exemplo a seguir, substitua image:tag pelo nome da imagem a ser digitalizada:

./inspector-sbomgen container --image image:tag

Autenticar usando o método interativo

Para esse método, forneça seu nome de usuário como parâmetro e Sbomgen solicitará que você insira uma senha segura quando necessário.

Para usar o exemplo a seguir, substitua image:tag pelo nome da imagem que deseja verificar e your_username por um nome de usuário que tenha acesso a essa imagem:

./inspector-sbomgen container --image image:tag --username your_username

Autenticar usando o método não interativo

Para esse método, armazene sua senha ou token de registro em um arquivo .txt.

nota

O usuário atual só deve conseguir ler esse arquivo. O arquivo também deve conter a senha ou token em uma única linha.

Para usar o exemplo a seguir, substitua your_username pelo nome de usuário, password.txt pelo arquivo .txt que contém a senha ou token e image:tag pelo nome da imagem a ser verificada:

INSPECTOR_SBOMGEN_USERNAME=your_username \ INSPECTOR_SBOMGEN_PASSWORD=`cat password.txt` \ ./inspector-sbomgen container --image image:tag

Exemplos de saídas de Sbomgen

A seguir está um exemplo de um SBOM para uma imagem de contêiner inventariada usando Sbomgen.

{ "bomFormat": "CycloneDX", "specVersion": "1.5", "serialNumber": "urn:uuid:828875ef-8c32-4777-b688-0af96f3cf619", "version": 1, "metadata": { "timestamp": "2023-11-17T21:36:38Z", "tools": [ { "vendor": "Amazon Web Services, Inc. (AWS)", "name": "Amazon Inspector SBOM Generator", "version": "1.0.0", "hashes": [ { "alg": "SHA-256", "content": "10ab669cfc99774786301a745165b5957c92ed9562d19972fbf344d4393b5eb1" } ] } ], "component": { "bom-ref": "comp-1", "type": "container", "name": "fedora:latest", "properties": [ { "name": "amazon:inspector:sbom_generator:image_id", "value": "sha256:c81c8ae4dda7dedc0711daefe4076d33a88a69a28c398688090c1141eff17e50" }, { "name": "amazon:inspector:sbom_generator:layer_diff_id", "value": "sha256:eddd0d48c295dc168d0710f70364581bd84b1dda6bb386c4a4de0b61de2f2119" } ] } }, "components": [ { "bom-ref": "comp-2", "type": "library", "name": "dnf", "version": "4.18.0", "purl": "pkg:pypi/dnf@4.18.0", "properties": [ { "name": "amazon:inspector:sbom_generator:source_file_scanner", "value": "python-pkg" }, { "name": "amazon:inspector:sbom_generator:source_package_collector", "value": "python-pkg" }, { "name": "amazon:inspector:sbom_generator:source_path", "value": "/usr/lib/python3.12/site-packages/dnf-4.18.0.dist-info/METADATA" }, { "name": "amazon:inspector:sbom_generator:is_duplicate_package", "value": "true" }, { "name": "amazon:inspector:sbom_generator:duplicate_purl", "value": "pkg:rpm/fedora/python3-dnf@4.18.0-2.fc39?arch=noarch&distro=39&epoch=0" } ] }, { "bom-ref": "comp-3", "type": "library", "name": "libcomps", "version": "0.1.20", "purl": "pkg:pypi/libcomps@0.1.20", "properties": [ { "name": "amazon:inspector:sbom_generator:source_file_scanner", "value": "python-pkg" }, { "name": "amazon:inspector:sbom_generator:source_package_collector", "value": "python-pkg" }, { "name": "amazon:inspector:sbom_generator:source_path", "value": "/usr/lib64/python3.12/site-packages/libcomps-0.1.20-py3.12.egg-info/PKG-INFO" }, { "name": "amazon:inspector:sbom_generator:is_duplicate_package", "value": "true" }, { "name": "amazon:inspector:sbom_generator:duplicate_purl", "value": "pkg:rpm/fedora/python3-libcomps@0.1.20-1.fc39?arch=x86_64&distro=39&epoch=0" } ] } ] }