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 Amazon Inspector SBOM Generator (Sbomgen) é uma ferramenta que produz uma SBOM para arquivos, imagens de contêiner, diretórios, sistemas locais e compilados de binários Go e Rust. O Sbomgen verifica arquivos que contêm informações sobre pacotes instalados. Quando o Sbomgen encontra um arquivo relevante, ele extrai os nomes, versões e outros metadados dos pacotes. Em seguida, o Sbomgen transforma os metadados do pacote em uma SBOM do CycloneDX. Você pode usar Sbomgen para gerar o CycloneDX SBOM como um arquivo ou em STDOUT e enviar para o Amazon SBOMs Inspector para detecção de vulnerabilidades. Você também pode usar Sbomgen como parte da CI/CD integração, que digitaliza imagens de contêineres automaticamente como parte do seu pipeline de implantação.
Tipos de pacotes compatíveis
O 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
O Sbomgen pode verificar Dockerfiles independentes e criar um histórico a partir de imagens existentes em busca de problemas de segurança. Para ter mais informações, consulte Amazon Inspector Dockerfile checks.
Instalação do Sbomgen
O Sbomgen está disponível apenas para sistemas operacionais Linux.
Você deve ter o Docker instalado se quiser que o Sbomgen analise imagens em cache localmente. O Docker não é necessário para analisar imagens exportadas como arquivos ou imagens .tar
hospedados em registros de contêiner remotos.
O Amazon Inspector recomenda que você execute o 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
-
Faça download do arquivo zip do Sbomgen a partir 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.
-
Descompacte o download usando o seguinte comando:
unzip inspector-sbomgen.zip
-
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
: este arquivo fornece hashes da ferramenta Sbomgen. -
sbom.json
: esta é uma SBOM do CycloneDX referente à ferramenta Sbomgen. -
WhatsNew.txt
: este arquivo contém um log de alterações resumido para que você possa visualizar rapidamente as principais alterações e melhorias entre as versões do Sbomgen.
-
-
(Opcional) Verifique a autenticidade e integridade da ferramenta usando o seguinte comando:
sha256sum < inspector-sbomgen
-
Compare os resultados com o conteúdo do arquivo
checksums.txt
.
-
-
Conceda permissões executáveis à ferramenta usando o seguinte comando:
chmod +x inspector-sbomgen
-
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
Usar o Sbomgen
Esta seção descreve as diferentes formas de usar o Sbomgen. Você pode saber mais sobre como usar o 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
pelo ID da sua imagem e image:tag
pelo caminho para a saída que você deseja salvar. output_path.json
# generate SBOM for container image ./inspector-sbomgen container
--image image:tag
-ooutput_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 apenas melhoram o desempenho do Sbomgen, mas também reduzem a possível 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 do Amazon Inspector Scan não processará pacotes SBOMs que contenham mais de 5.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 argumento --skip-files
.
Exemplo: casos de erro comuns
A digitalização da imagem do contêiner pode falhar devido aos seguintes erros:
-
InvalidImageFormat
— Ocorre ao digitalizar imagens de contêineres malformadas com cabeçalhos TAR, arquivos de manifesto ou arquivos de configuração corrompidos. -
ImageValidationFailure
— ocorre quando a validação da soma de verificação ou do comprimento do conteúdo falha nos componentes da imagem do contêiner, como cabeçalhos de comprimento de conteúdo incompatíveis, resumos incorretos do manifesto ou falha na verificação da soma de verificação. SHA256 -
ErrUnsupportedMediaType
— Ocorre quando os componentes da imagem incluem tipos de mídia não suportados. Para obter informações sobre os tipos de mídia compatíveis, consulte Sistemas operacionais e tipos de mídia compatíveis.
O Amazon Inspector não suporta o tipo de application/vnd.docker.distribution.manifest.list.v2+json
mídia. No entanto, o Amazon Inspector suporta listas de manifestos. Ao digitalizar imagens que usam listas de manifestos, você pode especificar explicitamente qual plataforma usar com o --platform
argumento. Se o --platform
argumento não for especificado, o Amazon Inspector SBOM Generator seleciona automaticamente o manifesto com base na plataforma em que está sendo executado.
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
Gerar uma SBOM a partir dos compilados binários Go ou Rust
Você pode usar Sbomgen para gerar a SBOMs partir de compilados Go e Rust binários. Você pode habilitar esse recurso com o subcomando binary
:
./inspector-sbomgen binary --path /path/to/your/binary
Gere um SBOM a partir de volumes montados
Você pode usar o Amazon Inspector SBOM Generator para gerar a SBOMs partir de volumes montados. Esse recurso pode ser habilitado usando o subcomando volume
. Recomendamos usar esse recurso quando você quiser analisar volumes de armazenamento, como volumes do Amazon EBS que foram montados em seu sistema. Diferentemente do subcomando de diretório, a varredura de volume montado detecta pacotes do sistema operacional e informações do sistema operacional.
Você pode escanear um volume do Amazon EBS anexando-o a uma EC2 instância da Amazon onde o Amazon Inspector SBOM Generator está instalado e montando-o nessa instância. Para volumes do Amazon EBS que estão atualmente em uso por outras EC2 instâncias da Amazon, você pode criar um snapshot do Amazon EBS do volume e, em seguida, criar um novo volume do Amazon EBS a partir desse snapshot para fins de digitalização. Para obter mais informações sobre o Amazon EBS, consulte O que é o Amazon EBS? no Guia do usuário do Amazon Elastic Block Store.
Exemplo de comando
O trecho a seguir mostra um subcomando que gera um SBOM a partir de um volume montado. O --path
argumento deve especificar o diretório raiz em que o volume está montado.
# generate SBOM from mounted volume ./inspector-sbomgen volume --path /mount/point/of/volume/root
Exemplo de comando
O trecho a seguir mostra um subcomando que gera um SBOM a partir de um volume montado enquanto exclui caminhos de arquivo específicos com o argumento. --exclude-suffix
O --exclude-suffix
argumento é particularmente útil quando um volume contém arquivos em massa (como arquivos de log ou arquivos de mídia). Arquivos e diretórios cujos caminhos terminem com os sufixos especificados serão excluídos do escaneamento, o que pode reduzir o tempo de escaneamento e o uso da memória.
# generate SBOM from mounted volume with exclusions ./inspector-sbomgen volume --path /mount/point/of/volume/root \ --exclude-suffix .log \ --exclude-suffix cache
Todos os caminhos de arquivo no volume de destino são normalizados para seus caminhos originais. Por exemplo, ao digitalizar um volume montado em /mnt/volume
que contém um arquivo em/mnt/volume/var/lib/rpm/rpmdb.sqlite
, o caminho será normalizado para o /var/lib/rpm/rpmdb.sqlite
SBOM gerado.
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 da SBOM em busca de vulnerabilidades antes de retornar as descobertas para o 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, passe o argumento --scan-sbom
para a CLI do Sbomgen. Você também pode passar o argumento --scan-sbom
para qualquer um dos seguintes subcomandos do Sbomgen: archive
, binary
, container
, directory
, localhost
.
nota
A API do Amazon Inspector Scan não processa SBOMs com mais de 5.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-regionregion
--aws-iam-role-arnrole_arn
Você também pode se autenticar no Amazon Inspector fornecendo as seguintes variáveis de ambiente para o 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 uma SBOM para a versão mais recente do Alpine Linux, verifica a SBOM e grava os resultados da vulnerabilidade em um arquivo JSON.
./inspector-sbomgen container --image alpine:latest \ --scan-sbom \ --aws-profile
your_profile
\ --aws-regionyour_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 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
Use scanners adicionais para aprimorar os recursos de detecção
O Amazon Inspector SBOM Generator aplica scanners predefinidos com base no comando que está sendo usado.
Grupos de scanners padrão
Cada subcomando do Amazon Inspector SBOM Generator aplica automaticamente os seguintes grupos de scanners padrão.
-
Para o
directory
subcomando: binary, programming-language-packages, dockerfile scanner groups -
Para o
localhost
subcomando: os, programming-language-packages, grupos de scanners extra-ecossistemas -
Para o
container
subcomando: os, extra-ecossystems programming-language-packages, dockerfile, binary scanner groups
Scanners especiais
Para incluir scanners além dos grupos de scanners padrão, use a --additional-scanners
opção seguida pelo nome do scanner a ser adicionado. Veja a seguir um exemplo de comando que mostra como fazer isso.
# Add WordPress installation scanner to directory scan ./inspector-sbomgen directory --path /path/to/directory/ --additional-scanners wordpress-installation -o output.json
Veja a seguir um exemplo de comando que mostra como adicionar vários scanners com uma lista separada por vírgulas.
./inspector-sbomgen container --image image:tag --additional-scanners scanner1,scanner2 -o output.json
Otimize as digitalizações de contêineres ajustando o tamanho máximo do arquivo a ser digitalizado
Quando você analisa e processa uma imagem de contêiner, Sbomgen digitaliza arquivos com 200 MB ou menos por padrão. Arquivos maiores que 200 MB raramente contêm metadados de pacotes. Você pode encontrar erros ao inventariar um Go ou um Rust binário que exceda 200 MB. Para ajustar o limite de tamanho, use o --max-file-size
argumento. Isso permite que você aumente o limite para incluir arquivos grandes e diminua o limite para reduzir o uso de recursos excluindo arquivos grandes.
Exemplo
O exemplo a seguir mostra como usar o --max-file-size
argumento para aumentar o tamanho do arquivo.
# Increase the file size limit to scan files up to 300 MB ./inspector-sbomgen container --image alpine:latest \ --outfile /tmp/sbom.json \ --max-file-size 300000000
Ajustar essa configuração ajuda a controlar o uso do disco, o consumo de memória e a duração geral da verificação.
Desabilitar o indicador de progresso
Sbomgenexibe um indicador de progresso giratório que pode resultar em caracteres de barra excessivos nos CI/CD ambientes.
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
Autenticar-se em registros privados usando o 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 o Docker, você poderá fazer a autenticação no registro do contêiner usando o comando de login do Docker: docker login
.
-
Faça a autenticação em seu registro de contêiner. Por exemplo, se estiver usando o Docker, você poderá fazer a autenticação no registro usando o comando
login
do Docker: -
Depois de se autenticar no seu registro de contêiner, use o Sbomgen em uma imagem de contêiner que esteja no registro. Para usar o exemplo a seguir, substitua
pelo nome da imagem a ser digitalizada:image:tag
./inspector-sbomgen container --image
image:tag
Autenticar usando o método interativo
Nesse método, forneça o nome de usuário como parâmetro e o Sbomgen solicitará uma senha segura, quando necessário.
Para usar o exemplo a seguir, substitua
pelo nome da imagem que deseja verificar e image:tag
por um nome de usuário que tenha acesso a essa imagem: your_username
./inspector-sbomgen container --image
image:tag
--usernameyour_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
pelo nome de usuário, your_username
pelo arquivo password.txt
.txt
que contém a senha ou token e
pelo nome da imagem a ser verificada: image:tag
INSPECTOR_SBOMGEN_USERNAME=
your_username
\ INSPECTOR_SBOMGEN_PASSWORD=`catpassword.txt
` \ ./inspector-sbomgen container --imageimage: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" } ] } ] }