Vault config provider#
Данный плагин позволяет добавлять любые настройки в конфигурационные файлы.
Реализует интерфейс org.apache.kafka.common.config.provider.ConfigProvider и позволяет получать параметры SSL из vault на этапе обработки конфигурации kafka-клиента/брокера/Worker kafka-connect.
Провайдер работает только с использованием локального кеша сертификатов в виде JKS-хранилищ.
Поддерживает шифрование секретов для подключения к vault:
ssl.vault.tls.keystore.password;ssl.vault.tls.truststore.password;ssl.vault.auth.password;ssl.vault.auth.secret.id;ssl.vault.auth.token.
Пример конфигурации#
Конфигурация vault config provider представлена в примере.
Пример конфигурации с загрузкой параметров провайдера из файла#
Любые настройки провайдера можно загрузить из файла (в данном примере config/vault.properties):
# Подключить config provider
config.providers = vault
config.providers.vault.class = ru.sbt.ss.kafka.VaultConfigProvider
# Путь до файла с параметрами провайдера
config.providers.vault.param.properties.file = config/vault.properties
# ОПЦИОНАЛЬНО Переопределить любые настройки провайдера, загруженные из файла конфигурации
# Common name сертификата (CN)
config.providers.vault.param.ssl.vault.pki.common.name = OVERRIDE-TEST
# Пути до хранилищ сертификатов, сгенерированных vault
config.providers.vault.param.ssl.keystore.location = override-vault-keystore.jks
config.providers.vault.param.ssl.truststore.location = override-vault-truststore.jks
# Настроить получение параметров ssl с помощью config provider
ssl.keystore.location=${vault:ssl.keystore.location}
ssl.keystore.password=${vault:ssl.keystore.password}
ssl.key.password=${vault:ssl.key.password}
ssl.truststore.location=${vault:ssl.truststore.location}
ssl.truststore.password=${vault:ssl.truststore.password}
Пример config/vault.properties (настройки указываются без префикса config.providers.*.param.) прописан в примере.
Использование дополнительного хранилища сертификатов в формате pem#
При указании следующих настроек вместе с основными jks-хранилищами будут сгенерированы дополнительные хранилища в формате pem:
# Путь до файла с приватным ключом и сертификатом в формате pem
# config.providers.vault.param.ssl.keystore.pem.location = path/to/keystore.pem
# Права доступа к файлу сертификата в POSIX формате, "644" или "w-r--r--"
# config.providers.vault.param.ssl.keystore.certificate.chain.mode = 644
# Путь до файла с цепочкой доверенных сертификатов в формате pem
# config.providers.vault.param.ssl.truststore.pem.location = path/to/truststore.pem
# Права доступа к файлу с доверенными сертификатами в POSIX формате, "644" или "w-r--r--"
# config.providers.vault.param.ssl.truststore.certificates.mode = 644
дополнительные pem-хранилища генерируются и обновляются одновременно с основными jks-хранилищами;
в хранилище сертификатов сохраняются и приватный ключ, и сертификат;
в хранилище доверенных сертификатов сохраняются все доверенные сертификаты из основного jks-хранилища;
если доверенные сертификаты в основном jks-хранилище не найдены — в дополнительное pem-хранилище попадает цепочка сертификатов, которое было подписано основнымй сертификатам (если существует, только при выпуске сертификата через pki-engine).