Требования к OVAL-файлам
OVAL-файл должен быть корректным XML-документом с корневым элементом oval_definitions.
В OVAL-файле могут быть описаны:
- сведения о генераторе в элементе
oval_definitions/generator, например:<generator>...</generator>; - название продукта в элементе
generator/oval:product_name, например:<oval:product_name>Название</oval:product_name>; - версия OVAL-схемы в элементе
generator/oval:schema_version, например:<oval:schema_version>5.11.2</oval:schema_version>; - время формирования файла в элементе
generator/oval:timestamp, например:<oval:timestamp>2026-01-01T00:00:00Z</oval:timestamp>; - версия продукта в элементе
generator/oval:product_version, например:<oval:product_version>1.1</oval:product_version>; - список OVAL-проверок в элементе
oval_definitions/definitions, например:<definitions>...</definitions>; - конкретная OVAL-проверка в блоке
definitions/definition, например:<definition id="oval:custom:def:1" version="1" class="compliance">. В блокеdefinitionмогут быть описаны:- уникальный идентификатор в атрибуте
definition/@id, например:id="oval:custom:def:1"; - версия в атрибуте
definition/@version, например:version="1"; - класс проверки в атрибуте
definition/@class, например:class="compliance"; - метаданные проверки в блоке
definition/metadata, например:<metadata>...</metadata>. В блокеmetadataмогут быть описаны:- название OVAL-проверки в элементе
metadata/title, например:<title>Принудительное использование истории паролей</title>; - описание OVAL-проверки в элементе
metadata/description, например:<description>Проверяется, что значение параметра password_hist_len больше или равно 24</description>; - применимая платформа в элементе
metadata/affected, например:<affected family="windows">...</affected>; - семейство платформы в атрибуте
metadata/affected/@family, например:family="windows"; - конкретные платформы в элементах
metadata/affected/platform, например:<platform>Windows 10</platform>.
- название OVAL-проверки в элементе
- критерии проверки в блоке
definition/criteria, например:<criteria>...</criteria>. В блокеcriteriaмогут быть описаны:- условия проверки в элементах
definition/criteria/criterion, например:<criterion test_ref="oval:custom:tst:1" comment="Описание условия проверки"/>; - внешние ссылки на OVAL-определения внутри того же бенчмарка с помощью элементов
definition/criteria/extend_definition, например:<extend_definition definition_ref="oval:custom:def:10" version="1" class="compliance" comment="Комментарий"/>.Внешние ссылки на OVAL-определения из архива другого бенчмарка не поддерживаются. Такой бенчмарк возможно импортировать, но сканирование активов на соответствие его профилям завершится с ошибкой.
- условия проверки в элементах
- уникальный идентификатор в атрибуте
- используемые тесты в элементе
oval_definitions/tests, например:<tests>...</tests>; - конкретный тест в элементе
tests/windows:passwordpolicy_test, например:<windows:passwordpolicy_test id="oval:custom:tst:1" version="1" check="all">; - используемые объекты в элементе
oval_definitions/objects, например:<objects>...</objects>; - конкретный объект в элементе
objects/windows:passwordpolicy_object, например:<windows:passwordpolicy_object id="oval:custom:obj:1" version="1"/>; - используемые состояния в элементе
oval_definitions/states, если они требуются проверками, например:<states>...</states>; - конкретное состояние в элементе
states/windows:passwordpolicy_state, например:<windows:passwordpolicy_state id="oval:custom:ste:1" version="1">; - используемые переменные в элементе
oval_definitions/variables, если они требуются проверками, например:<variables>...</variables>; - конкретная переменная в элементе
variables/constant_variable, например:<constant_variable id="oval:custom:var:1" version="1" datatype="int">.
Пример блока definition
<definition id="oval:custom:def:1" version="1" class="compliance">
<metadata>
<title>Принудительное использование истории паролей</title>
<description>Проверяется, что значение параметра password_hist_len больше или равно 24.</description>
<affected family="windows">
<platform>Windows 10</platform>
<platform>Windows 11</platform>
<platform>Windows Server 2019</platform>
<platform>Windows Server 2022</platform>
</affected>
</metadata>
<criteria>
<criterion test_ref="oval:custom:tst:1" comment="Проверка значения password_hist_len"/>
</criteria>
</definition>
Требования к идентификаторам OVAL
Все элементы OVAL, на которые выполняются ссылки, должны иметь уникальные идентификаторы.
Идентификаторы OVAL должны использовать стандартный формат: oval:<namespace>:<type>:<number>
Где:
<namespace>– пространство имен поставщика или профиля;<type>– тип OVAL-элемента;<number>– числовой идентификатор элемента.
Допустимые значения <type>:
def– definition;tst– test;obj– object;ste– state;var– variable.
Примеры идентификаторов:
oval:custom:def:1
oval:custom:tst:1
oval:custom:obj:1
oval:custom:ste:1
oval:custom:var:1
Допускается использовать собственное пространство имен, например:
oval:example.company.security:def:10000001
oval:example.company.security:tst:10000001
oval:example.company.security:obj:10000001
oval:example.company.security:ste:10000001
Идентификаторы должны быть стабильными и не должны изменяться между версиями одного и того же профиля соответствия без необходимости.
Поддерживаемые типы OVAL-тестов
В пользовательских OVAL-файлах допускается использование следующих типов тестов:
- Проверки Linux:
ind:textfilecontent54_test
ind:variable_test
linux:inetlisteningservers_test
linux:partition_test
linux:systemdunitproperty_test
unix:file_test
unix:password_test
unix:sysctl_test
- Проверки DEB-пакетов (для Debian, Ubuntu, Astra Linux и других DEB-based систем):
linux:dpkginfo_test
- Проверки RPM-пакетов (для ALT Linux, RedOS и других RPM-based систем):
linux:rpminfo_test
- Проверки Windows:
windows:auditeventpolicysubcategories_test
windows:lockoutpolicy_test
windows:passwordpolicy_test
windows:registry_test
windows:sid_sid_test
windows:user_sid55_test
windows:userright_test
windows:wmi57_test
Использование других типов OVAL-тестов не поддерживается.
Требования к tests, objects и states
Каждый OVAL-тест должен ссылаться на существующий объект через элемент object_ref.
Если для проверки требуется сравнение с ожидаемым значением, тест должен ссылаться на существующее состояние через элемент state_ref.
Типы test, object и state должны соответствовать друг другу.
Пример:
<tests>
<ind:textfilecontent54_test id="oval:custom:tst:1" version="1" check="all">
<ind:object object_ref="oval:custom:obj:1"/>
<ind:state state_ref="oval:custom:ste:1"/>
</ind:textfilecontent54_test>
</tests>
<objects>
<ind:textfilecontent54_object id="oval:custom:obj:1" version="1">
...
</ind:textfilecontent54_object>
</objects>
<states>
<ind:textfilecontent54_state id="oval:custom:ste:1" version="1">
...
</ind:textfilecontent54_state>
</states>
Примеры соответствия типов:
ind:textfilecontent54_test ind:textfilecontent54_object ind:textfilecontent54_state
linux:dpkginfo_test linux:dpkginfo_object
linux:rpminfo_test linux:rpminfo_object
unix:file_test unix:file_object unix:file_state
unix:sysctl_test unix:sysctl_object unix:sysctl_state
windows:registry_test windows:registry_object windows:registry_state
windows:passwordpolicy_test windows:passwordpolicy_object windows:passwordpolicy_state
windows:lockoutpolicy_test windows:lockoutpolicy_object windows:lockoutpolicy_state
windows:userright_test windows:userright_object windows:userright_state
windows:auditeventpolicysubcategories_test windows:auditeventpolicysubcategories_object windows:auditeventpolicysubcategories_state
windows:wmi57_test windows:wmi57_object windows:wmi57_state
Требования к variables
Если проверка использует переменные, они должны быть описаны в секции variables.
Допускается использование переменных, необходимых для работы поддерживаемых типов OVAL-тестов.
Переменная должна иметь уникальный идентификатор и использоваться только в рамках связанной OVAL-проверки.