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

Интеграция AppSec.Track CLI в пайплайны CI/CD

AppSec.Track CLI — это утилита командной строки, позволяющая:

Пример пайплайна GitLab CI

Для интеграции AppSec.Track CLI с пайплайном инструмента GitLab CI необходимо настроить пайплайн так, как показано в примере ниже.

variables:
  SCANNER_IMAGE: example.ex/example/sca-track-cli:3.14.1
  SCANNER_APP: testing_cli_app 
  SCANNER_TEAM: testing_cli_team 
  APP_VERSION: "0.0.1"
  APP_ENVIRONMENT: dev
  TRACK_URL: https://track.example.ru
  TRACK_TOKEN: "111" 
  SBOM_NAME: sbom.json
  SCANNING_IMAGE: example.ex/example/nginx:latest

Scan Repo:
  stage: SCAN
  image: 
    name: $SCANNER_IMAGE
    entrypoint: [""]
  script:
    - mkdir -p ~/.docker && echo $DOCKER_CONF > ~/.docker/config.json
    - /app/appsec-track-cli scan 
      -a $SCANNER_APP
      -t $SCANNER_TEAM
      -v $APP_VERSION
      -e $APP_ENVIRONMENT
      -s $TRACK_URL
      --token $TRACK_TOKEN
      --sbom-output-file $SBOM_NAME
      --no-progress
      fs $CI_PROJECT_DIR

Scan Image:
  stage: SCAN
  image: 
    name: $SCANNER_IMAGE
    entrypoint: [""]
  script:
    - mkdir -p ~/.docker && echo $DOCKER_CONF > ~/.docker/config.json
    - /app/appsec-track-cli scan 
      -a $SCANNER_APP
      -t $SCANNER_TEAM
      -v $APP_VERSION
      -e $APP_ENVIRONMENT
      -s $TRACK_URL
      --token $TRACK_TOKEN
      --sbom-output-file $SBOM_NAME
      --cache-dir $TRIVY_JAVA_DB
      --no-progress
      image $SCANNING_IMAGE

Примеры лога задания при наличии блокирующих политик

Scan Image:

2025-02-06T09:44:24Z    INFO    ***** AppSec.Track CLI 3.14.1.33 *****
2025-02-06T09:44:24Z    INFO    Operation mode: SCAN
2025-02-06T09:44:24Z    INFO    Application name: testing_cli_app
2025-02-06T09:44:24Z    INFO    Application team: testing_cli_team
2025-02-06T09:44:24Z    INFO    Application version: 0.0.1
2025-02-06T09:44:24Z    INFO    Application environment: dev
2025-02-06T09:44:26Z    WARN    Unable to initialize trivy-java-db. trivy-java-db will not be used to parse jar files.  err="cache dir doesn't contain trivy-java-db."
2025-02-06T09:44:26Z    INFO    Save response to file   filename="sbom.json"
2025-02-06T09:44:26Z    INFO    Sending SBOM report tohttps://track.example.ru/api/sca/json
2025-02-06T09:44:30Z    INFO    Сканирование завершено. Компоненты нарушают блокирующие политики
<<<CRITICAL POLICIES>>>
╭──────────────────────────────────────────────────────────────┬───────────────────────────────────────────┬─────────┬───────────────────────────╮
│                            Policy                            │                 Component                 │ Blocked │          Details          │
├──────────────────────────────────────────────────────────────┼───────────────────────────────────────────┼─────────┼───────────────────────────┤
│ Приложения                                                   │ pkg:deb/curl@7.88.1-10+deb12u7            │ yes     │ KLA61027 (7.5) and 5 more │
│                                                              │ pkg:deb/bash@5.2.15-2+b7                  │ yes     │ AST-2024-045965 (7.8)     │
│                                                              │ pkg:deb/tar@1.34+dfsg-1.2+deb12u1         │ yes     │ KLA48401 (5.5)            │
│                                                              │ pkg:deb/ca-certificates@20230311          │ yes     │                           │
│                                                              │ pkg:deb/fontconfig-config@2.14.1-4        │ yes     │                           │
│                                                              │ pkg:deb/libbz2-1.0@1.0.8-5+b1             │ yes     │                           │
│                                                              │ pkg:deb/libyuv0@0.0~git20230123.b2528b0-1 │ yes     │                           │
│                                                              │ pkg:deb/gpgv@2.2.40-1.1                   │ yes     │                           │
│                                                              │ pkg:deb/libudev1@252.30-1~deb12u2         │ yes     │                           │
│                                                              │ pkg:deb/base-passwd@3.6.1                 │ yes     │                           │
│                                                              │                                           │         │                           │
│ Компонент содержит уязвимость с оценкой критичности CVSS > 1 │ pkg:deb/curl@7.88.1-10+deb12u7            │ yes     │ KLA61027 (7.5) and 5 more │
│                                                              │ pkg:deb/bash@5.2.15-2+b7                  │ yes     │ AST-2024-045965 (7.8)     │
│                                                              │ pkg:deb/tar@1.34+dfsg-1.2+deb12u1         │ yes     │ KLA48401 (5.5)            │
╰──────────────────────────────────────────────────────────────┴───────────────────────────────────────────┴─────────┴───────────────────────────╯
2025-02-06T09:44:30Z    INFO    Link to report: https://track.example.ru/sca/scan/82ee799d-252e-4f47-a02e-57a24c0b536a
Cleaning up project directory and file based variables
00:01
ERROR: Job failed: command terminated with exit code 1

