跳到主要内容

Kafka 连接安全配置说明

提示

本产品 mingdaoyun-hapmingdaoyun-hdpmingdaoyun-flink 3个镜像中均使用到 Kafka,调整安全配置需整体修改。

连接配置参数说明

环境变量说明默认值
ENV_KAFKA_ENDPOINTSKafka Broker 地址列表,多个地址使用逗号分隔127.0.0.1:9092
ENV_KAFKA_SECURITY_PROTOCOLKafka 安全协议模式
ENV_KAFKA_SASL_MECHANISMSASL 认证机制
ENV_KAFKA_SASL_USERNAMESASL 用户名
ENV_KAFKA_SASL_PASSWORDSASL 密码
ENV_KAFKA_SSL_CA_LOCATIONKafka CA 证书路径
ENV_KAFKA_SSL_CLIENT_CA_LOCATIONKafka 客户端证书路径
ENV_KAFKA_SSL_CLIENT_KEY_LOCATIONKafka 客户端私钥路径

安全协议模式说明

Kafka 支持多种安全认证模式,包括 Plaintext、SaslPlaintext、Ssl、SaslSsl

1. Plaintext(默认模式)

未启用任何安全认证机制,仅使用明文通信,无需配置 SASL 或 SSL 相关参数。

2. SaslPlaintext(启用 SASL 认证)

使用 SASL 机制进行身份认证,但数据传输仍为明文。

配置文件需要增加以下环境变量:

环境变量说明
ENV_KAFKA_SECURITY_PROTOCOL设置为 SaslPlaintext
ENV_KAFKA_SASL_MECHANISMSASL 认证机制,固定为 PLAIN
ENV_KAFKA_SASL_USERNAMESASL 用户名
ENV_KAFKA_SASL_PASSWORDSASL 密码

3. Ssl(启用 TLS 加密)

使用 TLS/SSL 加密通信,但不启用 SASL 认证。

配置文件需要增加以下环境变量:

环境变量说明
ENV_KAFKA_SECURITY_PROTOCOL设置为 Ssl
ENV_KAFKA_SSL_CA_LOCATIONCA 根证书路径
ENV_KAFKA_SSL_CLIENT_CA_LOCATION客户端证书路径
ENV_KAFKA_SSL_CLIENT_KEY_LOCATION客户端私钥路径

4. SaslSsl(启用 SASL + TLS)

同时启用 SASL 身份认证和 SSL 加密通信(推荐的安全模式)。

配置文件需要增加以下环境变量:

环境变量说明
ENV_KAFKA_SECURITY_PROTOCOL设置为 SaslSsl
ENV_KAFKA_SASL_MECHANISMSASL 认证机制,固定为 PLAIN
ENV_KAFKA_SASL_USERNAMESASL 用户名
ENV_KAFKA_SASL_PASSWORDSASL 密码
ENV_KAFKA_SSL_CA_LOCATIONCA 根证书(PEM 格式)
ENV_KAFKA_SSL_CLIENT_CA_LOCATION客户端证书(PEM 格式)
ENV_KAFKA_SSL_CLIENT_KEY_LOCATION客户端私钥(PEM 格式)

TLS 证书配置

当使用 SslSaslSsl 时,需要在容器中提供 TLS 证书。

证书文件

需要准备以下 PEM 证书:

文件说明
ca.crtKafka CA 根证书
client.crt客户端证书
client.key客户端私钥

目录示例:

volume/kafka/
├─ ca.crt
├─ client.crt
└─ client.key

Docker 挂载证书示例

需要将证书挂载到容器内部:

volumes:
- ./volume/kafka/ca.crt:/usr/local/kafka/ca.crt
- ./volume/kafka/client.crt:/usr/local/kafka/client.crt
- ./volume/kafka/client.key:/usr/local/kafka/client.key

对应环境变量值如下(环境变量路径与容器内部路径保持一致):

ENV_KAFKA_SSL_CA_LOCATION: "/usr/local/kafka/ca.crt"
ENV_KAFKA_SSL_CLIENT_CA_LOCATION: "/usr/local/kafka/client.crt"
ENV_KAFKA_SSL_CLIENT_KEY_LOCATION: "/usr/local/kafka/client.key"