Kaspersky Container Security

Ejecutar análisis en modo SBOM básico

Kaspersky Container Security le permite iniciar Scanner para verificar las imágenes en busca de vulnerabilidades en el modo SBOM básico. En este caso, la solución analiza un archivo SBOM creado especialmente y los resultados estarán disponibles en la etapa de CI/CD.

Los datos al escuchar e interceptar el tráfico de red deben transferirse de forma segura entre el entorno de CI/CD y la solución.

Puede generar un artefacto para descargar y recibir los resultados en los formatos .SPDX, .HTML, .JSON o .CDX.

Puede obtener los resultados de los análisis en el formato que especificó y también puede visualizarlos desde la sección ResourcesCI/CD.

En esta sección

Ejecutar un análisis en GitLab

Ejecutar un análisis fuera del proceso de CI/CD

Inicio de página
[Topic 297412]

Ejecutar un análisis en GitLab

Para iniciar el análisis en el modo SBOM básico en GitLab, al configurar el análisis de imágenes en el proceso de CI/CD, debe editar el archivo de configuración .gitlab-ci.yml de la siguiente manera:

  1. Añada información sobre la imagen que se analizará en CI/CD de la siguiente manera:

    scan_image:

    stage: scanner

    image:

    name:repo.cloud.example.com/repository/company/scanner:v.2.0.0-lite

    entrypoint: [""]

    pull_policy: always

  2. Detalle la etiqueta de la plataforma de orquestación:

    k8s

    En el ejemplo, la etiqueta k8s se utiliza para Kubernetes, pero también puede especificar otra etiqueta para otra plataforma de orquestación compatible.

  3. Especifique el ID de compilación, los datos del registro de imágenes de la imagen analizada y del certificado para establecer una conexión segura con el registro, el ID de la canalización y el token de la API para autorizar las solicitudes del análisis de CI/CD en Kaspersky Container Security de la siguiente manera:

    SCAN_TARGET: ${CI_REGISTRY_IMAGE}:master

    COMPANY_EXT_REGISTRY_USERNAME: ${COMPANY_EXT_REGISTRY_USERNAME}

    COMPANY_EXT_REGISTRY_PASSWORD: ${COMPANY_EXT_REGISTRY_PASSWORD}

    COMPANY_EXT_REGISTRY_TLS_CERT: ${COMPANY_EXT_REGISTRY_TLS_CERT}

    BUILD_NUMBER: ${CI_JOB_ID}

    BUILD_PIPELINE: ${CI_PIPELINE_ID}

    API_TOKEN: <API token value>

    HTTP_PROXY: <servidor proxy para solicitudes HTTP>

    HTTPS_PROXY<proxy server for HTTPS requests>

    NO_PROXY<domains or appropriate domain masks to be excluded from proxying>

    Los datos del certificado para establecer una conexión segura con el registro de imágenes en la variable COMPANY_EXT_REGISTRY_TLS_CERT se especifican como una cadena en el formato .PEM:
    -----BEGIN CERTIFICATE-----\n... <datos del certificado> ...\n-----END CERTIFICATE----- .

  4. Si es necesario, especifique una variable para analizar el certificado de la API de la solución:

    API_CA_CERT: ${KCS_CA_CERT}

    Si no se configura la variable API_CA_CERT, el análisis comenzará, pero no podrá completarse.

  5. Especifique la dirección web del servidor host de la API de Kaspersky Container Security:

    API_BASE_URL – <web address>

  6. Especifique el comando para crear un artefacto en uno de los siguientes formatos cuando se inicie el análisis:
    • Para generar un artefacto en el formato .JSON:

      script:

      - /bin/sh /entrypoint.sh $SCAN_TARGET --stdout > artifact-result.json

      artifacts:

      paths:

      - artifact-result.json

    • Para generar un artefacto en el formato .HTML:

      script:

      - /bin/sh /entrypoint.sh $SCAN_TARGET --html --stdout > artifact-result.html

      artifacts:

      paths:

      - artifact-result.html

    • Para generar un artefacto SBOM en el formato .SPDX:

      script:

      - /bin/sh /entrypoint.sh $SCAN_TARGET --spdx --stdout > artifact-result.spdx

      artifacts:

      paths:

      - artifact-result.spdx

    • Para generar un artefacto SBOM en el formato .JSON:

      script:

      - /bin/sh /entrypoint.sh $SCAN_TARGET --cdx --stdout > artifact-result.cdx.json

      artifacts:

      paths:

      - artifact-result.cdx.json

Ejemplo de un análisis configurado para ejecutarse en el modo SBOM básico y la generación de un artefacto en el formato .HTML en GitLab

