Перейти к содержанию

Интеграционный API

Интеграционный API используется для интеграции AppSec.Hub с различными инструментами и приложениями.

Описание REST API системы доступно в Swagger по адресу: <hub-url>/hub/rest/swagger-ui/index.html.

Запуск импорта результатов сканирования

Данный программный интерфейс реализует загрузку результатов сканирования из инструмента (например, Checkmarx) в AppSec.Hub. При этом, на стороне AppSec.Hub создаются все необходимые объекты и связи (приложение, кодовая база, артефакт, пайплайн и т. д.), запускается импорт уязвимостей, осуществляется проверка прохождения QG. Однако само сканирование НЕ ВЫПОЛНЯЕТСЯ.

Примечание

Данный сервис только запускает процесс импорта, который выполняется в асинхронном режиме. Проверка статуса запуска проверяется с помощью сервиса Получение статуса сканирования.

Запрос

POST /import/results

Примечание

Данный эндпоинт является устаревшим (deprecated) и будет удалён в декабре 2025 года.

Параметры

Примечание

Обязательные параметры отмечены *.

Параметр Тип Описание
application* Object Идентифицирует объект приложения application
unit String Связывает артефакт/кодовую базу/экземпляр приложения со структурной единицей. Если указанная структурная единица отсутствует, она создается
source* List<Object> Перечень исходных объектов source (одного и того же типа), которые были просканированы
scans* List<Object> Перечень объектов сканирования scan, содержащих результаты (уязвимости) для импорта
qualityGateCode String Код идентификации объекта Quality Gate (QG) в AppSec.Hub. При отсутствии используется QG из настроек пайплайна
scanInitiator Object Идентифицирует объект Scan initiator
releaseObject Object Идентифицирует объект Release object
Application
Параметр Тип Описание
code* String Код приложения в БД AppSec.Hub
externalId String Внешний ID нового приложения. Этот параметр используется при онбординге и впоследствии может игнорироваться
Source
Codebase
Параметр Тип Описание
type* String Тип анализируемого объекта
Значение: codebase
name String Имя кодовой базы в AppSec.Hub. При отсутствии генерируется имя на основе appcode, url и branch
url* String Внешний URL для клонирования/чекаута репозитория кодовой базы
checkoutPath* String Директория расположения кодовой базы
branch String Ветвь или тег репозитория для основной кодовой базы.
Значение по умолчанию: master
commit String Ветвь или тег репозитория для основной кодовой базы.
Значение по умолчанию: master
buildTool String Инструмент сборки кодовой базы.
Доступные значения: maven, gradle, nuget, npm, pip, nap
Значение по умолчанию: nap
branchFilter String Фильтр сканируемых ветвей. Применяется для основной и дополнительных кодовых баз.
Значение по умолчанию: аналогично параметру ––branch
Artifact
Параметр Тип Описание
artifact* String Параметры артефакта
<adtifact-url>;<artifact-name>;
Имя артефакта в AppSec.Hub
type* String Тип сканируемого объекта
Значение: artifact
Instance
Параметр Тип Описание
type* String Тип сканируемого объекта
Значение: instance
name String Имя инстанса в AppSec.Hub. При отсутствии генерируется на основе appcode и url
url* String URL установленного приложения
Scan

Каждый объект представлен в одном из следующих форматов.

