MatrixGate Kafka 加密连接(SSL)配置说明

本文档介绍 MatrixGate 连接 Kafka 时启用 SSL 加密连接的配置方法。本文涉及的 SSL 配置功能适用于 MatrixGate v6.8.2 及以上版本。

1 功能说明

SSL 连接和 已有的 SASL 认证是两个独立配置项,可以分别独立开启,也可以同时开启使用。

当前 MatrixGate 支持单向 TLS:Kafka 连接会被加密,MatrixGate 会校验 Kafka broker 证书。

配置 SSL-ca-cert 后,MatrixGate 会启用 SSL 连接。

注意!

SSL-ca-cert 需配置为 Kafka broker 证书对应的 CA 证书路径。该证书文件必须在 MatrixGate 进程运行的机器上可读。

2 前提条件

配置前,请确认:

  • MatrixGate 版本为 v6.8.2 或更高版本。

  • Kafka broker 已开启 SSL 监听地址。

  • MatrixGate 运行节点可以访问 Kafka broker。

  • MatrixGate 运行节点已保存 CA 证书文件,并具备读取权限。

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 地址,多个 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 参数。

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"

  [[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"

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