scan_image:

stage: scanner

image:

name: repo.cloud.example.com/repository/company/scanner:v.2.0.0-lite

entrypoint: [""]

pull_policy: always

tags:

- k8s

variables:

SCAN_TARGET: ${CI_REGISTRY_IMAGE}:master

COMPANY_EXT_REGISTRY_USERNAME: ${COMPANY_EXT_REGISTRY_USERNAME}

COMPANY_EXT_REGISTRY_PASSWORD: ${COMPANY_EXT_REGISTRY_PASSWORD}

BUILD_NUMBER: ${CI_JOB_ID}

BUILD_PIPELINE: ${CI_PIPELINE_ID}

API_CA_CERT: ${KCS_CA_CERT}

API_TOKEN: <API token value>

# Demostand KCS.int API:

API_BASE_URL: <web address>

script:

- /bin/sh /entrypoint.sh $SCAN_TARGET --html --stdout > artifact-result.html

artifacts:

paths:

- artifact-result.html

Inicio de página

[Topic 301503]

Ejecutar un análisis fuera del proceso de CI/CD

En caso de recursos limitados, puede ejecutar la herramienta de análisis de Kaspersky Container Security independientemente de los nodos de trabajo en el proceso de CI/CD. Por ejemplo, mediante el comando docker run en un nodo de Docker o como un Job en un clúster de Kubernetes.

Para ahorrar la mayor cantidad de recursos, recomendamos utilizar la imagen scanner: 2.0.0-lite, ya que no contiene bases de datos de vulnerabilidades y envía el archivo SBOM en función de los resultados del análisis de la imagen de destino a la solución que utiliza la API.

Para iniciar la herramienta de análisis de Kaspersky Container Security fuera del proceso de CI/CD, debe especificar los siguientes parámetros obligatorios:

  • API_TOKEN: el <valor del token de la API> es el token del usuario de Kaspersky Container Security para la autenticación en la interfaz de la API de la solución.
  • API_BASE_URL: la <dirección web> es un enlace para acceder a la interfaz de la API de Kaspersky Container Security. Se puede acceder a la interfaz mediante los protocolos HTTP y HTTPS, según las variables de entorno de la solución desplegada.
  • API_CA_CERT: el <certificado en formato .PEM> es una variable para la validación del certificado de la API de la solución.
  • SKIP_API_SERVER_VALIDATION = true es una variable que, de ser necesario, se puede especificar para omitir la validación del certificado de la API de Kaspersky Container Security.

También puede especificar parámetros adicionales para el funcionamiento de la herramienta de análisis:

  • COMPANY_EXT_REGISTRY_USERNAME: el <nombre de usuario del registro> es el nombre de usuario del registro donde se almacena la imagen que se va a analizar.
  • COMPANY_EXT_REGISTRY_PASSWORD: la <contraseña del usuario del registro> es la contraseña del usuario del registro donde se almacena la imagen que se va a analizar.
  • BUILD_NUMBER: el <ID del número de compilación> es el ID que se usa para rastrear el número de compilación en la interfaz de la solución. Kaspersky Container Security muestra el número en los resultados del análisis del proceso de CI/CD.
  • BUILD_PIPELINE: el <ID del número de canalización> es el identificador que se utiliza para rastrear el número de canalización en la interfaz de la solución. Kaspersky Container Security muestra el número en los resultados del análisis del proceso de CI/CD.
  • HTTP_PROXY: el <servidor proxy para solicitudes HTTP> es una variable que indica el uso de un servidor proxy HTTP cuando se requiere acceso a recursos externos.
  • HTTPS_PROXY: el <servidor proxy para solicitudes HTTPS> es una variable que indica el uso de un servidor proxy HTTPS cuando se requiere acceso a recursos externos.
  • NO_PROXY: los <dominios o máscaras correspondientes a dominios utilizados para la exclusión de proxy> son una variable que indica los recursos disponibles de manera local cuando se utiliza un servidor proxy.

Ejecutar un análisis en Docker

