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

Параметры конфигурации

Серверы 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.