Содержание

Dependency-track

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

На первой картинке можно увидеть общий интерфейс dependency-track.

Использование

Встраивание в CI/CD

Для того чтобы использовать этот инструмент в 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 файлы. Примеры таких файлов приведены ниже:

Supported languages and package format

Language/PlatformPackage formatTransitive dependencies
node.jsnpm-shrinkwrap.json, package-lock.json, pnpm-lock.yaml, yarn.lock, rush.js, bower.json, .min.jsYes except .min.js
javamaven (pom.xml [1]), gradle (build.gradle, .kts), scala (sbt), bazelYes unless pom.xml is manually parsed due to unavailability of maven or errors
phpcomposer.lockYes
pythonsetup.py, requirements.txt [2], Pipfile.lock, poetry.lock, bdist_wheel, .whl, .egg-infoOnly with Pipfile.lock and poetry.lock
gobinary, go.mod, go.sum, Gopkg.lockYes except binary
rubyGemfile.lock, gemspecOnly for Gemfile.lock
rustbinary, Cargo.toml, Cargo.lockOnly for Cargo.lock
.Net.csproj, packages.config, project.assets.json [3], packages.lock.json, .nupkgOnly for project.assets.json, packages.lock.json
dartpubspec.lock, pubspec.yamlOnly for pubspec.lock
haskellcabal.project.freezeYes
elixirmix.lockYes
c/c++conan.lock, conanfile.txtYes only for conan.lock
clojureClojure CLI (deps.edn), Leiningen (project.clj)Yes unless the files are parsed manually due to lack of clojure cli or leiningen command
swiftPackage.resolved, Package.swift (swiftpm)Yes
docker / oci imageAll supported languages. Linux OS packages with plugins [4]Best effort based on lock files
GitHub Actions.github/workflows/*.ymlN/A
LinuxAll supported languages. Linux OS packages with plugins [5]Best effort based on lock files
WindowsAll supported languages. OS packages with best effort [5]Best effort based on lock files
Jenkins Plugins.hpi files
Helm Charts.yamlN/A
Skaffold.yamlN/A
kustomization.yamlN/A
Tekton tasks.yamlN/A
Kubernetes.yamlN/A
Maven Cache$HOME/.m2/repository//*.jar|N/A| |SBT Cache|$HOME/.ivy2/cache//*.jarN/A
Gradle Cache$HOME/caches/modules-2/files-2.1//*.jar|N/A| |Helm Index|$HOME/.cache/helm/repository//*.yamlN/A
Docker composedocker-compose*.yml. Images would also be scanned.N/A
Google CloudBuild configurationcloudbuild.yamlN/A
OpenAPIopenapi*.json, openapi*.yamlN/A
Privadoprivado.jsonData 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