Настройка зашифрованного подключения MatrixGate к Kafka (SSL)

В этом документе описано, как включить SSL-шифрование при подключении MatrixGate к Kafka. Описанная функция SSL применима к MatrixGate v6.8.2 и выше.

1 Описание функции

SSL-подключение и существующая SASL-аутентификация являются независимыми параметрами. Их можно включать по отдельности или одновременно.

Сейчас MatrixGate поддерживает односторонний TLS: подключение к Kafka шифруется, а MatrixGate проверяет сертификат Kafka broker.

После настройки SSL-ca-cert MatrixGate включает SSL-подключение к Kafka.

Внимание!

SSL-ca-cert должен указывать путь к CA-сертификату, соответствующему сертификату Kafka broker. Файл сертификата должен быть доступен для чтения на машине, где запущен процесс MatrixGate.

2 Предварительные условия

Перед настройкой убедитесь, что:

  • Версия MatrixGate: v6.8.2 или выше.
  • На Kafka broker включен SSL listener.
  • Узел MatrixGate может обращаться к Kafka broker.
  • На узле MatrixGate сохранен CA-сертификат, и процесс MatrixGate имеет права на чтение файла.

3 Примеры конфигурации

Следующие примеры показывают только ключевые параметры источника Kafka, связанные с SSL и SASL. Измените адреса broker, пути сертификатов, данные аутентификации, topic, partition и job в соответствии с реальной средой.

3.1 Только SSL

Если включается только SSL, укажите адреса Kafka broker и путь к CA-сертификату.

[source]
  source = "kafka"

[source.kafka]
  # Адреса Kafka broker. Несколько broker разделяются запятыми.
  kafka-broker = "broker1:9094,broker2:9094"

  # Путь к CA-сертификату для проверки сертификата Kafka broker. После настройки параметра включается SSL.
  SSL-ca-cert = "/path/to/ca.pem"

  [[source.kafka.topic]]
    topic = "topic_name"
    partition = "*"
    job = "job_name"

3.2 SASL_SSL_PLAIN

При одновременном включении SSL и SASL/PLAIN настройте SSL-параметры, имя пользователя и пароль SASL.

[source]
  source = "kafka"

[source.kafka]
  kafka-broker = "broker1:9093,broker2:9093"
  SSL-ca-cert = "/path/to/ca.pem"

  # Включить SASL-аутентификацию.
  enable-SASL = true

  # Включить Kafka SASL handshake. Для стандартного SASL-подключения обычно true.
  enable-SASL-handshake = true

  # Механизм SASL. PLAIN означает аутентификацию SASL/PLAIN по имени пользователя и паролю.
  SASL-mechanism = "PLAIN"
  SASL-user = "user"
  SASL-password = "password"

  [[source.kafka.topic]]
    topic = "topic_name"
    partition = "*"
    job = "job_name"

3.3 SASL_SSL_SCRAM

При одновременном включении SSL и SASL/SCRAM настройте SSL-параметры, имя пользователя, пароль и алгоритм SCRAM.

[source]
  source = "kafka"

[source.kafka]
  kafka-broker = "broker1:9093,broker2:9093"
  SSL-ca-cert = "/path/to/ca.pem"

  enable-SASL = true
  enable-SASL-handshake = true

  # SCRAM означает аутентификацию SASL/SCRAM.
  SASL-mechanism = "SCRAM"
  SASL-user = "user"
  SASL-password = "password"

  # Алгоритм хеширования SCRAM. Поддерживаются SHA-256 и SHA-512.
  SCRAM-algorithm = "SHA-512"

  [[source.kafka.topic]]
    topic = "topic_name"
    partition = "*"
    job = "job_name"

3.4 SASL_SSL_GSSAPI

При одновременном включении SSL и SASL/GSSAPI настройте SSL-параметры и параметры SASL/GSSAPI.

3.4.1 Аутентификация с файлом keytab

[source]
  source = "kafka"

[source.kafka]
  kafka-broker = "broker1:9093,broker2:9093"
  SSL-ca-cert = "/path/to/ca.pem"

  enable-SASL = true
  enable-SASL-handshake = true
  SASL-mechanism = "GSSAPI"

  # KEYTAB означает аутентификацию через keytab-файл.
  GSSAPI-auth-type = "KEYTAB"
  GSSAPI-kerberos-config-path = "/etc/krb5.conf"
  GSSAPI-keytab-path = "/etc/security/keytabs/kafka.service.keytab"
  GSSAPI-user = "kafka/host.example.com"
  GSSAPI-realm = "EXAMPLE.COM"
  GSSAPI-service-name = "kafka"

  [[source.kafka.topic]]
    topic = "topic_name"
    partition = "*"
    job = "job_name"

3.4.2 Аутентификация по имени пользователя и паролю

[source]
  source = "kafka"

[source.kafka]
  kafka-broker = "broker1:9093,broker2:9093"
  SSL-ca-cert = "/path/to/ca.pem"

  enable-SASL = true
  enable-SASL-handshake = true
  SASL-mechanism = "GSSAPI"

  # USER означает аутентификацию по имени пользователя и паролю.
  GSSAPI-auth-type = "USER"
  GSSAPI-kerberos-config-path = "/etc/krb5.conf"
  GSSAPI-user = "user"
  GSSAPI-password = "password"
  GSSAPI-realm = "EXAMPLE.COM"
  GSSAPI-service-name = "kafka"

  [[source.kafka.topic]]
    topic = "topic_name"
    partition = "*"
    job = "job_name"