Checkmarx
Параметр Тип Описание
url* String URL инструмента Checkmarx
product* String Идентификатор инструмента сканирования, который содержит импортируемые уязвимости
Значение: checkmarx
cxProject* String Имя проекта в Checkmarx
cxTeam String Имя команды Checkmarx
Значение по умолчанию: CxServer
cxScanId String ID сканирования в проекте Checkmarx. При отсутствии импортируются результаты последнего сканирования
AppSec.Track
Параметр Тип Описание
url* String URL инструмента AppSec.Track
product* String Идентификатор инструмента сканирования, который содержит импортируемые уязвимости
Значение: appsec-track
apptrackTeam* String Имя команды AppSec.Track
apptrackApp* String Имя приложения AppSec.Track
apptrackScanGuid* String ID отчета приложения AppSec.Track
Стингрей
Параметр Тип Описание
url* String URL инструмента Стингрей
product* String Идентификатор инструмента сканирования
Значение: stingray
projectName
ИЛИ
scanId*
String Необходимо указать:
- или projectName, если импортируется последнее сканирование в проекте
- или scanId, если импортируется конкретный скан
Scan initiator
Параметр Тип Описание
initiator String Информация об инициаторе сканирования, например ссылка на задачу сканирования в TeamCity
environment String Рабочая среда инициатора сканирования
Release object
Параметр Тип Описание
url String URL-адрес артефакта (в менеджере репозиториев), который рассматривается как релизный объект
Примеры

Checkmarx

{
   "application": {
      "code": "09022021_cli",
      "externalId": "c361b656-fb8f-11eb-9a03-0242ac130003"
   },
   "unit": "core",
   "source": [
      {
        "type": "codebase",
        "name": "java-web-project-master",
        "url": "http://gitlab.service.company.com/test/java-web-project",
        "checkoutPath": "/",
        "branch": "master",
        "buildTool": "maven"
      }
    ],
    "scans": [
      {
         "url": "https://cx.dev.company.com",
         "product": "checkmarx",
         "cxProject": "kgr_19082021_2_-master_1",
         "cxTeam": "/CxServer/asdfsadfASDFASDF/kgr_19082021_2"
      }
   ],
   "qualityGateCode": "No_Critical",
   "scanInitiator": {
     "initiator": "https://teamcity.your.company.com/buildConfiguration/Dvja_SecurityChecks/59863",
     "environment": "{ \"ci\": {\"type\": \"Teamcity\", \"url\": \"https://teamcity.your.company.com\"}, \"trigger\": {\"type\": \"dependency\", \"link\": \"https://teamcity.your.company.com/buildConfiguration/Dvja_SecurityChecks/59863\"}"
   },
   "releaseObject": {
     "url": "https://nexus.your.company.com/repository/docker-private/v2/java-web-project/manifests/1.17"
   }
}

Checkmarx (несколько кодовых баз)

{
   "application": {
      "code": "09022021_cli",
      "externalId": "c361b656-fb8f-11eb-9a03-0242ac130003"
   },
   "unit": "core",
   "source": [
      {
        "type": "codebase",
        "name": "java-web-project-master",
        "url": "http://gitlab.service.company.com/test/java-web-project.git",
        "checkoutPath": "/",
        "branch": "master",
        "buildTool": "maven"
      },
      {
        "type": "codebase",
        "name": "java-web-config-master",
        "url": "http://gitlab.service.company.com/test/java-web-config.git",
        "checkoutPath": "/conf",
        "branch": "master",
        "buildTool": "N/A"
      }
    ],
    "scans": [
      {
         "url": "https://cx.dev.company.com",
         "product": "checkmarx",
         "cxProject": "kgr_19082021_2_-master_1",
         "cxTeam": "/CxServer/asdfsadfASDFASDF/kgr_19082021_2"
      }
   ],
   "qualityGateCode": "No_Critical",
   "scanInitiator": {
     "initiator": "https://teamcity.your.company.com/buildConfiguration/Dvja_SecurityChecks/59863",
     "environment": "{ \"ci\": {\"type\": \"Teamcity\", \"url\": \"https://teamcity.your.company.com\"}, \"trigger\": {\"type\": \"dependency\", \"link\": \"https://teamcity.your.company.com/buildConfiguration/Dvja_SecurityChecks/59863\"}"
   },
   "releaseObject": {
     "url": "https://nexus.your.company.com/repository/docker-private/v2/java-web-project/manifests/1.17"
   }
}

Стингрей

