Как контролировать сбой конвейера, основываясь на серьезности найденных уязвимостей snyk? - PullRequest
0 голосов
/ 27 июня 2019

Я разрабатываю конвейер CI / CD с Gitlab и в настоящее время использую snyk для выполнения анализа безопасности зависимостей.Это работает отлично, но я хотел бы теперь реализовать некоторую логику, чтобы позволить конвейеру без сбоев продолжаться на этом этапе, если найденные уязвимости находятся под заданным порогом.Например, если обнаружено несколько уязвимостей средней серьезности и больше ничего, разрешите это и не отказывайте в конвейере.Однако, если обнаружены некоторые уязвимости средней серьезности и несколько уязвимостей высокой серьезности, произойдет сбой конвейера из-за этих уязвимостей высокой степени опасности.

Я использую общие бегуны Gitlab, поэтому я наблюдаю, как все проходит черезонлайн интерфейс.Я изучил коды выхода для команды, которую я использую (тест snyk), но все, что я видел, это то, что если обнаружена какая-либо уязвимость, процесс завершается с «ненулевым» кодом выхода.Когда я запустил тест snyk и обнаружил 6 уязвимостей, три высокой и три средней серьезности, код завершения вернулся с echo $?было 1 (показано ниже).

Вот демонстрация команды тестирования snyk и кода выхода:

$ snyk test

...some vulnerabilities...

Tested 126 dependencies for known vulnerabilities, found 6 vulnerabilities, 32 vulnerable paths.

$ echo $?
1

А вот работа snyk, определенная в моем .gitlab-ci.yml вполезный случай:

# TODO Make stage success/failure based on vulnerability severity
snyk-dependency-analysis:
  image: awesomeaiden/custom_snyk
  stage: static_analysis
  only:
    changes:
      - boot-kotlin-svc/**/*
  before_script:
    - cd boot-kotlin-svc
    - export GRADLE_USER_HOME=`pwd`/.gradle
    - export SNYK_TOKEN=$secret_snyk_token
  after_script:
    - cd ..
  variables:
    SNYK_TOKEN: $secret_snyk_token
  script:
    - snyk test
  cache:
    key: "$CI_COMMIT_REF_NAME"
    policy: pull
    paths:
      - build
      - .gradle
  allow_failure: true

Мне бы хотелось получить наивысший уровень обнаруженной серьезности и использовать его для сбоя или сбоя конвейера, но я не вижу примеров этого в сети и нене знаю, возможно ли это вообще.

1 Ответ

0 голосов
/ 27 июня 2019

Ответ решен, служба поддержки snyk сказала, что вы можете использовать параметр порога серьезности при запуске команды snyk, чтобы игнорировать уязвимости ниже определенного порога.

Ответ службы поддержки Snyk:

У нас действительно есть коды выхода, мы используем код выхода 1 для обнаружения уязвимостей, 2 для любого другого сбоя.Вы также можете использовать его в сочетании с параметром --severity-threshold, если, например, вы хотели потерпеть неудачу только из-за уязвимостей высокой серьезности.

...