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.
Допустимые значения:
  • true — сервер запрашивает клиентский сертификат. Если сертификат предъявлен, он проверяется на TLS-уровне при аутентификации устройств (соединение с недоверенным сертификатом не устанавливается); после успешно пройденной проверки сервер приоритетно использует аутентификационный токен для аутентификации клиента, а при отсутствии токена выполняется аутентификация по клиентскому сертификату. Если сертификат не предъявлен, то при настройке client_certificate_required=true соединение не устанавливается.
  • false — сервер не запрашивает клиентский сертификат при TLS-handshake; аутентификация устройств и аутентификация по клиентскому сертификату по gRPCs при такой настройке недоступны.
    Значение по умолчанию: false.
client_certificate_required Требование клиентского сертификата при TLS-handshake для gRPCs.
Допустимые значения:
  • true — сервер требует клиентский сертификат: соединение без сертификата или с недоверенным сертификатом не устанавливается. Можно указать true только вместе с request_client_certificate: true.
  • false — наличие клиентского сертификата не обязательно; поведение при запросе сертификата определяется параметром request_client_certificate.
    Значение по умолчанию: false.
default_group SID, присваиваемый всем подключениям с доверенным клиентским сертификатом, если нет явно заданных настроек в секции client_certificate_definitions.
Значение по умолчанию: DefaultClientAuth@cert.
client_certificate_definitions Блок настроек требований к клиентским сертификатам.
member_groups Массив SID групп, присваиваемых подключениям, сертификаты которых соответствуют требованиям этого блока.
require_same_issuer Требовать совпадение поля "Issuer" (наименование центра регистрации) для клиентского и серверного сертификатов.
Допустимые значения:
  • true — совпадение требуется (применяется по умолчанию, если параметр не задан);
  • false — совпадение не требуется (клиентский и серверный сертификаты могут быть выпущены разными центрами регистрации).
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"]
Предыдущая
Следующая