Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Устройство StarVault

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

Рекомендуется всем пользователям и администраторам внимательно изучить данную информацию до начала работы со StarVault, учитывая ее значимость для безопасности и эффективности рабочей среды.

1. Архитектура

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

Приведенная ниже диаграмма наглядно демонстрирует структуру и многообразие компонентов системы StarVault.

architecture

Модуль шифрования StarVault, известный как барьер, отвечает за процесс шифрования и расшифровки данных в системе StarVauvlt. В момент запуска сервера StarVault все данные, записываемые во внутреннее хранилище, подлежат шифрованию. Так как бэкенд хранилища находится вне зоны доверия, то есть за барьером, StarVault применяет шифрование для защиты данных перед их передачей в хранилище.

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

Когда сервер StarVault запускается, он начинает работу в запечатанном состоянии (sealed state). Прежде чем можно будет выполнить какую-либо операцию с StarVault, его необходимо распечатать (unsealed). Это делается путем предоставления ключей распечатки (unseal key). Во время инициализации StarVault генерирует ключ шифрования (encryption key), который используется для защиты всех данных StarVault. Этот ключ защищен корневым ключом (root key), который хранится вместе со всеми другими данными StarVault, но шифруется другим механизмом: ключом распечатки.

По умолчанию StarVault использует метод разделения секрета Шамира для разделения ключа распечатки на заданное количество фрагментов (долей ключа). Для воссоздания ключа распечатки требуется точное количество фрагментов, которые затем используются для расшифровки корневого ключа StarVault.

shamir ss

Метод Шамира может быть отключен. В этом случае для распечатывания можно использовать непосредственно корневой ключ. Как только StarVault получает ключ шифрования, он расшифровывает данные в бэкенде хранилища и переходит в распечатанное состояние. В распечатанном состоянии StarVault инициирует загрузку предварительно настроенных устройств аудита, методов аутентификации и механизмов управления секретами.

Конфигурация устройств аудита, методов аутентификации и механизмов управления секретами является чувствительной с точки зрения безопасности и хранится в StarVault. Только пользователи, обладающие необходимыми правами, могут вносить изменения в эти конфигурации, причем модификация возможна исключительно в пределах барьера. Размещение конфигурации в StarVault гарантирует, что любые изменения защищены системой контроля доступа (ACL) и документируются в журналах аудита.

После распечатывания StarVault, система может начать обработку входящих запросов, поступающих через HTTP API, направляя их к ядру. Ядро системы координирует дальнейшую маршрутизацию запросов, осуществляет контроль доступа с использованием списков контроля доступа (ACL) и ведёт журнал аудита для обеспечения прозрачности и отслеживания всех операций.

Перед началом работы с StarVault клиент должен пройти процесс аутентификации. StarVault поддерживает широкий спектр настраиваемых методов аутентификации, что позволяет выбрать наиболее подходящий механизм в зависимости от типа клиента. Так, для операторов доступны методы аутентификации через имя пользователя и пароль, в то время как приложения могут аутентифицироваться с помощью пары открытый/закрытый ключ или с использованием токенов. В процессе аутентификации запрос проходит через ядро системы и обрабатывается выбранным методом аутентификации, который проверяет его валидность и, в случае успеха, предоставляет список политик, связанных с аутентифицированным клиентом.

Политики в StarVault представляют собой именованные наборы правил контроля доступа (ACL). К примеру, встроенная политика "root" предоставляет неограниченный доступ ко всем операциям и ресурсам. Пользователи могут создавать множество именованных политик, настраивая детализированный контроль доступа к определенным путям в системе. StarVault функционирует по принципу явного разрешения: действие считается запрещенным до тех пор, пока не будет выдано явное разрешение через соответствующую политику. Если пользователю присвоено несколько политик, действие разрешается, если хотя бы одна из политик это допускает. Все политики централизованно хранятся и управляются через внутреннее хранилище политик StarVault. Доступ к этому хранилищу осуществляется через системный бэкэнд, который всегда монтируется по адресу sys/.

После прохождения аутентификации и получения набора соответствующих политик, генерируется новый клиентский токен, который управляется хранилищем токенов. Этот клиентский токен используется для выполнения последующих запросов. Метод использования токена аналогичен отправке cookie веб-сайтом при входе пользователя в систему. В зависимости от конфигурации метода аутентификации, клиентский токен может иметь связанный с ним срок действия (lease), и его может потребоваться периодически обновлять, чтобы избежать аннулирования.

После аутентификации запросы выполняются с предоставлением клиентского токена. Клиентский токен используется для верификации клиента, обеспечивая его авторизацию и загрузку соответствующих политик. Эти политики применяются для авторизации клиентского запроса. Затем запрос направляется к механизму управления секретами, где он обрабатывается в соответствии с его типом. Когда механизм секретов возвращает секрет, ядро системы регистрирует его в менеджере сроков действия и присваивает идентификатор аренды (lease ID). Клиенты используют идентификатор аренды для продления или отзыва своего секрета. Если клиент не продлевает аренду и срок её действия истекает, менеджер сроков действия автоматически отзывает секрет.

