Развертывание в облачной среде#
Для работы kafka-certificate-signature-interceptor требуются сертификаты для подписания и проверки подписи сообщений.
Предусловия#
В режиме работы public-key consumer-interceptor для проверки подписи не требуются сертификаты, т.к. публичный ключ передается в заголовке сообщения
В зависимости от способа получения сертификатов существует несколько вариантов развертывания в облачной среде:
С получением сертификатов из секретов K8S/OS
С получением сертификатов из hashicorp vault перехватчиком напрямую
С получением сертификатов из hashicorp vault перехватчиком через egress-gateway
С получением сертификатов из 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 в облачной среде.