{
    "application": {
        "code": "App1"
    },
    "source": [
        {
            "type": "artifact",
            "name": "Apk1",
            "url": "https://docker.company.com/nginx/apk/auth/app-prod-debug.apk" 
        }
    ],
    "scans": [
        {
            "url": "https://demo.stingray-mobile.ru",
            "product": "mdast",
            "projectName": "Project1"
        }
    ]
}

Ответ

Body

Параметр Тип Описание
scanTaskId* Integer Идентификатор сканирования
status* String Статус процесса
Доступное значение: Import started

Пример

{
    "scanTaskId": "12345",
    "status": "Import started"
}

Получение статуса сканирования

Выполняет проверку статуса задачи на сканирование.

Запрос

GET /scan/{scanTaskId}/status

Параметры

Параметр Тип Описание
scanTaskId* Integer ID задачи на сканирование, полученный в результате Запуска импорта результатов сканирования

Ответ

Body

Параметр Тип Описание
status* String Статус процесса импорта
Доступные значения: PENDING, IN_PROCESS, BROKEN, IMPORTING,
SUCCESS, FAILED, CANCELLED.
details* String Подробная информация о возвращаемом статусе
qgCheckResult List Подробная информация о статусе прохождения Quality Gate в разрезе каждой практики (SAST, SCA, DAST) в запрошенном пайплайне.
Внимание: Необходим, если QG сконфигурирован, а статус сканирования SUCCESS или FAILED
summary Object Итоговая информация об импортированных уязвимостях.
Внимание: Необходим, если статус SUCCESS или FAILED
taggingHistoryRecord Object Информация о NXRM-тегировании
scanResultsUrl String URL для UI-страницы, с фильтрацией по ID сканирования
Quality Gate
Параметр Тип Описание
practice* String Имя практики
Доступные значения: SAST, SCA, DAST
status* String Статус прохождения QG
Доступные значения: PASSED, FAILED, N/A
violations List Перечень условий, по которым не был пройден QG
Summary
Параметр Тип Описание
new* Object Детальная информация о новых уязвимостях
repeated* Object Детальная информация о повторяющихся уязвимостях
fixed* Object Детальная информация об исправленных уязвимостях
total* Object Детальная информация об общем количестве открытых дефектов (новые и повторяющиеся)
Summary — детальная информация
Параметр Тип Описание
critical* Integer Количество критических импортированных уязвимостей с критическим уровнем серьезности
high* Integer Количество импортированных уязвимостей с высоким уровнем серьезности
medium* Integer Количество импортированных уязвимостей со средним уровнем серьезности
low* Integer Количество импортированных уязвимостей с низким уровнем серьезности
Тегирование
Параметр Тип Описание
status* String Статус тегирования
Возможные значения: SUCCESSFUL, FAILED
details* String Подробная информация о возвращенных статусах
appliedTags List Перечень примененных тегов в NXRM

Пример

{
    "status": "FAILED",
    "details": "QG is not passed. Import is finished. One ore more QG checks are not passed",
    "qgCheckResult": [{
            "practice": "SAST",
            "status": "N/A",
            "violations": null
        }, {
            "practice": "SCA",
            "status": "FAILED",
            "violations": ["Number of ALL SCA Security issues with HIGH severity (15) exceeds the limit (0)", "Number of ALL SCA Security issues with CRITICAL severity (29) exceeds the limit (0)"]
        }, {
            "practice": "DAST",
            "status": "N/A",
            "violations": null
        }
    ],
    "summary": {
        "new": {
            "critical": 29,
            "high": 15,
            "medium": 6,
            "low": 86
        },
        "repeated": {
            "critical": 0,
            "high": 0,
            "medium": 0,
            "low": 0
        },
        "fixed": {
            "critical": 0,
            "high": 0,
            "medium": 0,
            "low": 0
        },
        "total": {
            "critical": 29,
            "high": 15,
            "medium": 6,
            "low": 86
        }
    },
    "scanResultsUrl": "https://hub.dev.company.com/#/appprofile/2905/issues?scanId=12374"
}