Ядро регистрирует запросы и ответы в брокере аудита, который, в свою очередь, распространяет информацию между всеми настроенным устройствам аудита. В дополнение к обработке запросов, ядро выполняет ряд фоновых операций, среди которых управление арендой занимает ключевое место. Это управление позволяет системе автоматически аннулировать клиентские токены и секреты, срок действия которых истек. StarVault также обеспечивает надежность системы при частичных сбоях, используя специальные механизмы, такие как журналирование с упреждающей записью и менеджер отката. Все эти процессы управления скрыты от пользователя и работают незаметно в фоновом режиме.

2. Высокая доступность

StarVault может функционировать в режиме высокой доступности (High Availability, HA) для защиты от сбоев путем запуска нескольких серверов StarVault.

Основная цель StarVault Highly Available (HA) - минимизировать время простоя системы без потери возможностей для ее масштабирования. Производительность StarVault ограничена скоростью операций ввода-вывода используемого бэкенда хранилища, а не потребностями в вычислительных ресурсах.

Бэкенды хранения, например Интегрированное хранилище (Integrated Storage), включают в себя дополнительные механизмы координации, которые позволяют StarVault функционировать в HA-конфигурации. Когда StarVault настроен на использование такого бэкенда, он автоматически переходит в режим высокой доступности, не требуя от администратора внесения дополнительных настроек.

В режиме высокой доступности (HA) серверы StarVault могут находиться в одном из двух состояний: активном или резервном. В конфигурации с несколькими серверами, использующими общий бэкенд хранилища, одновременно активным может быть только один сервер. Остальные серверы находятся в состоянии готовности к немедленному перехвату задач (горячее резервирование).

Запросы обрабатываются исключительно активным сервером, в то время как резервные серверы перенаправляют все входящие запросы к нему.

В случае блокировки, сбоя или потери сетевого соединения активным сервером, один из резервных серверов автоматически переключается в активное состояние, обеспечивая непрерывность работы системы.

Только серверы StarVault в распечатанном состоянии могут функционировать как резервные. Серверы в запечатанном состоянии не способны принять на себя роль активного сервера и не могут обрабатывать запросы в случае отказа активного сервера.

3. Бэкенды хранилища

3.1. Интегрированное хранилище Raft

3.1.1. Общие сведения

StarVault поддерживает несколько вариантов долговременного хранения информации. Каждый вариант имеет свои плюсы, минусы, преимущества и компромиссы. Например, некоторые варианты поддерживают высокую доступность, а другие обеспечивают более надежный процесс резервного копирования и восстановления. Интегрированное хранилище (Integrated Storage) - это "встроенный" вариант хранения, который поддерживает рабочие процессы резервного копирования/восстановления, высокую доступность и функции корпоративной репликации без использования систем сторонних производителей.

Хранилище Raft использует протокол консенсуса, основанный на Paxos и работах, описанных в статье Raft: В поисках понятного алгоритма консенсуса, для обеспечения согласованности в соответствии с теоремой CAP.

Производительность Raft ограничена операциями ввода-вывода на диске и сетевой задержкой, и сопоставима с Paxos. При стабильном лидерстве для фиксации записи в журнале требуется один полный цикл обмена данными с половиной узлов кластера. В сравнении с Paxos, Raft разработан таким образом, чтобы иметь меньше состояний и более простой, понятный алгоритм, который зависит от следующих элементов:

  • Журнал (Log) — упорядоченная последовательность записей (реплицированный журнал), отслеживающая изменения в кластере. Например, операция записи данных является новым событием, создающим соответствующую запись в журнале.

  • Набор узлов (Peer set) — множество всех участников, участвующих в репликации журнала. Все серверные узлы входят в набор узлов локального кластера.

  • Лидер (Leader) — в любой момент времени набор узлов выбирает один узел в качестве лидера. Лидеры принимают новые записи журнала, реплицируют журнал на ведомые узлы и управляют моментом фиксации записи. Лидеры контролируют репликацию журнала. Несоответствия в реплицированных записях журнала могут указывать на проблемы с лидером.

  • Кворум (Quorum) — большинство участников из набора узлов. Для набора узлов размером N требуется кворум, состоящий как минимум из ceil((N + 1)/2) участников. Например, для набора узлов из 5 членов требуется 3 узла. Если кластер не может достичь кворума, он становится недоступным и не может фиксировать новые записи в журнале.

  • Фиксированная запись (Committed entry) — запись журнала, реплицированная на кворум узлов. Записи журнала применяются только после их фиксации.

  • Детерминированная машина конечных состояний (DFSM) — набор известных состояний с предсказуемыми переходами между ними. В Raft DFSM переходит между состояниями при применении новых записей журнала. Согласно правилам DFSM, многократное применение одной и той же последовательности журналов всегда приводит к одному и тому же конечному состоянию.

3.1.2. Минимальная конфигурация

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

min ha

Минимальная архитектура StarVault может включать три узла, размещенные в пределах одной зоны доступности. Такая схема обеспечивает базовый уровень отказоустойчивости одного из узлов и поддерживает работу кластера Raft при наличии хотя бы двух работающих серверов.

На следующей схеме показана рекомендуемая архитектура для развертывания одного кластера StarVault с максимальной отказоустойчивостью.

cluster architect

Архитектура StarVault, включающая пять узлов, распределенных по трем зонам доступности, обеспечивает устойчивость к отказу до двух узлов внутри кластера или к полной потере одной зоны доступности.

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