Para iniciar un análisis en el modo SBOM básico en Docker:

  1. Especifique los parámetros obligatorios para Kaspersky Container Security:

    -e API_TOKEN=<valor del token de la API>

    -e API_BASE_URL=https://company.com

    -e API_CA_CERT: <certificado en formato .PEM> o -e SKIP_API_SERVER_VALIDATION=true

  2. Si es necesario, especifique parámetros adicionales para Kaspersky Container Security.
  3. Especifique la imagen de análisis que se ejecutará:

    repo.kcs.company.com/images/scanner:v2.0.0-lite

  4. Si necesita generar un artefacto para descargar, detalle la siguiente información:

    --<formato del artefacto --stdout > result.<file format>

    Por ejemplo:

    --html --stdout > result.html

  5. Asegúrese de que el archivo de configuración .docker/config.json contenga los datos para conectarse al registro de imágenes con la imagen de análisis. Si es necesario, ejecute uno de los siguientes comandos: docker login repo.company.com o docker login repo.kcs.kaspersky.com.
  6. Inicie el análisis.

    Si aparece el mensaje de error de resolución de nombre de dominio (Name does not resolve) al llamar al análisis, debe especificar la dirección antes de la variables API_BASE_URL, antes del servidor interno DNS de la organización. Por ejemplo:

    --dns 10.0.xx.x

Si la imagen de análisis y la imagen que se analizará están guardadas en su registro y necesita generar un artefacto con los resultados del análisis en formato .JSON, las variables iniciales del análisis se especifican de la siguiente manera:

docker run --dns 10.0.10.10 \

-e "API_BASE_URL=https://kcs.company.com" \

-e "SKIP_API_SERVER_VALIDATION=true" \

-e "API_TOKEN=${api_token}" \

-e "COMPANY_EXT_REGISTRY_USERNAME=${user}" \

-e "COMPANY_EXT_REGISTRY_PASSWORD=${password}"

repo.company.com/images/scanner:v2.0.0-lite \

repo.company.com/images/alpine:latest --stdout > result.json

Si la imagen de análisis se almacena en un registro público de Kaspersky (el nodo extrae esta imagen a través de su servidor proxy), la imagen analizada se almacena localmente en el nodo como un archivo comprimido y usted necesita generar un artefacto con los resultados del análisis en formato .SPDX, las variables iniciales del análisis se especifican de la siguiente manera:

docker run --dns 10.0.10.10 \

-e "API_BASE_URL=https://kcs.company.com" \

-e "SKIP_API_SERVER_VALIDATION=true" \

-e "API_TOKEN=${api_token}" \

-e "HTTPS_PROXY=http://user:password@cliente.proxy.com:8080" \

-v ./image_to_scan.tar:/image.tar \

repo.kcs.kaspersky.com/images/scanner:v2.0.0-lite \

image.tar --file --spdx --stdout > result.spdx

Ejecutar el análisis como un Job en un clúster de Kubernetes

Pasos para ejecutar el análisis en modo SBOM lite como un Job en un clúster de Kubernetes:

  1. Asegúrese de que el nodo que ejecuta los comandos contenga kubectl y el archivo de configuración para el clúster de Kubernetes correspondiente, y que sean accesibles para el usuario que ejecuta los comandos.
  2. Asegúrese de que exista un secreto en el espacio de nombres correspondiente para autenticar y descargar la imagen de análisis desde el registro en cuestión.

    Puede crear el secreto usted mismo; por ejemplo, con el siguiente comando:

    kubectl create secret docker-registry <nombre del secreto> --docker-server=<FQDN del repositorio> --docker-username=nombre de usuario --docker-password=contraseña

  3. Especifique los valores de los parámetros obligatorios y adicionales (si corresponde) para que el análisis se ejecute como una tarea en el clúster de Kubernetes.

    Los parámetros se especifican en el archivo usado para ejecutar el análisis en formato .YAML de la siguiente manera:

    apiVersion: batch/v1

    kind: Job

    metadata:

    name: my-lite-job

    spec:

    template:

    spec:

    containers:

    - name: my-lite-container

    image: repo.company.com/images/scanner:v2.0.0-lite

    command: ["/bin/sh"]

    args: ["entrypoint.sh", "alpine:latest"]

    env:

    - name: COMPANY_EXT_REGISTRY_USERNAME

    value: <usuario para la autenticación en el registro de imágenes donde se encuentra la imagen a analizar >

    - name: COMPANY_EXT_REGISTRY_PASSWORD

    value: <contraseña para la autenticación en el registro de imágenes donde se encuentra la imagen a analizar >

    - name: API_BASE_URL

    value: https://kcs.company.local

    - name: API_TOKEN

    value: <token para la autenticación en la API de Kaspersky Container Security >

    - name: SKIP_API_SERVER_VALIDATION

    value: 'true'

    imagePullPolicy: Always

    restartPolicy: Never

    imagePullSecrets:

    - name: <nombre del secreto para la autenticación y extracción de la imagen de análisis>

    backoffLimit: 0

  4. Inicie el análisis en el clúster de Kubernetes:

    kubectl apply -f my-lite-job.yaml

Inicio de página
[Topic 301504]