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

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

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

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

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

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

Примечание!

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

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

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

  • версия MatrixGate — v6.8.2 или выше;

  • на брокере Kafka включён SSL-адрес прослушивания;

  • узел, на котором работает MatrixGate, имеет доступ к брокеру Kafka;

  • на узле MatrixGate сохранён файл CA-сертификата и есть права на его чтение.

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

В приведённых примерах показаны только ключевые параметры SSL и SASL в источнике данных Kafka. Измените адрес брокера, пути к сертификатам, данные аутентификации, topic, partition и job в соответствии с вашим окружением.

3.1 Только SSL

При включении только SSL необходимо настроить адрес брокера Kafka и путь к 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 地址,多个 broker 用逗号分隔。
  kafka-broker = "broker1:9093,broker2:9093"

  # CA 证书路径,用于校验 Kafka broker 证书;配置该参数后启用 SSL 连接。
  SSL-ca-cert = "/path/to/ca.pem"

  # 是否启用 SASL 认证。
  enable-SASL = true

  # 是否启用 Kafka SASL handshake。标准 Kafka SASL 连接一般设置为 true。
  enable-SASL-handshake = true

  # SASL 认证机制,PLAIN 表示使用 SASL/PLAIN 用户名密码认证。
  SASL-mechanism = "PLAIN"

  # SASL/PLAIN 用户名。
  SASL-user = "user"

  # SASL/PLAIN 密码。
  SASL-password = "password"

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

3.3 SASL_SSL_SCRAM

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

[source]
  source = "kafka"

[source.kafka]
  # Kafka broker 地址,多个 broker 用逗号分隔。
  kafka-broker = "broker1:9093,broker2:9093"

  # CA 证书路径,用于校验 Kafka broker 证书;配置该参数后启用 SSL 连接。
  SSL-ca-cert = "/path/to/ca.pem"

  # 是否启用 SASL 认证。
  enable-SASL = true

  # 是否启用 Kafka SASL handshake。标准 Kafka SASL 连接一般设置为 true。
  enable-SASL-handshake = true

  # SASL 认证机制,SCRAM 表示使用 SASL/SCRAM 认证。
  SASL-mechanism = "SCRAM"

  # SASL/SCRAM 用户名。
  SASL-user = "user"

  # SASL/SCRAM 密码。
  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.

Аутентификация GSSAPI по умолчанию использует быструю аутентификацию (PAFXFAST). Если подключение завершается ошибкой на этапе быстрой аутентификации, задайте в [source.kafka] параметр GSSAPI-disable-PAFXFAST = true, отключите быструю аутентификацию и повторите попытку.

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

[source]
  source = "kafka"

[source.kafka]
  # Kafka broker 地址,多个 broker 用逗号分隔。
  kafka-broker = "broker1:9093,broker2:9093"

  # CA 证书路径,用于校验 Kafka broker 证书;配置该参数后启用 SSL 连接。
  SSL-ca-cert = "/path/to/ca.pem"

  # 是否启用 SASL 认证。
  enable-SASL = true

  # 是否启用 Kafka SASL handshake。标准 Kafka SASL 连接一般设置为 true。
  enable-SASL-handshake = true

  # SASL 认证机制,GSSAPI 表示使用 Kerberos 认证。
  SASL-mechanism = "GSSAPI"

  # GSSAPI 认证方式,KEYTAB 表示使用 keytab 文件认证。
  GSSAPI-auth-type = "KEYTAB"

  # Kerberos 配置文件路径,通常是 krb5.conf。
  GSSAPI-kerberos-config-path = "/etc/krb5.conf"

  # keytab 文件路径,GSSAPI-auth-type = "KEYTAB" 时使用。
  GSSAPI-keytab-path = "/etc/security/keytabs/kafka.service.keytab"

  # GSSAPI 用户或 principal。
  GSSAPI-user = "kafka/host.example.com"

  # Kerberos realm。
  GSSAPI-realm = "EXAMPLE.COM"

  # Kafka broker 使用的 Kerberos service name,通常是 kafka。
  GSSAPI-service-name = "kafka"

  # 是否关闭 GSSAPI 快速认证(PAFXFAST)。默认 false;在快速认证阶段失败时设为 true。
  GSSAPI-disable-PAFXFAST = false

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

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

[source]
  source = "kafka"

[source.kafka]
  # Kafka broker 地址,多个 broker 用逗号分隔。
  kafka-broker = "broker1:9093,broker2:9093"

  # CA 证书路径,用于校验 Kafka broker 证书;配置该参数后启用 SSL 连接。
  SSL-ca-cert = "/path/to/ca.pem"

  # 是否启用 SASL 认证。
  enable-SASL = true

  # 是否启用 Kafka SASL handshake。标准 Kafka SASL 连接一般设置为 true。
  enable-SASL-handshake = true

  # SASL 认证机制,GSSAPI 表示使用 Kerberos 认证。
  SASL-mechanism = "GSSAPI"

  # GSSAPI 认证方式,USER 表示使用用户名密码认证。
  GSSAPI-auth-type = "USER"

  # Kerberos 配置文件路径,通常是 krb5.conf。
  GSSAPI-kerberos-config-path = "/etc/krb5.conf"

  # GSSAPI 用户。
  GSSAPI-user = "user"

  # GSSAPI 密码,GSSAPI-auth-type = "USER" 时使用。
  GSSAPI-password = "password"

  # Kerberos realm。
  GSSAPI-realm = "EXAMPLE.COM"

  # Kafka broker 使用的 Kerberos service name,通常是 kafka。
  GSSAPI-service-name = "kafka"

  # 是否关闭 GSSAPI 快速认证(PAFXFAST)。默认 false;在快速认证阶段失败时设为 true。
  GSSAPI-disable-PAFXFAST = false

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