Развертывание в облачной среде#

Для работы kafka-certificate-signature-interceptor требуются сертификаты для подписания и проверки подписи сообщений.

Предусловия#

В режиме работы public-key consumer-interceptor для проверки подписи не требуются сертификаты, т.к. публичный ключ передается в заголовке сообщения

В зависимости от способа получения сертификатов существует несколько вариантов развертывания в облачной среде:

  1. С получением сертификатов из секретов K8S/OS

  2. С получением сертификатов из hashicorp vault перехватчиком напрямую

  3. С получением сертификатов из hashicorp vault перехватчиком через egress-gateway

  4. С получением сертификатов из hashicorp vault с помощью vault-sidecar

В зависимости от варианта развертывания интерсептора может использовать те или иные типы хранилищ сертификатов, конфигурируемые настройками interceptor.signature.certificate.keystore.type для producer-interceptor и interceptor.signature.certificate.truststore.type для consumer-interceptor.

Последовательность выполнения#

Получение сертификатов из секретов K8S/OS#

Секреты хранятся напрямую в образе приложения или в secret K8S/OS. В таком режиме:

  • producer-interceptor может использовать хранилища типа:

    • jks: interceptor.signature.certificate.keystore.type = jks, полный пример настройки в разделе Пример конфигурации хранилища типа jks для kafka-producer в документации

    • pem: interceptor.signature.certificate.keystore.type = pem, полный пример настройки в разделе Пример конфигурации хранилища типа pem для kafka-producer в документации

  • consumer-interceptor может использовать хранилища типа:

    • jks: interceptor.signature.certificate.truststore.type = jks, полный пример настройки в разделе Пример конфигурации хранилища типа jks для kafka-consumer в документации

    • pem: interceptor.signature.certificate.truststore.type = pem, полный пример настройки в разделе Пример конфигурации хранилища типа pem для kafka-consumer в документации

    • file: interceptor.signature.certificate.truststore.type = file, полный пример настройки в разделе Пример конфигурации хранилища типа file для kafka-consumer в документации

Получение сертификатов из Hashicorp Vault с помощью vault-sidecar#

Интерсепторы используют сертификаты, полученные из vault kv-engine с помощью vault-sidecar. Особенности использования аналогичны предыдущему варианту «Получение сертификатов из секретов K8S/OS».

Получение сертификатов из Hashicorp Vault напрямую#

Интерсепторы подключаются к Hashicorp Vault напрямую, используя секреты из образа приложения или секрет K8S/OS. Для подключения к vault можно использовать сертификаты в формате JKS или pem.

Для подписи/проверки подписи:

  • producer-interceptor:

    • использует хранилище типа vault: interceptor.signature.certificate.keystore.type = vault, полный пример настройки в разделе «Пример конфигурации хранилища типа vault для kafka-producer» в документации;

    • может выпускать сертификат с помощью pki-engine или получать сертификат с помощью kv-engine в формате pem.

  • consumer-interceptor:

    • используют хранилища типа vault: interceptor.signature.certificate.truststore.type = vault, полный пример настройки в разделе «Пример конфигурации хранилища типа vault для kafka-consumer» в документации;

    • может получать уже выпущенный сертификат с помощью запроса на pki-engine pki/cert/<серийный номер сертификата>.

Получение сертификатов из Hashicorp vault через egress-gateway#

Интерсепторы подключаются к Hashicorp Vault через egress-gateway по протоколу HTTP. На egress настроена tls-termination. Особенности использования аналогичны предыдущему варианту «Получение сертификатов из Hashicorp Vault напрямую».

Для использования HTTP-протокола необходимо указать его в vault.address и отключить TLS:

# Адрес vault
interceptor.signature.certificate.ssl.vault.address = http://host:port
interceptor.signature.certificate.ssl.vault.tls.enable = false

Результат#

Выполнено подключение интерсептора Kafka-certificate-signature-interceptor в облачной среде.