Как определить версию продукта#

Последовательность выполнения#

Последовательность выполнения сценария определяется одним из вариантов проверки. Для определения версии продукта DropApp существует несколько способов.

Определение версии DropApp через метку образа#

В дистрибутиве DropApp у каждого образа есть внутреннее свойство образа - метка (label), это пары ключ-значение.

Например:

"Labels": {
  "creation_time": "08-11-2024 16-46-20",
  "dapp_ver": "3.0.0",
  "git_branch": "release/k8sc-3.0.0",
  "git_hash": "<hash_number>",
  "io.buildah.version": "1.33.8",
  "product_version": "Platform V DropApp 3.0.0",
  "upstream_ver": "v3.17.1",
  "vendor": "SBERTECH JSC"
  }, 

Определение версии продукта#

Версию DropApp, для которой собран образ, можно определить с помощью вывода утилиты grep по поиску метки dapp_ver

podman inspect <image_catalog>/<image_name>:<tag> | grep dapp_ver

Где:

  • <tag> - тег;

  • <image_name> - имя образа;

  • <image_catalog> - путь до образа в репозитории.

Результат вывода будет примерно таким:

podman inspect <image_catalog>/<image_name>:<tag> | grep dapp_ver
                    "dapp_ver": "3.0.0",
               "dapp_ver": "3.0.0",

В данном примере выводится информации о версия DropApp 3.0.0.

Определение версии программного компонента DropApp#

Версию программного компонента DropApp, для которой собран образ, можно определить с помощью вывода утилиты grep по поиску метки git_branch

podman inspect <image_catalog>/<image_name>:<tag> | grep git_branch

Результат вывода будет примерно таким:

podman inspect <image_catalog>/<image_name>:<tag> | grep git_branch
                    "git_branch": "release/k8sc-3.0.0",
               "git_branch": "release/k8sc-3.0.0",

В данном примере выводится информации о программном компоненте K8SC версии 3.0.0.

Определение версии DropApp через версию Kubernetes#

Определить версии DropApp через версию Kubernetes можно с помощью утилиты Kubectl.

  1. Для определения версии Kubernetes введите команду:

    kubectl version
    

    В выводе команды версия указана в разделе Server Version: version.Info -> GitVersion:

    [root@cp01 username]# kubectl version
    WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short.  Use --output=yaml|json to get the full version.
    Client Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.16", GitCommit:"af01b000f00", GitTreeState:"clean", BuildDate:"2024-10-29T00:00:00Z", GoVersion:"go1.23.2",    Compiler:"gc", Platform:"linux/amd64"}
    Kustomize Version: v5.0.1
    Server Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.16", GitCommit:"<GIT_COMMIT_HASH>", GitTreeState:"clean", BuildDate:"2024-11-08T12:24:34Z",    GoVersion:"go1.22.7", Compiler:"gc", Platform:"linux/amd64"}
    

    В данном примере версия Kubernetes v1.27.16

  2. Для определения версии DropApp воспользуйтесь таблицей сопоставления версий в разделе «Соответствие версий DropApp и Kubernetes» документа «Описание».

    Версия Kubernetes v1.27.16 соответствует версии DropApp k8sc 3.1.0.

Определение версии DropApp через UI интерфейс OKD console#

Вариант определения пользователем версии продукта DropApp через UI интерфейс OKD console представлен в разделе «Как определить версию продукта» документа «Руководство пользователя».

SWID-теги#

SWID-теги образов#

Начиная с версии 5.0.0, во все поставляемые образы продукта добавлены теги идентификации программного обеспечения (Software Identification Tag, SWID-теги) в поле annotations.

SWID-теги определяются стандартами ISO / IEC 19770-2:2015, ГОСТ Р ИСО/МЭК 19770-2-2014 «Информационные технологии. Менеджмент программных активов. Часть 2. Тег идентификации программного обеспечения» и представляют собой структурированные метаданные для описания программного продукта. Они идентифицируют программный продукт, характеризуют его версию, организации и отдельных лиц, принимавших участие в разработке и распространении продукта, содержат информацию об артефактах, составляющих программный продукт, связях между программными продуктами и другие описательные метаданные. SWID-теги предоставляют информацию, необходимую для:

  • автоматизации установки программного обеспечения на протяжении всего жизненного цикла его развертывания;

  • автоматизации инвентаризации программного обеспечения в рамках процесса управления программными активами (Software Asset Management, SAM);

  • оценки уязвимостей программного обеспечения;

  • обнаружения отсутствующих исправлений;

  • проверки контрольных списков конфигурации;

  • проверки целостности программного обеспечения;

  • составления белых и черных списков для установки и запуска;

  • других сценариев использования в сфере безопасности и эксплуатации.

В манифест образов контейнеров добавлено поле annotations, в которое добавляются значения из файла для SWID-тега. Заполнение поля annotations можно проверить командой docker buildx imagetools inspect --raw | jq, например:

