Проверка клиента SubjectName на NGINX Ingress

Я пытаюсь настроить входной контроллер NGINX, где он также может проверять уникальный CN или Subjectname, исходящий от клиента. Причина в том, что мы хотим, чтобы клиент был настроен только для доступа к контроллеру входящего трафика NGINX, а остальные клиенты, подписанные с использованием того же CA и ключа, могут быть отброшены.

    Certificate:
Data:
    Version: 1 (0x0)
    Serial Number: 2 (0x2)
Signature Algorithm: sha256WithRSAEncryption
    Issuer: CN=testAuthority
    Validity
        Not Before: Apr  5 08:02:23 2020 GMT
        Not After : Apr  5 08:02:23 2021 GMT
    Subject: CN=**client**
    Subject Public Key Info:
        Public Key Algorithm: rsaEncryption
            Public-Key: (4096 bit)
       Public Key Algorithm: rsaEncryption
            Public-Key: (4096 bit)
            Modulus:
       <snipped>
            Exponent: 65537 (0x10001)
Signature Algorithm: sha256WithRSAEncryption
<snipped>
-----BEGIN CERTIFICATE-----
<snipped>
 -----END CERTIFICATE-----

Если запрос к контроллеру NGINX получен из вышеуказанного сертификата, такого как Тема: CN, или ключ сертификата, или отпечаток пальца, то он должен быть перенаправлен на серверную часть. Остальные сертификаты следует отклонить.

Если есть какие-то аннотации или конфигурационная карта, которые можно настроить в Ingress, это может быть полезно.


person Ammrin    schedule 11.04.2020    source источник


Ответы (1)


Вы можете попробовать извлечь CN в переменную, а затем запретить доступ на основе этой переменной через фрагмент конфигурации. Одним из возможных обходных путей является использование дополнительного Ingress с выделенным CA + аутентификацией сертификата клиента и выдача клиентских сертификатов только разрешенным клиентам.

person Alex Vorona    schedule 12.04.2020