Что означает конфигурация клиент-сертификата пользователя Kubernetes webhook?

Мне нужно реализовать пользовательский модуль аутентификации и авторизации для Kubernetes. Это должно быть сделано через веб-хук.

Документация по веб-заездам по аутентификации и авторизации описывает файл конфигурации, с которым необходимо запустить API-сервер.

Файл конфигурации выглядит одинаково как для аутентификации, так и для авторизации и выглядит так:

# clusters refers to the remote service.
clusters:
  - name: name-of-remote-authn-service
    cluster:
      certificate-authority: /path/to/ca.pem         # CA for verifying the remote service.
      server: https://authn.example.com/authenticate # URL of remote service to query. Must use 'https'.

# users refers to the API server's webhook configuration.
users:
  - name: name-of-api-server
    user:
      client-certificate: /path/to/cert.pem # cert for the webhook plugin to use
      client-key: /path/to/key.pem          # key matching the cert

# kubeconfig files require a context. Provide one for the API server.
current-context: webhook
contexts:
- context:
    cluster: name-of-remote-authn-service
    user: name-of-api-sever
  name: webhook

Я вижу, что clusters раздел относится к удаленному сервису, то есть определяет веб-крючок, тем самым отвечая на вопрос, на который должен ответить API-сервер: "какая конечная точка URL-адреса используется, когда требуется решение authn / authz, и когда я подключаюсь через HTTPS, кто является полномочием CA для сертификата TLS webhook, чтобы я знал, что могу доверять удаленному webhook?"

Я не уверен в users раздел. Какова цель client-certificate а также client-key поля? Комментарий в файле говорит: "Сертификат на использование подключаемого модуля webhook", но так как этот файл конфигурации предоставляется API-серверу, а не веб-хуку, я не понимаю, что это значит. Является ли это сертификатом, который позволяет службе webhook аутентифицировать соединение, которое API-сервер будет инициировать с ним? т. е. сертификат клиента должен войти в хранилище доверенных сертификатов сервера webhook?

Верны ли оба этих предположения?

1 ответ

Веб-сайт Kubernetes использует двустороннюю аутентификацию SSL, поэтому поля в users Раздел используется для настройки сертификатов для "аутентификации на стороне клиента".

clusters Конфигурация раздела просто работает нормально, односторонняя аутентификация SSL, то есть сервер (здесь ваш модуль webhook) будет проверять запрос клиента (здесь Kubernetes) с настроенным сертификатом.

Пока вы настроили сертификаты в users В разделе клиент (Kubernetes) может иметь возможность проверять ответ сервера (модуля webhook), просто действуя как обратная CA-аутентификация одностороннего SSL.

Другие вопросы по тегам