313 lines
14 KiB
Markdown
313 lines
14 KiB
Markdown
[Документация](../../README-ru.md#документация) → [Конфигурация](../config.ru.md) → Параметры безопасности
|
|
|
|
-----
|
|
|
|
[Read in English](security.en.md)
|
|
|
|
# Параметры безопасности
|
|
|
|
Данные параметры затрагивают безопасность инсталляций Vitastor и используются
|
|
OSD, мониторами и клиентами.
|
|
|
|
Большая их часть может задаваться в /etc/vitastor/vitastor.conf и в etcd, но не
|
|
поддерживает онлайн-изменение.
|
|
|
|
Все параметры сертификатов и закрытых ключей могут быть путём к файлу или просто
|
|
строкой с сертификатом в формате PEM. В последнем случае строка должна начинаться с
|
|
"-----BEGIN CERTIFICATE-----" или "-----BEGIN PRIVATE KEY-----".
|
|
|
|
- [use_perms](#use_perms)
|
|
- [cert](#cert)
|
|
- [pkey](#pkey)
|
|
- [etcd_ca](#etcd_ca)
|
|
- [client_ca](#client_ca)
|
|
- [osd_ca](#osd_ca)
|
|
- [mon_ca](#mon_ca)
|
|
- [antietcd_cert](#antietcd_cert)
|
|
- [antietcd_key](#antietcd_key)
|
|
- [etcd_proxy.urls](#etcd_proxyurls)
|
|
- [etcd_proxy.cert](#etcd_proxycert)
|
|
- [etcd_proxy.key](#etcd_proxykey)
|
|
- [etcd_proxy.ca](#etcd_proxyca)
|
|
- [osd_cert](#osd_cert)
|
|
- [osd_pkey](#osd_pkey)
|
|
- [api_cert](#api_cert)
|
|
- [api_pkey](#api_pkey)
|
|
- [etcd_client_cert](#etcd_client_cert)
|
|
- [etcd_client_key](#etcd_client_key)
|
|
- [osd_etcd_client_cert](#osd_etcd_client_cert)
|
|
- [osd_etcd_client_key](#osd_etcd_client_key)
|
|
- [mon_etcd_client_cert](#mon_etcd_client_cert)
|
|
- [mon_etcd_client_key](#mon_etcd_client_key)
|
|
- [proto_checksums](#proto_checksums)
|
|
- [force_proto_checksums](#force_proto_checksums)
|
|
- [max_cipher_pool_size](#max_cipher_pool_size)
|
|
- [vault_url](#vault_url)
|
|
- [vault_secret_api_path](#vault_secret_api_path)
|
|
- [vault_client_cert](#vault_client_cert)
|
|
- [vault_client_key](#vault_client_key)
|
|
- [vault_ca](#vault_ca)
|
|
- [vault_timeout_ms](#vault_timeout_ms)
|
|
- [vault_error_timeout_sec](#vault_error_timeout_sec)
|
|
- [vault_refresh_leeway_sec](#vault_refresh_leeway_sec)
|
|
|
|
## use_perms
|
|
|
|
- Тип: булево (да/нет)
|
|
- Значение по умолчанию: false
|
|
|
|
Включает клиентские привилегии в кластере Vitastor, в том числе во встроенном в мониторе Antietcd.
|
|
Требует настроенного шифрования протокола. Также обратите внимание, что отдельно установленный Antietcd
|
|
требует отдельной настройки привилегий (подробности смотрите в [документации безопасности](../intro/security.ru.md)).
|
|
|
|
## cert
|
|
|
|
- Тип: строка
|
|
|
|
Клиентский сертификат текущего пользователя Vitastor. Требуется для шифрования протокола Vitastor.
|
|
Должен быть подписан [client_ca](#client_ca). Также по умолчанию используется как клиентский
|
|
сертификат для подключения к etcd/Antietcd и Vault.
|
|
|
|
## pkey
|
|
|
|
- Тип: строка
|
|
|
|
Закрытый ключ текущего пользователя Vitastor.
|
|
|
|
## etcd_ca
|
|
|
|
- Тип: строка
|
|
|
|
Доверенный корневой TLS-сертификат для проверки сертификата сервера etcd.
|
|
Либо же просто сам сертификат сервера etcd - его можно использовать как etcd_ca.
|
|
|
|
## client_ca
|
|
|
|
- Тип: строка
|
|
|
|
Доверенный TLS-сертификат для проверки сертификатов клиентов Vitastor.
|
|
Требуется для шифрования протокола Vitastor.
|
|
|
|
## osd_ca
|
|
|
|
- Тип: строка
|
|
|
|
Доверенный TLS-сертификат для проверки сертификатов OSD Vitastor. Также обязателен
|
|
для шифрования протокола Vitastor. Должен отличаться от client_ca. Может быть равен
|
|
osd_cert - разные OSD не требуют разных сертификатов, потому что на данный момент
|
|
привилегии разных OSD никак не отличаются.
|
|
|
|
## mon_ca
|
|
|
|
- Тип: строка
|
|
|
|
Доверенный TLS-сертификат для проверки сертификатов мониторов Vitastor. Используется
|
|
только отдельно установленным Antietcd, не требуется при использовании встроенного в монитор
|
|
Antietcd. Может быть равен mon_client_etcd_cert.
|
|
|
|
## antietcd_cert
|
|
|
|
- Тип: строка
|
|
|
|
Серверный TLS-сертификат для Antietcd, встроенного в монитор.
|
|
|
|
## antietcd_key
|
|
|
|
- Тип: строка
|
|
|
|
Закрытый ключ для сертификата antietcd_cert.
|
|
|
|
## etcd_proxy.urls
|
|
|
|
- Тип: строка или массив строк
|
|
|
|
Адреса etcd для режима Antietcd etcd-прокси.
|
|
Смотрите подробности в разделе [Mon в роли Etcd proxy](../intro/security.ru.md#mon-в-роли-etcd-proxy).
|
|
|
|
## etcd_proxy.cert
|
|
|
|
- Тип: строка
|
|
|
|
Клиентский сертификат для подключений от Antietcd к etcd в режиме прокси.
|
|
|
|
## etcd_proxy.key
|
|
|
|
- Тип: строка
|
|
|
|
Закрытый ключ для сертификата etcd_proxy.cert.
|
|
|
|
## etcd_proxy.ca
|
|
|
|
- Тип: строка
|
|
|
|
Доверенный TLS-сертификат для проверки сертификата сервера etcd при подключениях от Antietcd.
|
|
|
|
## osd_cert
|
|
|
|
- Тип: строка
|
|
|
|
Сертификат сервера Vitastor OSD. Требуется для шифрования протокола Vitastor. Может быть равен
|
|
[osd_ca](#osd_ca) - все OSD на данный момент имеют одинаковые привилегии. Также по умолчанию
|
|
используется как клиентский сертификат для подключения от OSD к etcd/Antietcd.
|
|
|
|
## osd_pkey
|
|
|
|
- Тип: строка
|
|
|
|
Закрытый ключ для сертификата osd_cert.
|
|
|
|
## api_cert
|
|
|
|
- Тип: строка
|
|
|
|
Серверный TLS-сертификат для API-сервера [vitastor-cli serve](../usage/cli.ru.md#serve).
|
|
|
|
## api_pkey
|
|
|
|
- Тип: строка
|
|
|
|
Закрытый ключ для сертификата api_cert.
|
|
|
|
## etcd_client_cert
|
|
|
|
- Тип: строка
|
|
|
|
Клиентский TLS сертификат для подключений от клиентов Vitastor к etcd/Antietcd, если вы не хотите
|
|
использовать общий клиентский сертификат [cert](#cert).
|
|
|
|
## etcd_client_key
|
|
|
|
- Тип: строка
|
|
|
|
Закрытый ключ для сертификата etcd_client_cert.
|
|
|
|
## osd_etcd_client_cert
|
|
|
|
- Тип: строка
|
|
|
|
Клиентский TLS сертификат для подключений от Vitastor OSD к etcd/Antietcd, если вы не хотите
|
|
использовать общий сертификат OSD [osd_cert](#osd_cert).
|
|
|
|
## osd_etcd_client_key
|
|
|
|
- Тип: строка
|
|
|
|
Закрытый ключ для сертификата osd_etcd_client_cert.
|
|
|
|
## mon_etcd_client_cert
|
|
|
|
- Тип: строка
|
|
|
|
Клиентский TLS сертификат для подключений от мониторов Vitastor к etcd/Antietcd - требуется, если
|
|
вы не используете встроенный в монитор Antietcd. Если вы используете его, то монитор и так имеет
|
|
прямой доступ к данным Antietcd и не требует никаких соединений.
|
|
|
|
## mon_etcd_client_key
|
|
|
|
- Тип: строка
|
|
|
|
Закрытый ключ для сертификата mon_etcd_client_cert.
|
|
|
|
## proto_checksums
|
|
|
|
- Тип: строка
|
|
- Значение по умолчанию: payload
|
|
|
|
Одно из значений "full", "payload", "gcm" и "none":
|
|
- "full" означает расчёт и проверку контрольных сумм на транспортном уровне от полных сообщений,
|
|
включая их заголовки и данные - рекомендуется для кластеров без шифрования.
|
|
- "payload" включает контрольные суммы только для данных сообщений, но пропускает заголовки -
|
|
такая настройка рекомендуется для кластеров с включённым шифрованием, потому что в них заголовки
|
|
и так защищены шифрованием AES-GCM.
|
|
- "gcm" отключает контрольные суммы и включает шифрование полных сообщений включая заголовки и
|
|
данные - AES-GCM уже включает в себя MAC, который по сути является криптостойкой контрольной
|
|
суммой. Такая настройка медленнее и рекомендуется только для недоверенных сетей.
|
|
- "none" полностью отключает контрольные суммы на транспортном уровне.
|
|
|
|
## force_proto_checksums
|
|
|
|
- Тип: строка
|
|
|
|
Чтобы старые клиенты Vitastor могли подключаться к кластеру с включёнными контрольными
|
|
суммами, Vitastor OSD по умолчанию разрешают клиентам отключать контрольные суммы
|
|
данных (proto_checksums). Настройка force_proto_checksums задаёт минимальный уровень
|
|
безопасности, разрешённый для подключающихся клиентов. Когда шифрование отключено,
|
|
force_proto_checksums по умолчанию равно none и подключения клиентов без контрольных
|
|
сумм разрешаются. При включённом шифровании значение по умолчанию force_proto_checksums
|
|
становится "payload", чтобы блокировать подключения с неаутентифицированными данными.
|
|
|
|
## max_cipher_pool_size
|
|
|
|
- Тип: целое число
|
|
- Значение по умолчанию: 256
|
|
|
|
Максимальное количество кэшируемых в памяти OSD контекстов шифра OpenSSL, учитываемое
|
|
отдельно для каждого шифра и для шифрования и расшифровки. Вряд ли требует изменения.
|
|
|
|
## vault_url
|
|
|
|
- Тип: строка
|
|
|
|
Базовый адрес Vault.
|
|
|
|
Клиенты Vitastor поддерживают AES-256-XTS шифрование данных образов с отдельными ключами на
|
|
каждый образ. Данные шифруются клиентами, OSD не имеют доступа к незашифрованным данным.
|
|
|
|
Ключи шифрования могут храниться в etcd или, для повышенного уровня безопасности, во внешнем
|
|
[HashiCorp Vault](https://developer.hashicorp.com/vault/) или [OpenBao](https://openbao.org/).
|
|
|
|
Клиенты Vitastor используют [движок секретов v1](https://openbao.org/api-docs/secret/kv/kv-v1/)
|
|
и [TLS-аутентификацию](https://openbao.org/api-docs/auth/cert/) в Vault.
|
|
|
|
В этом случае, только ID ключей хранятся в etcd.
|
|
|
|
## vault_secret_api_path
|
|
|
|
- Тип: строка
|
|
- Значение по умолчанию: /v1/secret/
|
|
|
|
Путь к API секретов v1 для использования клиентами.
|
|
|
|
## vault_client_cert
|
|
|
|
- Тип: строка
|
|
|
|
Клиентский TLS сертификат для подключений к Vault на тот случай, если вы не хотите использовать
|
|
общий сертификат клиента Vitastor [cert](#cert), используемый для подключений к Vault по умолчанию.
|
|
|
|
## vault_client_key
|
|
|
|
- Тип: строка
|
|
|
|
Закрытый ключ для сертификата vault_client_cert.
|
|
|
|
## vault_ca
|
|
|
|
- Тип: строка
|
|
|
|
Доверенный корневой TLS-сертификат для проверки сертификата сервера Vault.
|
|
Может быть путём к файлу, директории или просто строкой с сертификатом в
|
|
формате PEM.
|
|
|
|
## vault_timeout_ms
|
|
|
|
- Тип: целое число
|
|
- Значение по умолчанию: 5000
|
|
|
|
Максимально время выполнения Vault-запросов в миллисекундах.
|
|
|
|
## vault_error_timeout_sec
|
|
|
|
- Тип: целое число
|
|
- Значение по умолчанию: 60
|
|
|
|
Время (в секундах) для ожидания перед повторной попыткой при получении ошибки от Vault.
|
|
|
|
## vault_refresh_leeway_sec
|
|
|
|
- Тип: целое число
|
|
- Значение по умолчанию: 60
|
|
|
|
Зазор времени (в секундах), чтобы обновлять токены Vault чуть раньше их реального
|
|
lease_timeout, на случай "ухода" системных часов.
|