Пример создания и применения конфигурации для сбора файловых данных
Для сбора данных о файлах на конечных устройствах используется формула file-find, реализующая настраиваемый поиск по файловой системе на базе модуля file.find. Она позволяет проводить файловую инвентаризацию — систематическую регистрацию и отслеживание файлов на основе заданных критериев, таких как имя, тип, владелец, группа, размер, время модификации или содержимое.
Инвентаризация выполняется непосредственно на устройствах, что обеспечивает точное и актуальное отображение состояния файловой системы. Результаты позволяют выявлять несанкционированные изменения, отклонения от эталонных конфигураций и потенциальные угрозы безопасности.
Работа с файловой инвентаризацией включает:
-
Создание конфигурации для сбора файловых данных.
-
Создание версии конфигурации с указанием параметров поиска файлов в pillar-файле.
-
Применение конфигурации к устройствам.
-
Просмотр результатов файловой инвентаризации.
Если в системе уже существует конфигурация на основе формулы file-find и необходимо создать отдельную конфигурацию с использованием той же формулы, требуется предварительно создать ее дубликат (см.
«Дублирование формулы Saltstack»).
|
Параметры поиска
Параметры поиска задаются в pillar-файле формулы в объекте lookup.
Каждое правило в lookup — это набор параметров, передаваемых напрямую в модуль file.find.
Имя правила (ключ) произвольно, но должно быть уникальным в рамках одного pillar-файла.
Поддерживаемые параметры:
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
|
Строка |
Корневой путь в файловой системе для поиска (обязательный) |
|
Критерии поиска |
|||
|
Строка |
Шаблон имени файла (регистрозависимый, glob-синтаксис). Примеры использования специальных символов:
|
|
|
Строка |
Шаблон имени файла (регистронезависимый, glob-синтаксис) |
|
|
Строка |
Регулярное выражение для имени файла (регистрозависимое) |
|
|
Строка |
Регулярное выражение для имени файла (регистронезависимое) |
|
|
Строка |
Тип файла. Несколько значений указываются через пробел или запятую. Допустимые значения:
|
|
|
Строка |
Имя или ID пользователя-владельца. Несколько значений указываются через пробел или запятую |
|
|
Строка |
Имя или ID группы. Несколько значений указываются через пробел или запятую |
|
|
Строка |
Размер файла в формате |
|
|
Строка |
Время модификации в формате |
|
Критерии глубины поиска |
|||
|
Целое число |
Максимальная глубина рекурсии (от |
|
mindepth |
Целое число |
Минимальная глубина рекурсии (от |
|
Дополнительные параметры |
|||
|
Логическое значение |
Если |
|
Особенности использования параметров:
-
path— единственный обязательный параметр для каждого правила; -
type— если не указан, поиск по всем типам (a); -
sizeиmtimeподдерживают+(больше) и-(меньше); -
все параметры чувствительны к регистру в YAML/JSON, кроме
inameиiregex.
Пример pillar
Пример содержимого pillar-файла в JSON для сбора файловых данных с устройств в JSON:
{
"lookup": {
"ssh_find": {
"path": "/home",
"name": "id_*",
"type": "f",
"iname": "*.pub",
"maxdepth": 3,
"mindepth": 1
},
"old_large": {
"path": "/var",
"size": "+50M",
"type": "f",
"mtime": "+30d"
},
"logs_recent": {
"md5": true,
"name": "*.log",
"path": "/var/log",
"size": "+10k",
"type": "f",
"mtime": "-1d"
},
"configs_root": {
"name": "*.conf",
"path": "/etc",
"type": "f",
"owner": "root",
"maxdepth": 1
}
}
}
Этот pillar определяет четыре независимых правила поиска файлов с помощью формулы file-find:
-
ssh_find— ищет SSH-ключи в /home:-
имя файла: id_* (регистрозависимо) и *.pub (регистронезависимо);
-
тип: обычные файлы;
-
глубина поиска: от 1 до 3 уровней вложенности;
-
-
old_large— ищет старые и большие файлы в /var:-
размер: > 50 МБ;
-
тип: обычные файлы;
-
время изменения: более 30 дней назад;
-
-
logs_recent— ищет свежие лог-файлы в /var/log:-
имя: *.log;
-
размер: > 10 КБ;
-
время изменения: менее 1 дня назад;
-
вычисляется MD5-хеш.
-
-
configs_root— ищет конфигурационные файлы в /etc:-
имя: *.conf,
-
тип: обычные файлы;
-
владелец:
root; -
поиск только в корневом каталоге.
-
Таким образом, в данном примере настраиваются четыре параллельных варианта поиска для обнаружения на устройстве SSH-ключей, старых больших файлов, свежих логов и системных конфигурационных файлов с привязкой к владельцу.
Обратите внимание — имя формулы указывать не требуется. Оно добавляется автоматически при сохранении версии конфигурации вместе с уникальным идентификатором (атрибут version_id).
|
Создание простой конфигурации и версии конфигурации
Для создания конфигурации и версии на основе формулы file-find с использованием приведенного пример pillar-файла:
-
В меню навигации на боковой панели выберите Конфигурации.
-
Нажмите на кнопку Создать и в выпадающем списке выберите Конфигурация.
-
На странице создания конфигурации заполните необходимые поля.
Рис. 1. Страница создания конфигурации -
Нажмите на кнопку Создать.
Рис. 2. Страница с информацией о созданной конфигурации -
На странице с информацией о созданной конфигурации нажмите +Добавить версию.
-
На странице создания версии заполните необходимые поля. Выберите формулу
file-find, добавьте содержимое pillar-файла и отметьте версию как актуальную.
Если в системе уже существует конфигурация на основе формулыfile-findи необходимо создать отдельную конфигурацию с использованием той же формулы, требуется предварительно создать ее дубликат (см. «Дублирование формулы Saltstack»).
В данном примере используется дубликат формулы с именемfile-find-new.
Рис. 3. Страница создания версии конфигурации -
Нажмите на кнопку Добавить.
Применение конфигурации
Для применения созданной конфигурации к устройствам:
-
В меню навигации на боковой панели выберите Применение конфигураций.
-
Нажмите на кнопку Применить конфигурацию.
-
На странице параметров применения конфигурации выберите коллекцию устройств, созданную конфигурацию и ее актуальную версию. При необходимости измените расписание.
Рис. 4. Страница создания версии конфигурации -
Нажмите на кнопку Применить.
Просмотр результатов применения конфигурации
Убедитесь, что конфигурация успешно применена к устройствам.
Для просмотра результатов применения конфигурации к конкретному устройству (см. также «Результаты сбора файловых данных (файловая инвентаризация)»):
-
В меню навигации на боковой панели выберите Устройства.
-
На странице со списком устройств дважды щелкните на записи, нажмите правой кнопкой мыши на записи и выберите Открыть или на панели быстрого просмотра в списке действий нажмите Открыть.
-
На странице свойств устройства нажмите ссылку Инвентаризация ПО и файлов.
-
Выберите вкладку Файловая инвентаризация.