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 completa e formalmente estruturada de componentes, bibliotecas e módulos necessários para criar um software.

O Amazon Inspector SBOM Generator (Sbomgen) é uma ferramenta que produz uma lista de materiais de software (SBOM) para arquivos, imagens de contêineres, diretórios, sistemas locais e compilados e binários. Go Rust

Sbomgenverifica 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. Sbomgenem seguida, transforma os metadados do pacote em um CycloneDX SBOM.

Você pode usar Sbomgen como uma ferramenta autônoma para gerar o CycloneDX SBOM como um arquivo ou para STDOUT, bem como enviar SBOMs ao Amazon 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

Sbomgencoleta 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 imagem de contêiner suportadas

Sbomgenpode escanear Dockerfiles autônomos e criar histórico a partir de imagens existentes em busca de problemas de segurança. Para obter mais informações, consulte Verificações do Dockerfile do Amazon Inspector.

Instalação do Sbomgen

O Sbomgen está disponível apenas para sistemas operacionais Linux.

Você deve ter Docker instalado se quiser Sbomgen analisar imagens em cache localmente. Dockernã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 a Sbomgen partir de um sistema com pelo menos as seguintes especificações de hardware:

  • CPU de 4 núcleos

  • RAM de 8 GB

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

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

    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 destinada ao uso do Sbomgen.

    • LICENSE.txt: este arquivo contém a licença do software do Sbomgen.

    • licenses: esta pasta contém informações de licença dos pacotes de terceiros usados pelo Sbomgen.

    • checksums.txt— Esse arquivo fornece hashes da Sbomgen ferramenta.

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

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

  4. (Opcional) Verifique a autenticidade e a 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 se o Sbomgen foi instalado com sucesso usando o seguinte comando:

    ./inspector-sbomgen --version

    Você deverá ver um resultado semelhante a este:

    Version: 1.X.X

Utilizar o Sbomgen

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

./inspector-sbomgen list-examples

Gere um SBOM para uma imagem de contêiner e produza o resultado

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

Exemplo de comando

No trecho a seguir, você pode image:tagsubstituir pelo ID da sua imagem e output_path.jsonpelo 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 digitalização dependem do tamanho da imagem e do tamanho do número de camadas. Imagens menores não apenas melhoram Sbomgen o desempenho, mas também reduzem a potencial superfície de ataque. Imagens menores também melhoram os tempos de criação, download e upload da imagem.

Ao usar Sbomgen com ScanSbom, a API Amazon Inspector Scan não processará 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 uso do --skip-files argumento.

Gere um SBOM a partir de diretórios e arquivos

Você pode usar Sbomgen para gerar SBOMs a partir de diretórios e arquivos. Esse recurso pode ser ativado usando os archive subcomandos directory ou. O Amazon Inspector recomenda usar esse recurso quando você deseja gerar um 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 um SBOM a partir de um arquivo de 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 um SBOM a partir de um arquivo. Os únicos formatos de arquivo suportados são .zip.tar, .tar.gz e.

# 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 ou binários Rust compilados

Você pode usar Sbomgen para gerar SBOMs a partir de compilados Go e Rust binários. Você pode habilitar essa capacidade por meio do binary subcomando:

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

Envie um SBOM para o Amazon Inspector para identificação de vulnerabilidades

Além de gerar um SBOM, você pode enviar um SBOM para digitalização com um único comando da API de digitalização do Amazon Inspector. 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 a 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 --scan-sbom-output-format cyclonedx argumento ou --scan-sbom-output-format inspector argumento.

Exemplo de comando 1

Esse comando cria um SBOM para a Alpine Linux versão mais recente, 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

Este 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 autentica o Amazon Inspector usando o ARN para uma função 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

Personalize escaneamentos para excluir arquivos específicos

Ao analisar e processar uma imagem de contêiner, Sbomgen digitaliza o tamanho de todos os arquivos nessa imagem de contêiner. Você pode personalizar escaneamentos para excluir arquivos específicos ou direcionar pacotes específicos.

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

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

Desativar indicador de progresso

Sbomgenexibe 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 desativar o indicador de progresso usando o --disable-progress-bar argumento:

./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 em cache (recomendado)

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

  1. Autentique-se no seu registro de contêineres. Por exemplo, se estiver usandoDocker, você pode se autenticar no seu registro usando o Docker login comando:

  2. Depois de se autenticar no seu registro de contêiner, use Sbomgen em uma imagem de contêiner que esteja 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á a entrada segura da senha quando necessário.

Para usar o exemplo a seguir, image:tagsubstitua pelo nome da imagem que você deseja digitalizar e your_usernamepor um nome de usuário que tenha acesso à 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 .txt arquivo.

nota

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

Para usar o exemplo a seguir, your_usernamesubstitua pelo seu nome de usuário, password.txtpelo .txt arquivo que inclui sua senha ou token em uma única linha e image:tagpelo nome da imagem a ser digitalizada:

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

Exemplos de saídas de Sbomgen

Veja a seguir um exemplo de SBOM para uma imagem de contêiner relacionada usando o 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" } ] } ] }