Запуск сканирования и загрузка результатов сканирования из инструмента

Данный программный интерфейс реализует следующую функциональность:

  • Запуск сканирования кодовых баз.
  • Запуск сканирования артефактов.
  • Запуск сканирования инстансов.
  • Загрузка результатов сканирования из инструмента (без запуска сканирования).

Запрос

POST /integration

Примечание

Обязательные параметры отмечены *.

Body

В теле запроса должен быть передан один из следующих объектов, в зависимости от типа запроса:

  • Запрос на сканирование кодовой базы.
  • Запрос на сканирование артефакта.
  • Запрос на сканирование экземпляра приложения.
  • Запрос на импорт уязвимостей.

Запрос на сканирование кодовой базы

Параметр Тип Описание
onboardingType* String Тип запроса
Значение: CODEBASE
application* Object Идентифицирует объект приложения application
sources* List<Object> Перечень исходных объектов source типа codebase, подлежащих сканированию
unit Object Структурная единица приложения unit (компонент, модуль или микросервис).
Связывает артефакт/кодовую базу/экземпляр приложения со структурной единицей. Если указанная структурная единица отсутствует, она создается
name String Имя кодовой базы
scanInitiator Object Идентифицирует объект Scan initiator
releaseObject Object Идентифицирует объект Release object
release String Имя релиза
linkedArtifactVersion String Версия артефакта, связанного с целевой кодовой базой. Используется для тегирования артефактов
gitlabNotificationRequest Object Параметры уведомления GitLab

Запрос на сканирование артефакта

Параметр Тип Описание
onboardingType* String Тип запроса
Значение: ARTIFACT
application* Object Идентифицирует объект приложения application
sources* List<Object> Перечень исходных объектов source типа artifact, подлежащих сканированию
unit Object Структурная единица приложения unit (компонент, модуль или микросервис).
Связывает артефакт/кодовую базу/экземпляр приложения со структурной единицей. Если указанная структурная единица отсутствует, она создается
scanInitiator Object Идентифицирует объект Scan initiator
releaseObject Object Идентифицирует объект Release object
release String Имя релиза

Запрос на сканирование экземпляра приложения

Параметр Тип Описание
onboardingType* String Тип запроса
Значение: INSTANSE
application* Object Идентифицирует объект приложения application
sources* List<Object> Перечень исходных объектов source типа instance, подлежащих сканированию
name String Имя экземпляра приложения.
Если не указано - может быть сгенерировано во время онбординга с помощью path + stage
unit Object Структурная единица приложения unit (компонент, модуль или микросервис).
Связывает артефакт/кодовую базу/экземпляр приложения со структурной единицей. Если указанная структурная единица отсутствует, она создается
scanInitiator Object Идентифицирует объект Scan initiator
releaseObject Object Идентифицирует объект Release object
release String Имя релиза

Запрос на импорт уязвимостей

