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

Предельные и максимальные значения в StarVault

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

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

1. Предельные значения, связанные с хранилищем

1.1. Размер записи в хранилище

Максимальный размер объекта, записываемого в бэкенд хранения, определяется самим бэкендом.

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

Прежде чем вносить запись в Raft, StarVault автоматически разбивает любую запись в хранилище, размер которой больше 512 КиБ, но меньше max_entry_size.

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

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

1.2. Предельные значения для точек монтирования

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

Параметр Значение по умолчанию для встроенного хранилища (1 МиБ)

Максимальное количество точек монтирования механизма секретов

~14000

Максимальное количество подключенных методов аутентификации

~14000

Максимальная длина точки монтирования

нет принудительного ограничения

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

Считывая конечные точки sys/auth и sys/mounts можно отследить количество точек монтирования.

Как вариант, используйте метрики телеметрии vault.core.mount_table.num_entries и vault.core.mount_table.size, чтобы отслеживать количество точек монтирования и размер каждой таблицы монтирования.

1.3. Предельные значения для объекта и группы

Метаданные, которые прикрепляются к объекту. "удостоверение" или группе объектов, подпадают под следующие ограничения:

Параметр Предельное значение, байт

Количество пар ключ-значение в метаданных

64

Размер ключа метаданных

128

Размер значения метаданных

512

StarVault разбивает объекты на сегменты, распределяя их между 256 записями хранилища. Псевдонимы объектов хранятся внутри элементов типа "Объект" и поэтому занимают тот же пул памяти. Определения объектов сжимаются в каждой записи хранилища, и размер до сжатия зависит от количества псевдонимов объектов и объема метаданных. Минимально заполненные объекты после сжатия занимают около 200 байт.

Определения групп хранятся отдельно в собственном пуле из 256 записей хранилища. Размер каждого элемента типа "Группа" зависит от количества членов группы и объема метаданных. Псевдонимы группы и информация о ее составе хранятся в каждом элементе типа "Группа". Группа без метаданных, которая содержит 10 объектов, будет занимать около 500 байт, а группа со 100 объектами будет занимать около 4 000 байт.

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

Параметр Значение по умолчанию для встроенного хранилища (1 МиБ)

Максимальное количество объектов типа "удостоверение" (наилучшая оценка – 200 байт на объект)

~1,250,000

Максимальное количество объектов типа "удостоверение" (консервативная оценка – 500 байт на объект)

~480,000

Максимальное количество объектов типа "удостоверение" (максимально разрешенный объем метаданных – 41 160 байт на объект)

2,400

Максимальное количество групп (10 объектов на группу)

~480,000

Максимальное количество групп (100 объектов на группу)

~50,000

Максимальное количество членов в группе

~23,000

Количество объектов идентификации, которые отслеживаются с помощью телеметрии StarVault — vault.identity.num_entities.

Накладные расходы на обновление объектов и групп растут по мере увеличения количества объектов в каждом сегменте. Эти расходы отслеживаются с помощью метрик vault.identity.upsert_entity_txn и vault.identity.upsert_group_txn.

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

1.4. Предельные значения для токенов

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

Параметр Предельное значение

Количество пар ключ-значение в метаданных

без ограничений

Размер ключа метаданных

без ограничений

Размер значения метаданных

без ограничений

Общий объем метаданных токена

512 КиБ

1.5. Предельные размеры политик

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

Параметр Значение по умолчанию для встроенного хранилища (1 МиБ)

Максимальный размер политики

1 МиБ

Максимальное количество политик на токен

~28,000

Максимальное количество политик на объект или группу

~28,000

При каждом использовании токена StarVault собирает коллекцию прикрепленных политик: к токену, к объекту, к любым группам, в которые входит объект, и к рекурсивно к любым группам, в которые входят эти группы. Очень большое количество политик использовать можно, но это приведет к увеличению времени отклика StarVault. Отслеживайте метрику vault.core.fetch_acl_and_token, чтобы определить, не становится ли время, необходимое для составления списка контроля доступа, чрезмерно большим.

1.6. Хранилище пар ключ-значение с поддержкой версионирования (механизм секретов kv-v2)

Параметр Предельное значение

Количество секретов

без ограничений, определяется доступным объемом хранилища

Максимальный размер одной версии секрета

чуть меньше размера одной записи в хранилище (512 или 1024 КиБ)

Количество версий секрета

по умолчанию 10;
настраивается для каждого секрета или точки монтирования

Максимальное количество версий (не проверяется при настройке)

не менее 24 000

Каждая версия секрета должна умещаться в одной записи хранилища. Пары ключ-значение перед хранением преобразуются в формат JSON.

Метаданные каждой версии занимают 21 байт и должны помещаться в одной записи хранилища отдельно от хранимых данных.

Каждый секрет также имеет метаданные, не зависящие от версии. Эти данные могут содержать поле custom_metadata с парами ключ-значение, которые предоставил пользователь. StarVault устанавливает следующие предельные значения для пользовательских метаданных:

Параметр Предельное значение, байт

Количество пар ключ-значение пользовательских метаданных

64

Размер ключа пользовательских метаданных

128

Размер значения пользовательских метаданных

512

1.7. Механизм секретов Transit

Максимальный размер зашифрованного или незашифрованного текста Transit ограничен максимальным размером запроса StarVault, как описано ниже.

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

Тип ключа Значение по умолчанию для встроенного хранилища (1 МиБ)

aes128-gcm96

4017

aes256-gcm96

3731

chacha-poly1305

3731

ed25519

2841

ecdsa-p256

1635

ecdsa-p384

1318

ecdsa-p523

1078

1024-bit RSA

333

2048-bit RSA

233

4096-bit RSA

178

2. Другие предельные значения

2.1. Размер запроса

Максимальный размер HTTP-запроса в StarVault ограничивается параметром max_request_size в строке конфигурации обработчика. По умолчанию равен 32 МиБ.
Это значение, за вычетом размера самого HTTP-запроса, задает верхнее предельное значение для операции Transit и максимальный размер секретов в формате ключ-значение.

2.2. Длительность запроса

Максимальная продолжительность операции StarVault определяется значением max_request_duration, которое по умолчанию равно 90 секундам. Если определенному механизму секретов требуется больше времени для выполнения операции на удаленном сервисе, клиент StarVault увидит сбой.

Переменная окружения VAULT_CLIENT_TIMEOUT также задает максимальную продолжительность на стороне клиента, которая по умолчанию составляет 60 секунд.

2.3. Предельные значения для кластеров и репликаций

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

Следите за загрузкой процессора и сети активного узла StarVault и за задержкой между последней записью в журнал WAL и в журнал WAL реплик, чтобы определить превышение максимального количества реплик.

Параметр Предельное значение

Максимальный размер кластера

без ограничений, определяется возможностями активного узла

Максимальное количество реплик аварийного восстановления

без ограничений, определяется возможностями активного узла

Максимальное количество реплик рабочих узлов

без ограничений, определяется возможностями активного узла

2.4. Предельные значения для аренды

Для предельного значения аренды настраиваются общесистемные параметры maximum TTL и maximum TTL per mount point.

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

Параметр Предельное значение

Максимальное количество аренд

Рекомендованное предельное значение — 256 000

Максимальная продолжительность аренды или токена

768 часов по умолчанию

Текущее количество неистекших аренд отслеживается с помощью метрики vault.expire.num_leases.

2.5. Предельные значения для внешних плагинов

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

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