Перейти к основному содержимому
Версия: 0.2.0

Подсистема управления Pillars

Термины

  • Pillar (также данные Pillar, мн. ч. Pillars) — запись с именем (name) и значением (value), привязанная к некоторой цели (tgt_type/tgt_id) и окружению pillarenv.
  • Аутентифицированный контекст (англ. Additional Authenticated Data, AAD) — это открытые (незашифрованные) данные, передаваемые вместе с зашифрованным сообщением, которые аутентифицируются вместе с ним для обеспечения целостности.
  • Конвертное шифрование (англ. Envelope Encryption) — это метод защиты данных, при котором информация шифруется уникальным симметричным ключом данных (DEK), а сам этот ключ затем шифруется другим корневым ключом (KEK или CMK). Это позволяет безопасно хранить зашифрованные данные рядом с зашифрованным ключом, обеспечивая возможность ротации корневого ключа без перешифрования самих данных, высокую производительность шифрования данных и централизованное управление безопасностью.
  • Слияние Pillars — это механизм объединения данных Pillar из разных SLS-файлов, окружений и источников в одну итоговую структуру, с применением заданной стратегии разрешения конфликтов ключей.
  • Шифрование данных at rest — шифрование данных «в покое» — это метод защиты информации, когда она физически хранится на носителях: дисках, SSD, томах виртуальных машин, объектных или блочных хранилищах. Основная цель — исключить возможность несанкционированного доступа к данным, даже если злоумышленник получит прямой доступ к устройствам хранения.

Общее описание

В Программном комплексе Salt.Box реализована собственная подсистема управления Pillars.

Эта подсистема предоставляет пользователям возможность централизованно создавать, редактировать и применять конфигурационные параметры через графический интерфейс, исключая необходимость ручного редактирования SLS-файлов или прямой работы с мастер-сервером Salt.

Pillar представляет собой конфигурационную запись вида
имя: значение,
привязанную к определённому объекту инфраструктуры и рабочему окружению.

Подсистема управления Pillars обеспечивает автоматическую доставку актуальных параметров целевым узлам при выполнении запросов от мастер-сервера Salt.

Механизм слияния и приоритизация

Типы нацеливания Pillar

В архитектуре Salt.Box предусмотрено несколько типов нацеливания Pillar, различающихся по области применения и способу инициализации:

  • root — глобальные базовые параметры.
    Применяются ко всем клиентам по умолчанию, если для них не заданы индивидуальные Pillars.
    Создаются и управляются пользователем вручную.
  • minion — параметры, привязанные к конкретному узлу (клиенту).
    Используются для переопределения глобальных настроек под требования отдельного узла.
    Создаются и управляются пользователем вручную.
  • task_tpl — технический тип, предназначен хранения параметров по умолчанию для шаблона задачи.
    • Пользователь не создаёт их напрямую: генерация происходит автоматически при инициализации задачи, если в интерфейсе установлен флажок Сохранить для шаблона.
    • Pillar данного типа существует строго в контексте шаблона задачи.
    • Ручное управление или модификация этих записей не требуется и не предусмотрена интерфейсом.
  • task — технический тип, предназначен исключительно для передачи параметров выполнения задачи.
    • Пользователь не создаёт их напрямую: генерация происходит автоматически при инициализации задачи.
    • Pillar данного типа существует строго в контексте соответствующей задачи и сохраняется в системе в течение всего её жизненного цикла.
    • Ручное управление или модификация этих записей не требуется и не предусмотрена интерфейсом.

Алгоритм слияния Pillars

При запросе конфигурации клиентом система автоматически собирает все релевантные Pillars и объединяет их в единый словарь.
Процесс слияния подчиняется строгому и предсказуемому правилу приоритетов:

Pillars с типом нацеливания minion обладают наивысшим приоритетом.

При слиянии они добавляются в единый словарь в последнюю очередь, что гарантирует переопределение любых значений в полях с совпадающим именем и положением в ветке, полученных из Pillars глобального уровня (root).

Порядок применения параметров прозрачен и детерминирован: базовые настройки накладываются первыми, после чего применяются специфические параметры клиента.

Защита данных и шифрование

Для работы с конфиденциальной информацией (учётные данные, API-токены, приватные ключи) в Программном комплексе Salt.Box реализован встроенный механизм шифрования.
Активация защиты выполняется установкой флага is_secret при создании Pillar.

Принципы работы

  • Хранение: Секретные значения зашифровываются непосредственно перед записью в хранилище (выполняется шифрование данных at rest). В интерфейсах и списочных выборках они отображаются в маскированном виде ("*******").
  • Выдача: При запросе конфигурации мастер-сервером Salt система выполняет автоматическое расшифрование данных и передаёт данные мастер-серверу по защищённому каналу.
  • Неизменяемость: В целях обеспечения криптографической целостности обновление значений Pillar, уже сохранённых в зашифрованном виде, через интерфейс не предусмотрено. При необходимости изменения секрета рекомендуется удалить существующую запись и создать новую.

Алгоритм шифрования

Для защиты данных используется стандарт конвертного шифрования (Envelope Encryption) на базе криптоалгоритма AES-256-GCM:

  1. При создании секрета генерируется уникальный ключ шифрования данных (DEK).
  2. Исходное значение Pillar зашифровывается с использованием DEK.
  3. Сам ключ DEK защищается постоянным мастер-ключом приложения (KEK) и сохраняется вместе с зашифрованной полезной нагрузкой (данными Pillar).
  4. Зашифрованные данные криптографически привязываются к контексту Pillar (тип цели, идентификатор, окружение, имя) с помощью аутентифицированного контекста (AAD).
    Любое изменение метаданных или попытка переноса зашифрованного значения в другой контекст приведёт к ошибке проверки целостности и отмене расшифрования.

Данный подход гарантирует, что даже при несанкционированном доступе к хранилищу конфигураций восстановление исходных значений без доступа к мастер-ключу приложения невозможно.

Схема процессов создания, хранения и передачи защищённых Pillar приведена на Рис. 1.

Создание, хранение и передача защищённых Pillar
Рисунок 1. Создание, хранение и передача защищённых Pillar