docker buildx imagetools inspect --raw <repository>/k8sc/5.0.0/dapp-apiserver-network-proxy/proxy-agent-amd64:v0.34.0 | jq

Поле annotations имеет вид:

"annotations": {
  "org.opencontainers.image.base.digest": "",
  "org.opencontainers.image.base.name": "",
  "regid.2021-12.ru.sbertech_k8s-5.0.0.product_title": "Platform V DropApp",
  "regid.2021-12.ru.sbertech_k8s-5.0.0.product_version": "5.0.0",
  "regid.2021-12.ru.sbertech_k8s-5.0.0.software_creator.name": "Sbertech",
  "regid.2021-12.ru.sbertech_k8s-5.0.0.software_creator.regid": "regid.2021-12.ru.sbertech",
  "regid.2021-12.ru.sbertech_k8s-5.0.0.software_id.tag_creator_regid": "regid.2021-12.ru.sbertech",
  "regid.2021-12.ru.sbertech_k8s-5.0.0.software_id.unique_id": "k8s-5.0.0",
  "regid.2021-12.ru.sbertech_k8s-5.0.0.software_licensor.name": "Sbertech",
  "regid.2021-12.ru.sbertech_k8s-5.0.0.software_licensor.regid": "regid.2021-12.ru.sbertech",
  "regid.2021-12.ru.sbertech_k8s-5.0.0.tag_creator.name": "Sbertech",
  "regid.2021-12.ru.sbertech_k8s-5.0.0.tag_creator.regid": "regid.2021-12.ru.sbertech",
  "regid.2021-12.ru.sbertech_k8sc-5.0.0.component_of.tag_creator_regid": "regid.2021-12.ru.sbertech",
  "regid.2021-12.ru.sbertech_k8sc-5.0.0.component_of.unique_id": "k8s-5.0.0",
  "regid.2021-12.ru.sbertech_k8sc-5.0.0.product_title": "K8S Core",
  "regid.2021-12.ru.sbertech_k8sc-5.0.0.product_version": "5.0.0",
  "regid.2021-12.ru.sbertech_k8sc-5.0.0.software_creator.name": "Sbertech",
  "regid.2021-12.ru.sbertech_k8sc-5.0.0.software_creator.regid": "regid.2021-12.ru.sbertech",
  "regid.2021-12.ru.sbertech_k8sc-5.0.0.software_id.tag_creator_regid": "regid.2021-12.ru.sbertech",
  "regid.2021-12.ru.sbertech_k8sc-5.0.0.software_id.unique_id": "k8sc-5.0.0",
  "regid.2021-12.ru.sbertech_k8sc-5.0.0.software_licensor.name": "Sbertech",
  "regid.2021-12.ru.sbertech_k8sc-5.0.0.software_licensor.regid": "regid.2021-12.ru.sbertech",
  "regid.2021-12.ru.sbertech_k8sc-5.0.0.tag_creator.name": "Sbertech",
  "regid.2021-12.ru.sbertech_k8sc-5.0.0.tag_creator.regid": "regid.2021-12.ru.sbertech"
}

SWID-теги RPM-пакетов#

Начиная с версии 5.1.1, добавлена функциональность SWID-тегов для RPM-пакетов в составе DropApp.

SWID-теги соответствуют кодам продукта K8S и его компонентов, K8SC, K8SU, K8SO, в состав которых входят RPM-пакеты.

Каждый пакет несет два типа SWID-тегов:

  1. Тег продукта — идентифицирует продукт (общий тег для всех компонентов DropApp).

  2. Тег компонента — идентифицирует конкретный компонент (например, k8sc), в который входит RPM-пакет.

SWID-теги устанавливаются вместе с RPM-пакетами и хранятся в каталоге /usr/bin/ рядом с исполняемыми файлами:

  • Тег компонента:

    /usr/bin/regid.2021-12.ru.sbertech_<component>-<version>.swidtag
    

    Где:

    • <component> - код компонента, например, k8sc для компонента K8SC;

    • <version> – версия компонента, например, 5.1.1 для версии 5.1.1.

  • Тег продукта:

    /usr/bin/regid.2021-12.ru.sbertech_K8S-<version>.swidtag
    

    Где <version> – версия продукта K8S.

Теги продукта и компонента создаются первым установленным RPM-пакетом, входящим в состав соответствующего компонента. Подробнее про состав компонентов – в разделе «Состав дистрибутива» Руководства по установке. Устанавливаемые далее пакеты оставляют теги без изменений.

При удалении RPM-пакетов тег компонента удаляется только после удаления последнего пакета из числа, входящих в компонент. Аналогично, тег продукта удаляется после удаления последнего пакета из набора всех компонентов DropApp.

Примеры SWID-тегов и описание элементов#

Ниже приведены примеры тегов продукта и компонента:

