Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
kubeclarity — KubeClarity — это инструмент для обнаружения и управления Software Bill Of Materials (SBOM) и уязвимостями контейнерных образов и файловых систем. | Kitploit
Инструменты/GitHubGitHub/openclarity/kubeclarity
Сканеры уязвимостейБезопасность контейнеровАнализ уязвимостейАудит конфигурацииБезопасность облачных средDevSecOpsБезопасность Цепочки ПоставокArchived
GitHubopenclarity/kubeclarity

kubeclarity

KubeClarity — это инструмент для обнаружения и управления Software Bill Of Materials (SBOM) и уязвимостями контейнерных образов и файловых систем.

Репозиторий
456171 год назадПроверено Kitploit

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

[!IMPORTANT] KubeClarity устарел и заменен на openclarity/openclarity.

См. объявление о выпуске для получения дополнительной информации.

Этот проект не получает обновлений. Рекомендуем перейти на новую версию.

KubeClarity Logo

KubeClarity — это инструмент для обнаружения и управления Software Bill Of Materials (SBOM) и уязвимостями образов контейнеров и файловых систем. Он сканирует как работающие кластеры K8s, так и конвейеры CI/CD для повышения безопасности цепочки поставок программного обеспечения.

Содержание

  • Зачем?
    • Проблемы обнаружения SBOM и уязвимостей
    • Решение
  • Возможности
    • Интегрированные генераторы SBOM и сканеры уязвимостей
  • Архитектура
  • Начало работы
    • Бэкенд KubeClarity
      • Установка с помощью Helm
      • Удаление с помощью Helm
      • Сборка и запуск локально с демо-данными
    • CLI
      • Установка
  • Генерация SBOM
  • Сканирование уязвимостей
  • Экспорт результатов в бэкенд KubeClarity
  • Расширенная конфигурация
    • Генерация SBOM с использованием локального Docker-образа как входных данных
    • Сканирование уязвимостей с использованием локального Docker-образа как входных данных
    • Поддержка приватных реестров для CLI
    • Поддержка приватных реестров для сканирования среды выполнения K8s
    • Объединение SBOM и уязвимостей на разных этапах CI/CD
    • Вывод разных форматов SBOM
    • Удаленные серверы сканирования для CLI
  • Ограничения
  • План развития
  • Участие в разработке
  • Лицензия
  • Зачем?

    Проблемы обнаружения SBOM и уязвимостей

    • Эффективное сканирование уязвимостей требует точного обнаружения Software Bill Of Materials (SBOM):
      • Различные языки программирования и менеджеры пакетов
      • Различные дистрибутивы ОС
      • Информация о зависимостях пакетов обычно удаляется при сборке
    • Какой сканер/анализатор SBOM лучший?
    • Что следует сканировать: репозитории Git, сборки, образы контейнеров или среду выполнения?
    • Каждый сканер/анализатор имеет свой формат — как сравнивать результаты?
    • Как управлять обнаруженными SBOM и уязвимостями?
    • Как новые найденные уязвимости влияют на мои приложения?

    Решение

    • Разделите сканирование уязвимостей на 2 фазы:
      • Анализ содержимого для генерации SBOM
      • Сканирование SBOM на уязвимости
    • Создайте плагинную инфраструктуру для:
      • Параллельного запуска нескольких анализаторов содержимого
      • Параллельного запуска нескольких сканеров уязвимостей
    • Сканируйте и объединяйте результаты между разными этапами CI с помощью KubeClarity CLI
    • Сканирование среды выполнения K8s для обнаружения уязвимостей, выявленных после развертывания
    • Группируйте сканируемые ресурсы (образы/каталоги) под определенными приложениями для навигации по дереву зависимостей объектов (приложения, ресурсы, пакеты, уязвимости)

    Возможности

    • Панель мониторинга
      • Исправляемые уязвимости по степени серьезности
      • Топ-5 уязвимых элементов (приложения, ресурсы, пакеты)
      • Тренды новых уязвимостей
      • Количество пакетов по типу лицензии
      • Количество пакетов по языку программирования
      • Общие счетчики
    • Приложения
      • Автоматическое обнаружение приложений в среде выполнения K8s
      • Создание/редактирование/удаление приложений
      • Для каждого приложения навигация к связанным:
        • Ресурсам (образам/каталогам)
        • Пакетам
        • Уязвимостям
        • Лицензиям, используемым ресурсами
    • Ресурсы приложений (образы/каталоги)
      • Для каждого ресурса навигация к связанным:
        • Приложениям
        • Пакетам
        • Уязвимостям
    • Пакеты
      • Для каждого пакета навигация к связанным:
        • Приложениям
        • Связываемому списку ресурсов и обнаруживающих анализаторов SBOM
        • Уязвимостям
    • Уязвимости
      • Для каждой уязвимости навигация к связанным:
        • Приложениям
        • Ресурсам
        • Списку обнаруживающих сканеров
    • Сканирование среды выполнения K8s
      • Сканирование по требованию или по расписанию
      • Автоматическое обнаружение целевых пространств имен
      • Ход сканирования и навигация по результатам для каждого затронутого элемента (приложения, ресурсы, пакеты, уязвимости)
      • Бенчмарк CIS Docker
    • CLI (CI/CD)
      • Генерация SBOM с помощью нескольких интегрированных анализаторов содержимого (Syft, cyclonedx-gomod)
      • Сканирование уязвимостей SBOM/образов/каталогов с помощью нескольких интегрированных сканеров (Grype, Dependency-track)
      • Объединение SBOM и уязвимостей на разных этапах CI/CD
      • Экспорт результатов в бэкенд KubeClarity
    • API
      • API для KubeClarity можно найти здесь

    Интегрированные генераторы SBOM и сканеры уязвимостей

    Анализатор содержимого KubeClarity интегрируется со следующими генераторами SBOM:

    • Syft
    • Cyclonedx-gomod
    • Trivy

    Сканер уязвимостей KubeClarity интегрируется со следующими сканерами:

    • Grype
    • Dependency-Track
    • Trivy

    Архитектура

    Начало работы

    Бэкенд KubeClarity

    Установка с помощью Helm:

    1. Добавьте Helm-репозиторий ```shell helm repo add kubeclarity https://openclarity.github.io/kubeclarity

      root@kitploit:~
    2. Сохраните значения диаграммы KubeClarity по умолчанию

      root@kitploit:~
      helm show values kubeclarity/kubeclarity > values.yaml
      
    3. Проверьте конфигурацию в values.yaml и обновите необходимые значения, если это требуется. Чтобы включить и настроить поддерживаемые генераторы SBOM и сканеры уязвимостей, проверьте конфигурацию "analyzer" и "scanner" под разделом "vulnerability-scanner" в значениях Helm.

    4. Разверните KubeClarity с помощью Helm ```shell helm install --values values.yaml --create-namespace kubeclarity kubeclarity/kubeclarity -n kubeclarity

      root@kitploit:~

    или для установки, совместимой с OpenShift Restricted SCC: ```shell helm install --values values.yaml --create-namespace kubeclarity kubeclarity/kubeclarity -n kubeclarity --set global.openShiftRestricted=true
    --set kubeclarity-postgresql.securityContext.enabled=false --set kubeclarity-postgresql.containerSecurityContext.enabled=false
    --set kubeclarity-postgresql.volumePermissions.enabled=true --set kubeclarity-postgresql.volumePermissions.securityContext.runAsUser="auto"
    --set kubeclarity-postgresql.shmVolume.chmod.enabled=false

    root@kitploit:~
    3. Проброс порта к KubeClarity UI:   ```shell
    kubectl port-forward -n kubeclarity svc/kubeclarity-kubeclarity 9999:8080
    
    1. Откройте интерфейс KubeClarity в браузере: http://localhost:9999/

    ПРИМЕЧАНИЕ
    KubeClarity требует следующих разрешений K8s:

    РазрешениеПричина
    Чтение секретов в CREDS_SECRET_NAMESPACE (по умолчанию: kubeclarity)Это позволяет настроить секреты извлечения образов для сканирования частных репозиториев образов.
    Чтение config maps в пространстве имен развертывания KubeClarity.Это необходимо для получения настроенного шаблона задания сканера.
    Просмотр списка подов в области кластера.Это необходимо для вычисления целевых подов, которые нужно отсканировать.
    Просмотр списка пространств имен.Это необходимо для получения целевых пространств имен для сканирования в интерфейсе сканирования среды выполнения K8s.
    Создание и удаление заданий в области кластера.Это необходимо для управления заданиями, которые будут сканировать целевые поды в их пространствах имен.

    Удаление с помощью Helm:

    1. Helm uninstall ```shell helm uninstall kubeclarity -n kubeclarity

      root@kitploit:~
    2. Очистка ресурсов

      По умолчанию Helm не удаляет PVC и PV для StatefulSets. Выполните следующую команду, чтобы удалить их все:

      root@kitploit:~
      kubectl delete pvc -l app.kubernetes.io/instance=kubeclarity -n kubeclarity
      

    Сборка и локальный запуск с демонстрационными данными

    1. Сборка UI и бэкенда и запуск бэкенда локально (2 варианта):

      1. Использование Docker:
        1. Сборка UI и бэкенда (тег образа устанавливается с помощью VERSION):
          root@kitploit:~
          VERSION=test make docker-backend
          
        2. Запуск бэкенда с демонстрационными данными:
          root@kitploit:~
          docker run -p 8080:8080 -e FAKE_RUNTIME_SCANNER=true -e FAKE_DATA=true -e ENABLE_DB_INFO_LOGS=true -e DATABASE_DRIVER=LOCAL ghcr.io/openclarity/kubeclarity:test run
          
      2. Локальная сборка:
        1. Сборка UI и бэкенда
          root@kitploit:~
          make ui && make backend
          
        2. Копирование собранного сайта:
          root@kitploit:~
          cp -r ./ui/build ./site
          
        3. Запуск бэкенда локально с демонстрационными данными:
          root@kitploit:~
          FAKE_RUNTIME_SCANNER=true DATABASE_DRIVER=LOCAL FAKE_DATA=true ENABLE_DB_INFO_LOGS=true ./backend/bin/backend run
          
    2. Откройте UI KubeClarity в браузере: http://localhost:8080/

    CLI

    KubeClarity включает CLI, который можно запускать локально и который особенно полезен для конвейеров CI/CD. Он позволяет анализировать образы и каталоги для генерации SBOM и сканировать их на наличие уязвимостей. Результаты могут быть экспортированы в бэкенд KubeClarity.

    Установка

    Распространение в виде бинарных файлов

    Загрузите дистрибутив релиза для вашей ОС с страницы релизов

    Распакуйте бинарный файл kubeclarity-cli, добавьте его в PATH, и всё готово!

    Docker-образ

    Docker-образ доступен по адресу ghcr.io/openclarity/kubeclarity-cli со списком доступных тегов здесь.

    Локальная компиляция

    ``` make cli ``` Copy `./cli/bin/cli` to your PATH под именем `kubeclarity-cli`.

    Генерация SBOM

    Использование:``` kubeclarity-cli analyze <image/directory name> --input-type <dir|file|image(default)> -o

    root@kitploit:~
    Пример:```
    kubeclarity-cli analyze --input-type image nginx:latest -o nginx.sbom
    

    Optionally a list of the content analyzers to use can be configured using the ANALYZER_LIST env variable seperated by a space (e.g ANALYZER_LIST="<analyzer 1 name> <analyzer 2 name>")

    Example:``` ANALYZER_LIST="syft gomod" kubeclarity-cli analyze --input-type image nginx:latest -o nginx.sbom

    root@kitploit:~
    ### Сканирование уязвимостей
    
    Использование:```
    kubeclarity-cli scan <image/sbom/directoty/file name> --input-type <sbom|dir|file|image(default)> -f <output file>
    

    Пример:``` kubeclarity-cli scan nginx.sbom --input-type sbom

    root@kitploit:~
    По желанию можно настроить список используемых сканеров уязвимостей с помощью переменной окружения `SCANNERS_LIST`, разделенных пробелом (например, `SCANNERS_LIST="<Scanner1 name> <Scanner2 name>"`)```
    SCANNERS_LIST="grype trivy" kubeclarity-cli scan nginx.sbom --input-type sbom
    

    Экспорт результатов в бэкенд KubeClarity

    Для экспорта результатов CLI в бэкенд KubeClarity необходимо использовать идентификатор приложения, определённый бэкендом KubeClarity. Идентификатор приложения можно найти на экране «Приложения» в пользовательском интерфейсе или с помощью API KubeClarity.

    Экспорт SBOM```

    The SBOM can be exported to KubeClarity backend by setting the BACKEND_HOST env variable and the -e flag.

    Note: Until TLS is supported, BACKEND_DISABLE_TLS=true should be set.

    BACKEND_HOST= BACKEND_DISABLE_TLS=true kubeclarity-cli analyze --application-id -e -o

    For example:

    BACKEND_HOST=localhost:9999 BACKEND_DISABLE_TLS=true kubeclarity-cli analyze nginx:latest --application-id 23452f9c-6e31-5845-bf53-6566b81a2906 -e -o nginx.sbom

    root@kitploit:~
    #### Экспорт результатов сканирования уязвимостей```
    # The vulnerability scan result can be exported to KubeClarity backend by setting the BACKEND_HOST env variable and the -e flag.
    # Note: Until TLS is supported, BACKEND_DISABLE_TLS=true should be set.
    
    BACKEND_HOST=<KubeClarity backend address> BACKEND_DISABLE_TLS=true kubeclarity-cli scan <image> --application-id <application ID> -e
    
    # For example:
    SCANNERS_LIST="grype" BACKEND_HOST=localhost:9999 BACKEND_DISABLE_TLS=true kubeclarity-cli scan nginx.sbom --input-type sbom  --application-id 23452f9c-6e31-5845-bf53-6566b81a2906 -e
    

    Расширенная конфигурация

    Генерация SBOM с использованием локального образа docker в качестве входных данных```

    Local docker images can be analyzed using the LOCAL_IMAGE_SCAN env variable

    For example:

    LOCAL_IMAGE_SCAN=true kubeclarity-cli analyze nginx:latest -o nginx.sbom

    root@kitploit:~
    ## Сканирование уязвимостей с использованием локального образа docker в качестве входных данных```
    # Local docker images can be scanned using the LOCAL_IMAGE_SCAN env variable
    
    # For example:
    LOCAL_IMAGE_SCAN=true kubeclarity-cli scan nginx.sbom
    

    Поддержка частного реестра для CLI

    KubeClarity CLI может читать файл конфигурации, который хранит учетные данные для частных реестров.

    Пример раздела реестра в файле конфигурации:``` registry: auths: - authority: <registry 1> username: <username for registry 1> password: <password for registry 1> - authority: <registry 2> token: <token for registry 2>

    root@kitploit:~
    Пример конфигурации реестра без авторизации: (в этом случае эти учетные данные будут использоваться для всех реестров)```
    registry:
      auths:
        - username: <username>
          password: <password>
    

    Укажите файл конфигурации для CLI```

    The default config path is $HOME/.kubeclarity or it can be specified by --config command line flag.

    kubeclarity <scan/analyze> --config

    For example:

    kubeclarity scan registry/nginx:private --config $HOME/own-kubeclarity-config

    root@kitploit:~
    ## Private registries support for K8s runtime scan
    
    Kubeclarity использует [k8schain](https://github.com/google/go-containerregistry/tree/main/pkg/authn/k8schain#k8schain) от google/go-containerregistry для аутентификации в реестрах. Если необходимые учетные данные службы не обнаруживаются k8schain, их можно задать через секреты, описанные ниже.
    
    Кроме того, если учетные данные службы не находятся в пространстве имен "kubeclarity", установите CREDS_SECRET_NAMESPACE в развертывании kubeclarity. При использовании helm [charts](https://github.com/openclarity/kubeclarity/blob/main/charts) CREDS_SECRET_NAMESPACE устанавливается в пространство имен релиза, в котором установлен kubeclarity.
    
    ### Amazon ECR
    
    Создайте [пользователя AWS IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) с разрешениями `AmazonEC2ContainerRegistryFullAccess`.
    
    Используйте учетные данные пользователя (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_DEFAULT_REGION`) для создания следующего секрета:```
    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: ecr-sa
      namespace: kubeclarity
    type: Opaque
    data:
      AWS_ACCESS_KEY_ID: $(echo -n 'XXXX'| base64 -w0)
      AWS_SECRET_ACCESS_KEY: $(echo -n 'XXXX'| base64 -w0)
      AWS_DEFAULT_REGION: $(echo -n 'XXXX'| base64 -w0)
    EOF
    

    Примечание:

    1. Имя секрета должно быть ecr-sa
    2. Ключи данных секрета должны быть установлены как AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY и AWS_DEFAULT_REGION

    Google GCR

    Создайте сервисный аккаунт Google с разрешениями Artifact Registry Reader.

    Используйте файл JSON сервисного аккаунта для создания следующего секрета``` kubectl -n kubeclarity create secret generic --from-file=sa.json gcr-sa

    root@kitploit:~
    Примечание:
    1. Имя секрета должно быть `gcr-sa`
    1. `sa.json` должно быть именем файла JSON сервисного аккаунта при генерации секрета
    2. KubeClarity использует [стандартные учетные данные приложения](https://developers.google.com/identity/protocols/application-default-credentials). Они работают только при запуске KubeClarity из GCP.
    
    ## Слияние SBOM и уязвимостей между различными этапами CI/CD```
    # Additional SBOM will be merged into the final results when '--merge-sbom' is defined during analysis. The input SBOM can be CycloneDX XML or CyclonDX json format.
    # For example:
    ANALYZER_LIST="syft" kubeclarity-cli analyze nginx:latest -o nginx.sbom --merge-sbom inputsbom.xml
    

    Вывод различных форматов SBOM

    Команда kubeclarity-cli analyze может форматировать полученный SBOM в разные форматы, если необходимо интегрироваться с другой системой. Поддерживаемые форматы:

    ФорматИмя конфигурации
    CycloneDX JSON (по умолчанию)cyclonedx-json
    CycloneDX XMLcyclonedx-xml
    SPDX JSONspdx-json
    SPDX Tag Valuespdx-tv
    Syft JSONsyft-json

    ПРЕДУПРЕЖДЕНИЕ
    KubeClarity внутренне обрабатывает CycloneDX, другие форматы поддерживаются через преобразование. Процесс преобразования может быть необратимым из-за несовместимости между форматами, поэтому не гарантируется, что все поля/информация будут присутствовать в результирующем выводе.

    Чтобы настроить kubeclarity-cli на использование формата, отличного от стандартного, можно использовать переменную окружения ANALYZER_OUTPUT_FORMAT с именем конфигурации из таблицы выше:``` ANALYZER_OUTPUT_FORMAT="spdx-json" kubeclarity-cli analyze nginx:latest -o nginx.sbom

    root@kitploit:~
    ## Серверы удалённого сканирования для CLI
    
    При запуске CLI kubeclarity для сканирования уязвимостей, CLI потребуется загрузить соответствующие базы данных уязвимостей в то место, где запущен CLI kubeclarity. Запуск CLI в конвейере CI/CD приведет к загрузке БД при каждом запуске, что тратит время и пропускную способность. По этой причине несколько поддерживаемых сканеров имеют удаленный режим, в котором сервер отвечает за управление БД и, возможно, сканирование артефактов.
    
    > ***Примечание***
    >
    > Приведенные ниже примеры предназначены для каждого из сканеров, но их можно комбинировать для совместной работы так же, как и в не-удаленном режиме.
    
    ### Trivy
    
    Сканер Trivy поддерживает удаленный режим с использованием сервера Trivy. Сервер Trivy можно развернуть, как описано здесь: [режим клиент-сервер Trivy](https://aquasecurity.github.io/trivy/v0.34/docs/references/modes/client-server/). Инструкции по установке CLI Trivy доступны здесь: [установка Trivy](https://aquasecurity.github.io/trivy/v0.34/getting-started/installation/). Команда Aqua предоставляет официальный образ контейнера, который можно использовать для запуска сервера в kubernetes/docker, который мы будем использовать в примерах здесь.
    
    Чтобы запустить сервер:```
    docker run -p 8080:8080 --rm aquasec/trivy:0.41.0 server --listen 0.0.0.0:8080
    

    Чтобы запустить сканирование с использованием сервера:``` SCANNERS_LIST="trivy" SCANNER_TRIVY_SERVER_ADDRESS="http://:8080" ./kubeclarity_cli scan --input-type sbom nginx.sbom

    root@kitploit:~
    Сервер trivy также предоставляет аутентификацию на основе токенов для предотвращения несанкционированного использования экземпляра сервера trivy. Вы можете включить её, запустив сервер с дополнительным флагом:```
    docker run -p 8080:8080 --rm aquasec/trivy:0.41.0 server --listen 0.0.0.0:8080 --token mytoken
    

    и передача токена сканеру:``` SCANNERS_LIST="trivy" SCANNER_TRIVY_SERVER_ADDRESS="http://:8080" SCANNER_TRIVY_SERVER_TOKEN="mytoken" ./kubeclarity_cli scan --input-type sbom nginx.sbom

    root@kitploit:~
    ### Grype
    
    Grype поддерживает удаленный режим с использованием [grype-server](https://github.com/portshift/grype-server) — RESTful обёртки для Grype, которая предоставляет API, принимающее SBOM и возвращающее результаты сканирования Grype для этого SBOM. Grype-server поставляется в виде контейнерного образа, поэтому может запускаться в kubernetes или с помощью docker как отдельное приложение.
    
    To start the server:```
    docker run -p 9991:9991 --rm gcr.io/eticloud/k8sec/grype-server:v0.1.5
    

    Чтобы запустить сканирование с помощью сервера:``` SCANNERS_LIST="grype" SCANNER_GRYPE_MODE="remote" SCANNER_REMOTE_GRYPE_SERVER_ADDRESS=":9991" SCANNER_REMOTE_GRYPE_SERVER_SCHEMES="https" ./kubeclarity_cli scan --input-type sbom nginx.sbom

    root@kitploit:~
    Если сервер Grype развернут с TLS, вы можете переопределить схему URL по умолчанию, например:```
    SCANNERS_LIST="grype" SCANNER_GRYPE_MODE="remote" SCANNER_REMOTE_GRYPE_SERVER_ADDRESS="<grype server address>:9991" SCANNER_REMOTE_GRYPE_SERVER_SCHEMES="https" ./kubeclarity_cli scan --input-type sbom nginx.sbom
    

    Dependency Track

    Пример конфигурации см. здесь

    Ограничения

    1. Поддерживает Docker Image Manifest V2, Schema 2 (https://docs.docker.com/registry/spec/manifest-v2-2/). Сканирование более ранних версий не будет работать.

    Дорожная карта

    • Интеграция с дополнительными анализаторами контента (генераторы SBOM)
    • Интеграция с дополнительными сканерами уязвимостей
    • Бенчмарк CIS Docker в пользовательском интерфейсе
    • Подписание образов с помощью Cosign
    • Подписание метаданных CI/CD и аттестация с помощью Cosign и in-toto (безопасность цепочки поставок)
    • Системные настройки и управление пользователями

    Вклад

    Приветствуются Pull requests и сообщения об ошибках.

    Для более крупных изменений, пожалуйста, сначала создайте Issue в GitHub, чтобы обсудить предлагаемые изменения и возможные последствия.

    Более подробную информацию можно найти в руководстве по внесению вклада в этот проект

    Лицензия

    Apache License, Version 2.0

    Скачать инструмент