Параметр Тип Описание
onboardingType* String Тип запроса
Значение: ISSUE_IMPORT
application* Object Идентифицирует объект приложения application
sources* List<Object> Перечень исходных объектов source (одного и того же типа), которые были просканированы и результаты которых необходимо импортировать
scans* List<Object> Перечень объектов сканирования scan, содержащих результаты (уязвимости) для импорта
unit String Структурная единица приложения unit (компонент, модуль или микросервис)
scanInitiator Object Идентифицирует объект Scan initiator
releaseObject Object Идентифицирует объект Release object
release String Имя релиза
qualityGateCode String Код идентификации объекта Quality Gate (QG) в AppSec.Hub. При отсутствии используется QG из настроек пайплайна
Application
Параметр Тип Описание
code* String Код приложения в БД AppSec.Hub
externalId String Внешний ID нового приложения. Этот параметр используется при онбординге и впоследствии может игнорироваться
name String Имя приложения
Sources
Codebase
Параметр Тип Описание
type* String Тип анализируемого объекта
Значение: codebase
name String Имя кодовой базы в AppSec.Hub. При отсутствии генерируется имя на основе appcode, url и branch
url* String Внешний URL для клонирования/чекаута репозитория кодовой базы
isMonorepo boolean Флаг, указывающий, что сканируется конкретный путь репозитория в монорепозитории
repositoryPath String Обязательный параметр, если isMonorepo: true.
Путь к директории в монорепозитории.
Не должен быть указан, если isMonorepo: false
checkoutPath* String Директория расположения кодовой базы
branch String Ветвь или тег репозитория для основной кодовой базы.
Значение по умолчанию: master
commit String Ветвь или тег репозитория для основной кодовой базы.
Значение по умолчанию: master
buildTool String Инструмент сборки кодовой базы.
Доступные значения: maven, gradle, nuget, npm, pip, nap
Значение по умолчанию: maven
branchFilter String Фильтр сканируемых ветвей. Применяется для основной и дополнительных кодовых баз.
Значение по умолчанию: аналогично параметру ––branch
Artifact
Параметр Тип Описание
url* String URL артефакта
name* String Имя артефакта в AppSec.Hub
type* String Тип сканируемого объекта
Значение: artifact
Instance
Параметр Тип Описание
type* String Тип сканируемого объекта
Значение: instance
name String Имя инстанса в AppSec.Hub. При отсутствии генерируется на основе appcode и url
url* String URL установленного приложения
stage String Стадия приложения
apiPath String Путь к спецификации API без URL хоста
Unit
Параметр Тип Описание
name String Имя структурной единицы
code String Код структурной единицы
Scan initiator
Параметр Тип Описание
initiator String Информация об инициаторе сканирования, например ссылка на задачу сканирования в TeamCity
environment String Рабочая среда инициатора сканирования
Release object
Параметр Тип Описание
url String URL-адрес артефакта (в менеджере репозиториев), который рассматривается как релизный объект
Gitlab Notification Request
Параметр Тип Описание
projectId* String ID проекта GitLab CI
commitHash* String Хеш коммита, запустившего сборку
pipelineId String ID пайплайна GitLab CI
Scans

Каждый объект представлен в одном из следующих форматов.

Checkmarx
Параметр Тип Описание
url* String URL инструмента Checkmarx
product* String Идентификатор инструмента сканирования, который содержит импортируемые уязвимости
Значение: checkmarx
cxProject* String Имя проекта в Checkmarx
cxTeam String Имя команды Checkmarx
Значение по умолчанию: CxServer
cxScanId String ID сканирования в проекте Checkmarx. При отсутствии импортируются результаты последнего сканирования
AppSec.Track
Параметр Тип Описание
url* String URL инструмента AppSec.Track
product* String Идентификатор инструмента сканирования, который содержит импортируемые уязвимости
Значение: appsec-track
team* String Имя команды AppSec.Track
application* String Имя приложения AppSec.Track
scanGuid* String ID отчета приложения AppSec.Track
Стингрей
Параметр Тип Описание
url* String URL инструмента Стингрей
product* String Идентификатор инструмента сканирования
Значение: stingray
projectName
ИЛИ
scanId*
String Необходимо указать:
- или projectName, если импортируется последнее сканирование в проекте
- или scanId, если импортируется конкретный скан
PT Application Inspector
Параметр Тип Описание
url* String URL инструмента PT Application Inspector
product* String Идентификатор инструмента сканирования
Значение: appinspector
projectName* String Имя проекта
language* String Имя команды Checkmarx
Язык программирования
scanResultId String Необходимо указать, если импортируется конкретное сканирование
Solar appScreener
Параметр Тип Описание
url* String URL инструмента Solar appScreener
product* String Идентификатор инструмента сканирования, который содержит импортируемые уязвимости
Значение: appscreener
projectUuid* String ID проекта в Solar appScreener
scanUuid String ID сканирования в проекте Solar appScreener. При отсутствии импортируются результаты последнего сканирования
CodeScoring
Параметр Тип Описание
url* String URL инструмента CodeScoring
product* String Идентификатор инструмента сканирования
Значение: code-scoring
projectName* String Имя проекта
Dependecy-Track
Параметр Тип Описание
url* String URL инструмента Dependecy-Track
product* String Идентификатор инструмента сканирования
Значение: dependency-track
projectName* String Имя проекта
uuid* String

