Giter VIP home page Giter VIP logo

bomres's Introduction

bomres - A Software Bill-of-Material Resolver

Overview

bomres is a Software Bill-of-Material (SBoM) Resolver specifically designed for Alpine-based container images. It allows to create a detailed SBOM based on two sets of information:

  1. A short list of key software dependencies which must be present in a resulting Alpine image, and
  2. build meta-data taken from the Alpine aports repository.

bomres processes, correlates and combines these information in conjunction with information provided by the apk package manager to generate a detailed SBoM, exposing more information about the image than provided by the package manager itself. In particular, the resulting SBoM containes information about the location of the source code of a package, patches applied by the Alpine community and security information.

Architecture

bomres consists of two components:

  1. an Alpine image builder which creates an Alpine image containing all packages (and their dependencies) listed in a "desired bill-of-material" file, and
  2. the actual SBoM resolver which uses information provided by the Alpine package manager and generated during the previous build process and combines these with additional meta-data hosted in the Aports repository.

Workflow

The overall workflow is shown in the figure below: Workflow

Deployment options

bomres can be deployed in three different scenarios:

  1. As a standalone toolset packaged in two containers,
  2. As a standalone service exposing a RESTful API, or
  3. As a scalable service deployed on Kubernetes

More detailed documentation on how to deploy each scenario to come soon.

Usage

Prerequisities

It is recommended to install rootless docker, otherwise the examples in this section must be run as root.

Install rootless docker as follows:

$ sudo curl -fsSL https://get.docker.com/rootless | sh

Containerized tool

To run bomres as a containerized toolset, perform the following steps:

$ docker run -it --rm docker.io/bomres/base_os_alpine make > Makefile
$ make config
$ vim alpine/build/base_os/config/packages
$ vim alpine/build/base_os/config/settings
$ make build
$ make resolve

Standalone local service

$ docker run -it --rm docker.io/bomres/alpine_resolver make > Makefile
$ make service &
$ make build

Scalable service deployed on Kubernetes

To be added soon.

Contributing

bomres is current in early stages and primarily meant to demonstate the concept. All contributions, PRs, issues, comments, are welcome.

Building from source

To build the alpine image builder and the sbom-resolver container, run the following steps:

$ cd bomres
$ make -C tools/base_os_alpine local
$ make -C services/sbom_resolver build

Testing a source build

To test a local build of bomres, run the following:

$ docker run -it --rm base_os_alpine:<TAG> make > Makefile
$ sed -i 's/docker.io\/bomres\///g' Makefile
$ <potentially modify image tags>
$ make config
$ vim alpine/build/base_os/config/packages
$ vim alpine/build/base_os/config/settings
$ make build
$ make resolve

License

bomres is available under the Apache 2.0 license.

bomres's People

Contributors

hans-lammda avatar gkunz avatar fdegir avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.