Параметры конфигурации
Серверы StarVault настраиваются с использованием конфигурационного файла. Этот файл может иметь формат HCL или JSON.
Активация проверки прав доступа к файлам через переменную окружения VAULT_ENABLE_FILE_PERMISSIONS_CHECK позволяет StarVault проверять, принадлежат ли директория конфигурации и файлы пользователю, который запускает StarVault. Также проверяется отсутствие прав на запись или выполнение для группы или других пользователей. StarVault позволяет операторам указывать пользователя и права доступа к директории плагинов и исполняемым файлам с помощью параметров plugin_file_uid и plugin_file_permissions в конфигурации, если оператору необходимо установить иные значения. По умолчанию эта проверка отключена.
Пример конфигурации показан ниже:
ui = true
cluster_addr = "https://127.0.0.1:8201"
api_addr = "https://127.0.0.1:8200"
disable_mlock = true
storage "raft" {
path = "/path/to/raft/data"
node_id = "raft_node_id"
}
listener "tcp" {
address = "127.0.0.1:8200"
tls_cert_file = "/path/to/full-chain.pem"
tls_key_file = "/path/to/private-key.pem"
}
telemetry {
statsite_address = "127.0.0.1:8125"
disable_hostname = true
}
После изменения файла конфигурации необходимо перезапустить сервис starvault для применения новых параметров:
systemctl restart starvault
1. Обзор параметров
- storage
-
Обязательный блок параметров. Настройка бэкенда хранилища, где будут сохраняться данные StarVault. Для работы StarVault в режиме высокой доступности (HA) необходимо, чтобы бэкенд поддерживал семантику координации. Если бэкенд хранения поддерживает координацию в режиме HA, параметры бэкенда HA также могут быть указаны в этом блоке параметров. В противном случае, следует настроить отдельный параметр
ha_storageс бэкендом, поддерживающим HA, вместе с соответствующими параметрами HA. Подробнее о параметрах бэкенда хранилища см. в разделе блок конфигурации storage. - ha_storage
-
Необязательный блок параметров. Настройка бэкенда хранилища, где будет происходить координация StarVault в режиме высокой доступности (HA). Это должен быть бэкенд, поддерживающий HA. Если параметр не установлен, попытка запустить HA будет выполнена на бэкенде, указанном в параметре
storage. Этот параметр не требуется, если бэкенд хранилища поддерживает координацию HA и если специфические параметры HA уже указаны в блокеstorage. - listener
-
Обязательный блок параметров. Настройка параметров прослушивания запросов API StarVault. Подробнее см. в разделе блок конфигурации listener.
- user_lockout
-
Необязательный блок параметров. Настройка поведения блокировки пользователя при неудачном входе в систему. Подробнее см. в разделе Блокировка пользователей.
- cluster_name
-
Необязательный строковый параметр. Указывает идентификатор для кластера StarVault. Если это значение не указано, StarVault сгенерирует его.
- cache_size
-
Необязательный строковый параметр. Указывает размер кэша чтения, используемого физической подсистемой хранения. Значение указывается в количестве записей, поэтому общий размер кэша зависит от размера хранимых записей. По умолчанию 131072.
- disable_cache
-
Необязательный логический параметр. Отключает все кэши в StarVault, включая кэш чтения, используемый физической подсистемой хранения. Оказывает сильное влияние на производительность. По умолчанию false.
- disable_mlock
-
Необязательный логический параметр. Отключает возможность сервера выполнять системный вызов mlock. mlock предотвращает выгрузку памяти на диск. Отключение mlock не рекомендуется, если не используется интегрированное хранилище. При отключении mlock следует соблюдать дополнительные меры безопасности, описанные ниже. Этот параметр также может быть задан через переменную окружения VAULT_DISABLE_MLOCK.
Отключение mlock не рекомендуется, если только системы, на которых работает StarVault, используют только зашифрованный swap или не используют swap вообще. StarVault поддерживает блокировку памяти только в UNIX-подобных системах, поддерживающих системный вызов mlock() (Linux, FreeBSD и т. д.). В таких системах как, например, Windows, NaCL, Android отсутствуют механизмы для предотвращения записи всего адресного пространства памяти процесса на диск, поэтому данная функция автоматически отключается на не поддерживаемых платформах.
Отключение mlock настоятельно рекомендуется при использовании интегрированного хранилища, поскольку mlock плохо совместим с файлами, отображаемыми в памяти, такими как те, что создаются BoltDB, используемым Raft для отслеживания состояния. При использовании mlock файлы, отображаемые в память, загружаются в резидентную память, что приводит к загрузке всего набора данных StarVault в оперативную память и может вызвать проблемы с нехваткой памяти, если объем данных StarVault превышает доступный объем ОЗУ. В этом случае, несмотря на то что данные внутри BoltDB остаются зашифрованными в режиме покоя, swap следует отключить, чтобы предотвратить выгрузку других конфиденциальных данных StarVault, находящихся в памяти, на диск.
В Linux, чтобы дать исполняемому файлу StarVault возможность использовать системный вызов mlock без запуска процесса от имени root, выполните команду:
sudo setcap cap_ipc_lock=+ep $(readlink -f $(which starvault))Поскольку каждый плагин запускается как отдельный процесс, вам нужно сделать то же самое для каждого плагина в вашей директории plugins. Если вы используете дистрибутив Linux с современной версией systemd, вы можете добавить следующую директиву в раздел конфигурации "[Service]":
LimitMEMLOCK=infinity - plugin_directory
-
Необязательный строковый параметр. Каталог, из которого разрешено загружать плагины. Для успешной загрузки плагинов StarVault должен иметь разрешение на чтение файлов в этой директории, а значение не может быть символической ссылкой. По умолчанию "".
- plugin_tmpdir
-
Необязательный строковый параметр. Каталог, в котором StarVault может создавать временные файлы для поддержки взаимодействия Unix-сокета с контейнеризированными плагинами. Если значение не задано, StarVault будет использовать каталог по умолчанию для временных файлов. Обычно не требуется, если вы не используете контейнеризированные плагины и StarVault не разделяет временную папку с другими процессами, например, при использовании параметра PrivateTmp в systemd. Этот параметр также можно указать с помощью переменной окружения VAULT_PLUGIN_TMPDIR. По умолчанию "".
- plugin_file_uid
-
Необязательный целочисленный параметр. Идентификатор пользователя (Uid) директорий плагинов и исполняемых файлов плагинов, если они принадлежат пользователю, отличному от того, кто запускает StarVault. Этот параметр необходимо устанавливать только в том случае, если проверка прав доступа к файлам включена через переменную окружения VAULT_ENABLE_FILE_PERMISSIONS_CHECK.
- plugin_file_permissions
-
Необязательный строковый параметр. Строка восьмеричных прав доступа для директорий плагинов и исполняемых файлов плагинов, если установлены права на запись или выполнение для группы или других пользователей. Этот параметр необходимо устанавливать только в том случае, если проверка прав доступа к файлам включена через переменную окружения VAULT_ENABLE_FILE_PERMISSIONS_CHECK.
- telemetry
-
Необязательный блок параметров. Указывает систему телеметрии для сбора и отправки статистических данных.
- default_lease_ttl
-
Необязательный строковый параметр. Определяет срок действия аренды по умолчанию для токенов и секретов. Значение указывается с использованием суффикса времени, например "30s" (30 секунд) или "1h" (1 час). Это значение не может быть больше, чем
max_lease_ttl. По умолчанию 768h. - max_lease_ttl
-
Необязательный строковый параметр. Определяет максимально возможный срок действия аренды для токенов и секретов. Значение указывается с использованием суффикса времени, например "30s" (30 секунд) или "1h" (1 час). Отдельные точки монтирования могут изменить это значение, настроив точку монтирования с помощью флага
max-lease-ttlв командах auth или secret. По умолчанию 768h. - default_max_request_duration
-
Необязательный строковый параметр. Указывает максимальное стандартное время выполнения запроса, после которого StarVault отменяет запрос. Значение указывается с использованием суффикса времени, например "30s" (30 секунд) или "1h" (1 час). Это значение может быть переопределено для каждого слушателя (listener) через параметр
max_request_duration. По умолчанию 90s. - detect_deadlocks
-
Необязательный строковый параметр. Строка значений, разделенных запятыми, которая указывает внутренние взаимоисключающие блокировки, за которыми следует наблюдать на предмет потенциальных взаимоблокировок. В настоящее время поддерживаемые значения включают
statelock,quotasиexpiration, что приведет к записи в лог "POTENTIAL DEADLOCK:", когда попытка блокировки состояния ядра кажется заблокированной. Включение этой функции может негативно сказаться на производительности из-за отслеживания каждой попытки блокировки. По умолчанию "". - raw_storage_endpoint
-
Необязательный логический параметр. Активирует конечную точку sys/raw, которая позволяет выполнять дешифрование/шифрование необработанных данных на входе и выходе из защитного барьера. Это конечная точка с высоким уровнем привилегий. По умолчанию false.
- introspection_endpoint
-
Необязательный логический параметр. Активирует конечную точку sys/internal/inspect, которая позволяет пользователям с root-токеном или привилегиями sudo проводить инспекцию определенных подсистем внутри StarVault. По умолчанию false.
- ui
-
Необязательный логический параметр. Активирует встроенный веб-интерфейс пользователя, который доступен на всех слушателях (адрес + порт) по пути /ui. Браузеры, обращающиеся к стандартному адресу API StarVault, будут автоматически перенаправлены туда. Этот параметр также может быть задан через переменную окружения VAULT_UI. По умолчанию false. Подробнее см. в разделе блок конфигурации ui.
- pid_file
-
Необязательный строковый параметр. Путь к файлу, в котором должен храниться идентификатор процесса (PID) сервера StarVault.
- enable_response_header_hostname
-
Необязательный логический параметр. Активирует добавление HTTP-заголовка во все HTTP-ответы StarVault:
X-Vault-Hostname. Этот заголовок будет содержать имя узла StarVault, который обработал HTTP-запрос. Эта информация предоставляется по мере возможности и ее наличие не гарантируется. Если эта опция включена и заголовокX-Vault-Hostnameотсутствует в ответе, это означает, что произошла какая-то ошибка при извлечении имени хоста из операционной системы. По умолчанию false. - enable_response_header_raft_node_id
-
Необязательный логический параметр. Активирует добавление HTTP-заголовка во все HTTP-ответы StarVault:
X-Vault-Raft-Node-ID. Если StarVault участвует в кластере Raft (то есть использует интегрированное хранилище), этот заголовок будет содержать идентификатор узла Raft, который обработал HTTP-запрос. Если узел StarVault не участвует в кластере Raft, этот заголовок будет опущен, независимо от того, включена ли эта опция или нет. По умолчанию false. - log_level
-
Необязательный строковый параметр. Уровень подробности журнала. Поддерживаемые значения (в порядке убывания подробности):
trace,debug,info,warnиerror. Это значение также можно задать с помощью переменной окружения VAULT_LOG_LEVEL. По умолчанию info.При SIGHUP (sudo kill -s HUP pid starvault), если указано правильное значение, StarVault обновит существующий уровень журнала, отменяя (даже если он указан) как флаг CLI, так и переменную окружения. Не все части журнала StarVault могут динамически изменять уровень журнала таким образом; в частности, плагины secrets/auth в настоящее время не обновляются динамически. - log_format
-
Необязательный строковый параметр. Формат журнала. Поддерживаются следующие значения:
standardиjson. Его также можно указать через переменную окружения VAULT_LOG_FORMAT. По умолчанию standard. - log_file
-
Необязательный строковый параметр. Абсолютный путь, где StarVault должен сохранять сообщения журнала в дополнение к другим существующим выводам, таким как journald/stdout. Пути, которые заканчиваются разделителем пути, используют имя файла по умолчанию, vault.log. Пути, которые не заканчиваются расширением файла, используют расширение по умолчанию .log. Если файл журнала перезаписывается, StarVault добавляет текущую временную метку к имени файла в момент перезаписи. Например:
Значение параметра log_fileТекущий файл журнала Файл журнала после ротации /var/log/
/var/log/starvault.log
/var/log/starvault-{timestamp}.log
/var/log/my-diary
/var/log/my-diary.log
/var/log/my-diary-{timestamp}.log
/var/log/my-diary.txt
/var/log/my-diary.txt
/var/log/my-diary-{timestamp}.txt
- log_rotate_duration
-
Необязательный строковый параметр. Указывает максимальную продолжительность записи в файл журнала, после которой он должен быть перезаписан. Должно быть указано значение продолжительности, например,
30s. По умолчанию 24h. - log_rotate_bytes
-
Необязательный целочисленный параметр. Указывает количество байт, которое может быть записано в файл журнала перед его перезаписью. Если не указано, то количество байт, которое может быть записано в файл журнала, не ограничено.
- log_rotate_max_files
-
Необязательный целочисленный параметр. Указывает максимальное количество старых файлов журнала, которые следует сохранять. По умолчанию установлено значение 0 (файлы никогда не удаляются). Установите значение -1, чтобы удалять старые файлы журнала при создании нового.
- experiments
-
Необязательный массив значений. Список экспериментальных функций, которые следует активировать для этого узла. Экспериментальные функции НЕ должны использоваться в производственной среде, и связанные с ними API могут претерпевать изменения, несовместимые с предыдущими версиями, между релизами. Дополнительные экспериментальные функции также могут быть указаны через переменную окружения VAULT_EXPERIMENTS в виде списка значений, разделённых запятыми.
- imprecise_lease_role_tracking
-
Необязательный логический параметр. Позволяет пропустить подсчет аренды по ролям, если не включены квоты на основе ролей. Когда параметр
imprecise_lease_role_trackingустановлен в значение true и включена новая квота на основе ролей, последующий подсчет аренд начинается с 0. Параметрimprecise_lease_role_trackingвлияет на квоты подсчета аренды на основе ролей, но уменьшает задержки, если квоты на основе роли не используются.
2. Параметры высокой доступности
Следующие параметры используются для бэкендов, поддерживающих высокую доступность.
- api_addr
-
Необязательный строковый параметр. Указывает адрес (полный URL), который будет анонсироваться другим серверам StarVault в кластере для перенаправления клиентов. Это значение также используется для бэкендов плагинов. Этот параметр также может быть задан через переменную окружения VAULT_API_ADDR. В общем случае, это должен быть полный URL, который указывает на значение адреса слушателя. Этот адрес может быть динамически определен с помощью шаблона go-sockaddr, который разрешается во время выполнения.
- cluster_addr
-
Необязательный строковый параметр. Указывает адрес для анонсирования другим серверам StarVault в кластере для перенаправления запросов. Этот параметр также может быть задан через переменную окружения VAULT_CLUSTER_ADDR. Это полный URL, подобно api_addr, но StarVault будет игнорировать схему (все участники кластера всегда используют TLS с приватным ключом/сертификатом). Этот адрес может быть динамически определен с помощью шаблона go-sockaddr, который разрешается во время выполнения.
- disable_clustering
-
Необязательный логический параметр. Указывает, включены ли функции кластеризации, такие как переадресация запросов. Если установить значение true для одного узла хранилища, эти функции будут отключены только в том случае, если этот узел является активным узлом. Этот параметр нельзя установить в true, если типом хранилища является raft. По умолчанию false.