Примеры

Запрос на сканирование кодовой базы

{
    "application": {
        "code": "app2",
        "name": "app2"
    },
    "sources": [
        {
            "url": "https://gitlab.service.company.com/test-codebases/dvja.git",
            "branch": "master",
            "vcsType": "git",
            "name": "dvja-master",
            "buildTool": "maven",
            "branchFilter": "master",
            "type": "codebase",
            "checkoutPath": "/"
        }
    ],
    "unit": {
        "name": "unit_name1",
        "code": "unit_name1"
    },
    "scanInitiator": {
        "initiator": "http://jenkins.test.company.com/job/app2/job/7573_SAST_dvja-master/",
        "environment": "some env data"
    },
    "releaseObject": {
        "url": "https://nexus.test.company.com:8083/java-web-project:9.17"
    },
    "onboardingType": "CODEBASE"
}

Запрос на сканирование артефакта

{
    "application": {
        "code": "app2",
        "name": "app2"
    },
    "sources": [
        {
            "type": "artifact",
            "url": "https://nexus.test.company.com/repository/maven-releases/com/appsecco/dvja/5.09/dvja-5.09.war"
        }
    ],
    "unit": {
        "name": "unit_name1",
        "code": "unit_name1"
    },
    "scanInitiator": {
        "initiator": "http://jenkins.test.company.com/job/app2/job/SCA_dvja.war/",
        "environment": "some env data"
    },
    "releaseObject": {
        "url": "https://nexus.test.company.com:8083/java-web-project:9.17"
    },
    "onboardingType": "ARTIFACT"
}

Запрос на сканирование экземпляра приложения

{
    "application": {
        "code": "app5",
        "name": "app5"
    },
    "sources": [
        {
            "type": "instance",
            "stage": "ST",
            "url": "http://juice-shop.test.company.com",
            "name": "app_instance",
            "apiPath": "/files/openapi-swagger_basicauthentication.yaml"
        }
    ],
    "unit": {
        "name": "unit_name_test_app",
        "code": "unit_name_test_app"
    },
    "scanInitiator": {
        "initiator": "http://jenkins.test.company.com/job/app5/job/DAST_juice-shop-ST/",
        "environment": "some env data"
    },
    "releaseObject": {
        "url": "https://nexus.test.company.com:8083/java-web-project:9.17"
    },
    "onboardingType": "APP_INSTANCE"
}

Запрос на импорт уязвимостей кодовой базы

CodeScoring

{
    "application": {
        "code": "app7"
    },
    "sources": [
        {
            "url": "https://gitlab.service.company.com/test-codebases/php-complex-website.git",
            "branch": "main",
            "vcsType": "git",
            "checkoutPath": "/",
            "buildTool": "composer",
            "type": "codebase"
        }
    ],
    "scans": [
        {
            "url": "https://anteaters.clt.cdscrng.ru",
            "product": "code-scoring",
            "projectName": "serp1/dvja"
        }
    ],
    "onboardingType": "ISSUE_IMPORT"
}

AppSec.Track

