client_certificate_authorization
Секция client_certificate_authorization содержит настройки запроса клиентского сертификата при аутентификации устройств по gRPCs и задаёт правила проверки клиентских SSL-сертификатов и формирования SID пользователей при аутентификации по клиентскому сертификату. Настройки указываются в статической конфигурации кластера. Вложенный блок client_certificate_definitions задаёт требования к заполнению полей "Subject" и "Subject Alternative Name" клиентских сертификатов, а также список присваиваемых SID групп.
Клиентские сертификаты описываются стандартом X.509. Поле "Subject" сертификата состоит из нескольких компонентов (например, O — организация, OU — подразделение в составе организации, C — страна, CN — имя собственное субъекта). Проверки могут быть настроены на соответствие одного или нескольких компонентов поля ожидаемым значениям.
Поле "Subject Alternative Name" сертификата представляет собой список сетевых имён или IP-адресов. Проверка может быть настроена на соответствие сетевых имён в сертификате ожидаемым значениям.
Синтаксис
client_certificate_authorization:
request_client_certificate: Bool
client_certificate_required: Bool
default_group: <SID по умолчанию>
client_certificate_definitions:
- member_groups: <массив SID>
require_same_issuer: Bool
subject_dns:
suffixes: <массив разрешенных суффиксов>
values: <массив допустимых значений>
subject_terms:
- short_name: <имя компонента Subject Name>
suffixes: <массив разрешенных суффиксов>
values: <массив допустимых значений>
- member_groups: <массив SID>
...
| Ключ | Описание |
|---|---|
request_client_certificate |
Запрос клиентского сертификата при TLS-handshake для gRPCs. Допустимые значения:
|
client_certificate_required |
Требование клиентского сертификата при TLS-handshake для gRPCs. Допустимые значения:
|
default_group |
SID, присваиваемый всем подключениям с доверенным клиентским сертификатом, если нет явно заданных настроек в секции client_certificate_definitions.Значение по умолчанию: DefaultClientAuth@cert. |
client_certificate_definitions |
Блок настроек требований к клиентским сертификатам. |
member_groups |
Массив SID групп, присваиваемых подключениям, сертификаты которых соответствуют требованиям этого блока. |
require_same_issuer |
Требовать совпадение поля "Issuer" (наименование центра регистрации) для клиентского и серверного сертификатов. Допустимые значения:
|
subject_dns |
Допустимые значения поля "Subject Alternative Name" в виде массива полных значений (ключ values) или массива суффиксов значений (ключ suffixes). Проверка считается успешной при совпадении одного из значений поля с любым полным именем либо при соответствии любому указанному суффиксу. |
subject_terms |
Требования к заполнению компонентов поля "Subject". Указывается имя компонента (ключ short_name), а также набор полных значений (ключ values) или набор суффиксов значений (ключ suffixes). Проверка считается успешной, если для каждого проверяемого компонента поля "Subject" его значение соответствует одному из разрешённых полных значений либо одному из разрешённых суффиксов. |
Примеры
Следующий фрагмент конфигурации требует, чтобы в поле "Subject" клиентского сертификата были компоненты O=YDB и CN=user1. Для такого сертификата будет сформирован SID пользователя O=YDB,CN=user1@cert и будет назначена группа group@cert:
client_certificate_authorization:
request_client_certificate: true
client_certificate_definitions:
- member_groups: ["group@cert"]
subject_terms:
- short_name: "O"
values: ["YDB"]
- short_name: "CN"
values: ["user1"]
В компоненте CN может указываться сетевое имя сервера, а не имя пользователя. Такой вариант целесообразно использовать при регистрации динамических узлов. Следующий фрагмент конфигурации требует, чтобы в поле "Subject" клиентского сертификата узла были компоненты O=YDB и CN=server1.internal.corp. Для такого сертификата будет сформирован SID O=YDB,CN=server1.internal.corp@cert и будет назначена группа registerNode@cert:
client_certificate_authorization:
request_client_certificate: true
client_certificate_definitions:
- member_groups: ["registerNode@cert"]
subject_terms:
- short_name: "O"
values: ["YDB"]
- short_name: "CN"
values: ["server1.internal.corp"]