Dependency-Track - это интеллектуальная платформа для анализа компонентов, которая позволяет организациям выявлять и снижать риски в цепочке поставок программного обеспечения. Dependency-Track использует уникальный и очень выгодный подход, используя возможности спецификации программного обеспечения (SBOM). Этот подход предоставляет возможности, недоступные традиционным решениям для анализа состава программного обеспечения (SCA).
Dependency-Track отслеживает использование компонентов во всех версиях каждого приложения в ит-портфолио, чтобы упреждающее выявлять риски при использовании данного приложения. Платформа разработана на основе API и идеально подходит для использования в средах CI/CD.
С подробной документацией о данном продукте можно ознакомиться на ресурсах: официальный github разработчика, а также сайт разработчика.
Dependency-track можно установить разными путями, каждый путь подразумевает под собой отдельный тип инфраструктуры. Так как в нашем проекте используется в качестве инфраструктуры для развертывания «Dependency-track» Kubernetes, то для быстрой установки этого приложения мы будем использовать helm chart. Если Вы хотите установить Dependency-track под свой тип инфраструктуры, то подробную документацию можно найти на официальном github разработчика.
Для установки Dependency-track с помощью Helm3 в Kubernetes вам нужно:
helm install dependency-track dependency-track --namespace dependency-track --create-namespace helm install pgo postgres-operator --namespace pgo --create-namespace kubectl apply -f deptrack-db.yaml
На первой картинке можно увидеть общий интерфейс dependency-track.
Для того чтобы использовать этот инструмент в CI/CD, нужно указать переменные ci/cd:
Также есть опциональные переменные:
Пример встраивания dependency-track в ваш CI/CD:
DEPTRACK: stage: deptrack variables: PROJECT_PATH: "." REPO_URL: "" DP_API_URL: http://188.120.244.199:8888 productName: "$CI_PROJECT_NAME" trigger: include: - project: '1105/sast/dependency-track' ref: 'master' file: '.gitlab-ci.yml'''
Чтобы Ваш проект корректно просканировался, нужно чтобы в вашем проекте были requirements файлы. Примеры таких файлов приведены ниже:
Language/Platform | Package format | Transitive dependencies |
---|---|---|
node.js | npm-shrinkwrap.json, package-lock.json, pnpm-lock.yaml, yarn.lock, rush.js, bower.json, .min.js | Yes except .min.js |
java | maven (pom.xml [1]), gradle (build.gradle, .kts), scala (sbt), bazel | Yes unless pom.xml is manually parsed due to unavailability of maven or errors |
php | composer.lock | Yes |
python | setup.py, requirements.txt [2], Pipfile.lock, poetry.lock, bdist_wheel, .whl, .egg-info | Only with Pipfile.lock and poetry.lock |
go | binary, go.mod, go.sum, Gopkg.lock | Yes except binary |
ruby | Gemfile.lock, gemspec | Only for Gemfile.lock |
rust | binary, Cargo.toml, Cargo.lock | Only for Cargo.lock |
.Net | .csproj, packages.config, project.assets.json [3], packages.lock.json, .nupkg | Only for project.assets.json, packages.lock.json |
dart | pubspec.lock, pubspec.yaml | Only for pubspec.lock |
haskell | cabal.project.freeze | Yes |
elixir | mix.lock | Yes |
c/c++ | conan.lock, conanfile.txt | Yes only for conan.lock |
clojure | Clojure CLI (deps.edn), Leiningen (project.clj) | Yes unless the files are parsed manually due to lack of clojure cli or leiningen command |
swift | Package.resolved, Package.swift (swiftpm) | Yes |
docker / oci image | All supported languages. Linux OS packages with plugins [4] | Best effort based on lock files |
GitHub Actions | .github/workflows/*.yml | N/A |
Linux | All supported languages. Linux OS packages with plugins [5] | Best effort based on lock files |
Windows | All supported languages. OS packages with best effort [5] | Best effort based on lock files |
Jenkins Plugins | .hpi files | |
Helm Charts | .yaml | N/A |
Skaffold | .yaml | N/A |
kustomization | .yaml | N/A |
Tekton tasks | .yaml | N/A |
Kubernetes | .yaml | N/A |
Maven Cache | $HOME/.m2/repository//*.jar|N/A| |SBT Cache|$HOME/.ivy2/cache//*.jar | N/A |
Gradle Cache | $HOME/caches/modules-2/files-2.1//*.jar|N/A| |Helm Index|$HOME/.cache/helm/repository//*.yaml | N/A |
Docker compose | docker-compose*.yml. Images would also be scanned. | N/A |
Google CloudBuild configuration | cloudbuild.yaml | N/A |
OpenAPI | openapi*.json, openapi*.yaml | N/A |
Privado | privado.json | Data and service information will be included. Use with universal mode. |
Утилита с которая сканирует проекты называется cdxgen
Для создания пользователей нужно войти в аккаунт юзера с правами системного администратора. Создание пользователей и выдача прав показана на рисунках ниже:
Данный список прав необходим и достаточен, чтобы автоматически создавать проекты пользователю
Чтобы включить приватность проекта воспользуйтесь инструкцией ниже:
Если Вы хотите добавить уже существующему пользователю проекты других пользователей, воспользуйтесь инструкцией ниже:
resources: frontend: requests: cpu: 100m memory: 128Mi limits: cpu: 1 memory: 512Mi backend: requests: cpu: 2 memory: 4608Mi limits: cpu: 4 memory: 8Gi database: 10 Gi