{
    "application": {
        "code": "app3100"
    },
    "sources": [
        {
            "url": "https://gitlab.service.company.com/test-codebases/php-complex-website.git",
            "branch": "main",
            "vcsType": "git",
            "checkoutPath": "/",
            "buildTool": "composer",
            "type": "codebase"
        }
    ],
    "scans": [
        {
            "url": "https://track.test.company.com",
            "product": "appsec-track",
            "team": "CBAppSecTrackTestImportResult",
            "application": "CBAppSecTrackTestImportResult_java-web-project-master",
            "scanGuid": "d48071de-3b92-4dfc-99ae-dadc4818421b"
        }
    ],
    "onboardingType": "ISSUE_IMPORT"
}

Checkmarx

{
    "application": {
        "code": "app100"
    },
    "sources": [
        {
            "url": "https://gitlab.service.company.com/test-codebases/php-complex-website.git",
            "branch": "main",
            "vcsType": "git",
            "checkoutPath": "/",
            "buildTool": "composer",
            "type": "codebase"
        }
    ],
    "scans": [
        {
            "url": "https://cx.test.company.com",
            "product": "checkmarx",
            "cxProject": "template-for-import-scan-results-from-cx_application-with-team-cxserver-testteam",
            "cxTeam": "/CxServer/TestTeam"
        }
    ],
    "onboardingType": "ISSUE_IMPORT"
}

PT Application Inspector

{
    "application": {
        "code": "app10"
    },
    "sources": [
        {
            "url": "https://gitlab.service.company.com/test-codebases/php-complex-website.git",
            "branch": "main",
            "vcsType": "git",
            "checkoutPath": "/",
            "buildTool": "composer",
            "type": "codebase"
        }
    ],
    "scans": [
        {
            "url": "https://ptai.test.company.com/",
            "product": "appinspector",
            "projectName": "template-PTAI_java-web-project-master",
            "scanResultId": "67cc8b01-d78f-486c-ad1a-7c06ccbd204b",
            "language": "Java"
        }
    ],
    "onboardingType": "ISSUE_IMPORT"
}

Dependecy-Track

{
    "application": {
        "code": "app12"
    },
    "sources": [
        {
            "vcsType": "git",
            "type": "codebase",
            "url": "https://gitlab.service.company.com/open/maven-repository.git",
            "branch": "master",
            "checkoutPath": "/"
        }
    ],
    "scans": [
        {
            "url": "https://dep-track.test.company.com",
            "product": "dependency-track",
            "projectName": "template-DepTrack_maven-repository-master",
            "uuid": "19abb95a-4733-4bd8-a350-d7741330dc1d"
        }
    ],
    "onboardingType": "ISSUE_IMPORT"
}

Запрос на импорт уязвимостей артефакта

AppSec.Track

{
    "application": {
        "code": "app4"
    },
    "sources": [
        {
            "type": "artifact",
            "url": "https://nexus.test.company.com:8083/java-web-project:9.17",
            "name": "java-web-project.docker"
        }
    ],
    "scans": [
        {
            "url": "https://track.test.company.com",
            "product": "appsec-track",
            "team": "AppSecTrackTestImportResult",
            "application": "AppSecTrackTestImportResult_java-web-projectdocker",
            "scanGuid": "67f34b1c-f635-4d87-bb78-22c4dda27efd"
        }
    ],
    "onboardingType": "ISSUE_IMPORT"
}

CodeScoring

{
    "application": {
        "code": "app8"
    },
    "sources": [
        {
            "type": "artifact",
            "url": "https://nexus.test.company.com:8083/java-web-project:9.17"
        }
    ],
    "scans": [
        {
            "url": "https://anteaters.clt.cdscrng.ru",
            "product": "code-scoring",
            "projectName": "serp1/dvja"
        }
    ],
    "onboardingType": "ISSUE_IMPORT"
}

PT Application Inspector