Пример SWID-тега продукта
<?xml version="1.0" encoding="utf-8"?>
<software_identification_tag
  xmlns="http://standards.iso.org/iso/19770/-2/2009/schema.xsd"
  xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://standards.iso.org/iso/19770/-2/2009/schema.xsd schema.xsd"
  id="product_k8s">
  <entitlement_required_indicator>false</entitlement_required_indicator>
  <product_title>Platform V DropApp</product_title>
  <product_version>
    <name>5.1.1</name>
    <numeric>
      <major>5</major>
      <minor>1</minor>
      <build>1</build>
      <review>0</review>
    </numeric>
  </product_version>
  <software_creator>
    <name>SBERTECH JSC</name>
    <regid>regid.2021-12.ru.sbertech</regid>
  </software_creator>
  <software_licensor>
    <name>SBERTECH JSC</name>
    <regid>regid.2021-12.ru.sbertech</regid>
  </software_licensor>
  <software_id>
    <unique_id>K8S-5.1.1</unique_id>
    <tag_creator_regid>regid.2021-12.ru.sbertech</tag_creator_regid>
  </software_id>
  <tag_creator>
    <name>SBERTECH JSC</name>
    <regid>regid.2021-12.ru.sbertech</regid>
  </tag_creator>
</software_identification_tag>
Пример SWID-тега компонента
<?xml version="1.0" encoding="utf-8"?>
<software_identification_tag
  xmlns="http://standards.iso.org/iso/19770/-2/2009/schema.xsd"
  xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://standards.iso.org/iso/19770/-2/2009/schema.xsd schema.xsd"
  id="AAAAA">
  <entitlement_required_indicator>false</entitlement_required_indicator>
  <product_title>K8S Core</product_title>
  <product_version>
    <name>5.1.1</name>
    <numeric>
      <major>5</major>
      <minor>1</minor>
      <build>1</build>
      <review>0</review>
    </numeric>
  </product_version>
  <software_creator>
    <name>SberTech</name>
    <regid>regid.2021-12.ru.sbertech</regid>
  </software_creator>
  <software_licensor>
    <name>SberTech</name>
    <regid>regid.2021-12.ru.sbertech</regid>
  </software_licensor>
  <software_id>
    <unique_id>k8sc-5.1.1</unique_id>
    <tag_creator_regid>regid.2021-12.ru.sbertech</tag_creator_regid>
  </software_id>
  <tag_creator>
    <name>SberTech</name>
    <regid>regid.2021-12.ru.sbertech</regid>
  </tag_creator>
  <component_of>
    <software_id>
      <unique_id>k8s-5.1.1</unique_id>
      <tag_creator_regid>regid.2021-12.ru.sbertech</tag_creator_regid>
    </software_id>
  </component_of>
</software_identification_tag>

Где:

  • <software_identification_tag ...> — описание пространств имен и схемы:

    • xmlns — пространство имен по умолчанию для элементов SWID‑тега;

    • xmlns:ds — пространство имен XML Digital Signature. Используется, если тег дополняется криптографической подписью;

    • xmlns:xsi — стандартное пространство имен для атрибутов из XML Schema Instance;

    • xsi:schemaLocation — расположение схемы XSD (XML Schema Definition), по которой может выполняться валидация файла.

  • <entitlement_required_indicator> — индикатор необходимости выверки прав на использование.

  • <product_title> — наименование продукта/компонента.

  • <product_version> — версия продукт/компонента, определяемая как 2 элемента:

    • <name> — текстовое имя версии одной строкой;

    • <numeric> — числовой идентификатор версии, состоящий из 4 элементов:

      • <major> — мажорная версия;

      • <minor> — минорная версия;

      • <build> — номер сборки;

      • <review> — номер ревизии.

  • <software_creator> — описание создателя программного обеспечения, которое включает:

    • <name> — наименование организации-производителя;

    • <regid> — регистрационный идентификатор организации, содержащий дату регистрации идентификатора (год‑месяц) и доменное имя организации-владельца.

  • <software_licensor> — описание правообладателя с полями <name> и <regid>, заполняемыми аналогично <software_creator>.

  • <software_id> — уникальный идентификатор ПО:

    • <unique_id> — код и версия продукта/компонента;

    • <tag_creator_regid> — регистрационный идентификатор организации, создавшей данный SWID‑тег.

  • <tag_creator> — описание организации, создавшей тег, с полями <name> и <regid>, заполняемыми аналогично <software_creator>.

  • <component_of> — информация о родительском продукте (только для тегов компонентов):

    • <software_id> — идентификатор родительского продукта:

      • <unique_id> — уникальный идентификатор продукта;

      • <tag_creator_regid> — регистрационный идентификатор создателя тега.

Поиск файлов с SWID-тегами#

Найти файлы со SWID-тегами можно с помощью утилиты locate, создав/обновив предварительно базу данных:

updatedb
locate '*.swidtag'