Scan Repo:

2025-02-06T09:44:24Z    INFO    ***** AppSec.Track CLI 3.14.1.33 *****
2025-02-06T09:44:24Z    INFO    Operation mode: SCAN
2025-02-06T09:44:24Z    INFO    Application name: testing_cli_app
2025-02-06T09:44:24Z    INFO    Application team: testing_cli_team
2025-02-06T09:44:24Z    INFO    Application version: 0.0.1
2025-02-06T09:44:24Z    INFO    Application environment: dev
2025-02-06T09:44:24Z    WARN    Unable to initialize trivy-java-db. trivy-java-db will not be used to parse jar files.  err="Java DB open error: can't open db: sql: unknown driver \"sqlite\" (forgotten import?)"
2025-02-06T09:45:29Z    INFO    Save response to file   filename="sbom.json"
2025-02-06T09:45:29Z    INFO    Sending SBOM report tohttps://track.example.ru/api/sca/json
2025-02-06T09:45:39Z    INFO    Сканирование завершено. Компоненты нарушают блокирующие политики
<<<CRITICAL POLICIES>>>
╭──────────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────────┬─────────┬────────────────────────────────────╮
│                            Policy                            │                          Component                           │ Blocked │              Details               │
├──────────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────┼─────────┼────────────────────────────────────┤
│ Приложения                                                   │ pkg:maven/com.fasterxml.jackson.core/jackson-databind@2.9.1  │ yes     │ AST-2024-000018 (5.9) and 137 more │
│                                                              │ pkg:golang/github.com/hashicorp/go-getter@v1.7.5             │ yes     │ KLA41657 (8.6) and 3 more          │
│                                                              │ pkg:maven/org.apache.logging.log4j/log4j-core@2.23.1         │ yes     │                                    │
│                                                              │ pkg:golang/github.com/imdario/mergo@v0.3.16                  │ yes     │                                    │
│                                                              │ pkg:golang/go.opentelemetry.io/contrib/instrumentation/goog- │ yes     │                                    │
│                                                              │ le.golang.org/grpc/otelgrpc@v0.49.0                          │         │                                    │
│                                                              │ pkg:golang/k8s.io/klog/v2@v2.120.1                           │ yes     │                                    │
│                                                              │ pkg:golang/github.com/aws/aws-sdk-go-v2/config@v1.27.27      │ yes     │                                    │
│                                                              │ pkg:golang/github.com/containerd/containerd/api@v1.7.19      │ yes     │                                    │
│                                                              │ pkg:golang/github.com/makenowjust/heredoc@v1.0.0             │ yes     │                                    │
│                                                              │ pkg:golang/github.com/chai2010/gettext-go@v1.0.2             │ yes     │                                    │
│                                                              │                                                              │         │                                    │
│ Компонент содержит уязвимость с оценкой критичности CVSS > 1 │ pkg:maven/com.fasterxml.jackson.core/jackson-databind@2.9.1  │ yes     │ AST-2024-000018 (5.9) and 137 more │
│                                                              │ pkg:golang/github.com/hashicorp/go-getter@v1.7.5             │ yes     │ KLA41657 (8.6) and 3 more          │
│                                                              │                                                              │         │                                    │
│ Компонент опубликован после 24/02/2022                       │ pkg:maven/org.apache.logging.log4j/log4j-core@2.23.1         │ yes     │                                    │
╰──────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────┴─────────┴────────────────────────────────────╯
2025-02-06T09:45:39Z    INFO    Link to report: https://track.example.ru/sca/scan/dbc1253c-36bc-433b-aa7f-827308049683
Cleaning up project directory and file based variables
00:01
ERROR: Job failed: command terminated with exit code 1