{
    "application": {
        "code": "appCode"
    },
    "sources": [
        {
            "type": "artifact",
            "url": "https://nexus.test.company.com/repository/npm-group/ngclipboard/-/ngclipboard-2.0.0.tgz"
        }
    ],
    "scans": [
        {
            "url": "https://ptai.test.company.com/",
            "product": "appinspector",
            "projectName": "template-PTAI_java-web-project-master",
            "scanResultId": "67cc8b01-d78f-486c-ad1a-7c06ccbd204b",
            "language": "Java"
        }
    ],
    "onboardingType": "ISSUE_IMPORT"
}

Dependecy-Track

{
    "application": {
        "code": "application2"
    },
    "source": [
        {
            "type": "artifact",
            "url": "https://nexus.test.company.com:8083/java-web-project:9.17"
        }
    ],
    "scans": [
        {
            "url": "https://dep-track.test.company.com",
            "product": "dependency-track",
            "projectName": "template-DepTrack_maven-repository-master",
            "uuid": "19abb95a-4733-4bd8-a350-d7741330dc1d"
        }
    ]
}

Aqua Security

{
    "application": {
        "code": "app9"
    },
    "source": [
        {
            "type": "artifact",
            "url": "https://nexus.test.company.com:8083/java-web-project:2.17"
        }
    ],
    "scans": [
        {
            "url": "https://aqua.demo.company.ru/",
            "product": "aquasec",
            "aquaRegistry": "template_nexus_aqua_java-web-projectdocker"
        }
    ]
}

Запрос на импорт уязвимостей экземпляра приложения

Стингрей

{
    "application": {
        "code": <app_code>
    },
    "source": [
        {
            "type": "artifact",
            "name": <name>,
            "url": "https://docker.company.com/nginx/apk/auth/app-prod-debug-1.0.apk" 
        }
    ],
    "scans": [
        {
            "url": "https://staging.stingray-mobile.ru",
            "product": "mdast",
            "scanId": <scan_id_from_stingray>
        }
    ]
}

Ответ

Body

Параметр Тип Описание
taskId Object ID и тип задачи
onboardingType String Тип онбординга

Пример

{
    "taskId": {
        "id": 1219,
        "type": "ONBOARDING"
    },
    "onboardingType": "CODEBASE"
}

Импорт отчета об уязвимостях из инструментов, не имеющих интеграции с AppSec.Hub

Запрос

POST /integration/report

Body (multipart/form-data)

Параметр Тип Описание
json* binary Файл с метаданными отчета
reportFile* binary Файл отчета в формате AppSec.Hub

json

Параметр Тип Описание
application* Object Идентифицирует объект приложения application
release String Имя релиза
unit Object Структурная единица приложения unit (компонент, модуль или микросервис)
qualityGateCode String Код идентификации объекта Quality Gate (QG) в AppSec.Hub. При отсутствии используется QG из настроек пайплайна
Application
Параметр Тип Описание
code* String Код приложения в БД AppSec.Hub.
Параметр является обязательным, если appId не существует.
Один из параметров code, appId должен существовать
appId* String Внутренний идентификатор приложения.
Параметр является обязательным, если code не существует.
Один из параметров code, appId должен существовать
externalId String Указывает внешний идентификатор нового приложения. Этот параметр используется при онбординге и может быть проигнорирован в дальнейшем
name String Имя приложения
Unit
Параметр Тип Описание
name String Имя структурной единицы
code String Код структурной единицы

Пример

Пример JSON-файла

{
    "application": {

        "code": "AppCode1",
        "name": "AppName1",
        "externalIdd": "ExternalId1"

    },
    "release": "release1",
    "qualityGateCode": "QG1",
    "unit": {

        "code": "2b60310b-6efb-4f64-81de-e41f71edcd98",
        "name": "UnitName1"

    }

}

Ответ

Body

Параметр Тип Описание
taskId Object ID и тип задачи
onboardingType String Тип онбординга

Пример

{
    "taskId": {
        "id": 1219,
        "type": "ONBOARDING"
    },
    "onboardingType": null
}

.

К началу