Примеры лога задания при отсутствии блокирующих политик

Scan Image:

2025-02-06T10:37:42Z    INFO    ***** AppSec.Track CLI 3.14.1.33 *****
2025-02-06T10:37:42Z    INFO    Operation mode: SCAN
2025-02-06T10:37:42Z    INFO    Application name: testing_cli_app
2025-02-06T10:37:42Z    INFO    Application team: testing_cli_team
2025-02-06T10:37:42Z    INFO    Application version: 0.0.1
2025-02-06T10:37:42Z    INFO    Application environment: dev
2025-02-06T10:37:44Z    WARN    Unable to initialize trivy-java-db. trivy-java-db will not be used to parse jar files.  err="cache dir doesn't contain trivy-java-db."
2025-02-06T10:37:44Z    INFO    Save response to file   filename="sbom.json"
2025-02-06T10:37:44Z    INFO    Sending SBOM report tohttps://track.example.ru/api/sca/json
2025-02-06T10:37:55Z    INFO    Сканирование завершено. Блокирующие политики не нарушены
2025-02-06T10:37:55Z    INFO    Link to report: https://track.example.ru/sca/scan/a66c07b1-bd2a-44c4-b6dd-4520a26cf1e0
Cleaning up project directory and file based variables
00:02
Job succeeded

Scan Repo:

2025-02-06T10:37:35Z    INFO    ***** AppSec.Track CLI 3.14.1.33 *****
2025-02-06T10:37:35Z    INFO    Operation mode: SCAN
2025-02-06T10:37:35Z    INFO    Application name: testing_cli_app
2025-02-06T10:37:35Z    INFO    Application team: testing_cli_team
2025-02-06T10:37:35Z    INFO    Application version: 0.0.1
2025-02-06T10:37:35Z    INFO    Application environment: dev
2025-02-06T10:37:54Z    WARN    Unable to initialize trivy-java-db. trivy-java-db will not be used to parse jar files.  err="Java DB open error: can't open db: sql: unknown driver \"sqlite\" (forgotten import?)"
2025-02-06T10:37:54Z    INFO    Save response to file   filename="sbom.json"
2025-02-06T10:37:54Z    INFO    Sending SBOM report tohttps://track.example.ru/api/sca/json
2025-02-06T10:38:08Z    INFO    Сканирование завершено. Блокирующие политики не нарушены
2025-02-06T10:38:08Z    INFO    Link to report: https://track.example.ru/sca/scan/4a685963-a268-4403-babe-aca806ad6b9d
Cleaning up project directory and file based variables
00:01
Job succeeded