Kafka 连接安全配置说明
提示
本产品 mingdaoyun-hap、mingdaoyun-hdp、mingdaoyun-flink 3个镜像中均使用到 Kafka,调整安全配置需整体修改。
连接配置参数说明
| 环境变量 | 说明 | 默认值 |
|---|---|---|
ENV_KAFKA_ENDPOINTS | Kafka Broker 地址列表,多个地址使用逗号分隔 | 127.0.0.1:9092 |
ENV_KAFKA_SECURITY_PROTOCOL | Kafka 安全协议模式 | 空 |
ENV_KAFKA_SASL_MECHANISM | SASL 认证机制 | 空 |
ENV_KAFKA_SASL_USERNAME | SASL 用户名 | 空 |
ENV_KAFKA_SASL_PASSWORD | SASL 密码 | 空 |
ENV_KAFKA_SSL_CA_LOCATION | Kafka CA 证书路径 | 空 |
ENV_KAFKA_SSL_CLIENT_CA_LOCATION | Kafka 客户端证书路径 | 空 |
ENV_KAFKA_SSL_CLIENT_KEY_LOCATION | Kafka 客户端私钥路径 | 空 |
安全协议模式说明
Kafka 支持多种安全认证模式,包括 Plaintext、SaslPlaintext、Ssl、SaslSsl。
1. Plaintext(默认模式)
未启用任何安全认证机制,仅使用明文通信,无需配置 SASL 或 SSL 相关参数。
2. SaslPlaintext(启用 SASL 认证)
使用 SASL 机 制进行身份认证,但数据传输仍为明文。
配置文件需要增加以下环境变量:
| 环境变量 | 说明 |
|---|---|
ENV_KAFKA_SECURITY_PROTOCOL | 设置为 SaslPlaintext |
ENV_KAFKA_SASL_MECHANISM | SASL 认证机制,固定为 PLAIN |
ENV_KAFKA_SASL_USERNAME | SASL 用户名 |
ENV_KAFKA_SASL_PASSWORD | SASL 密码 |
3. Ssl(启用 TLS 加密)
使用 TLS/SSL 加密通信,但不启用 SASL 认证。
配置文件需要增加以下环境变量:
| 环境变量 | 说明 |
|---|---|
ENV_KAFKA_SECURITY_PROTOCOL | 设置为 Ssl |
ENV_KAFKA_SSL_CA_LOCATION | CA 根证书路径 |
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_MECHANISM | SASL 认证机制,固定为 PLAIN |
ENV_KAFKA_SASL_USERNAME | SASL 用户名 |
ENV_KAFKA_SASL_PASSWORD | SASL 密码 |
ENV_KAFKA_SSL_CA_LOCATION | CA 根证书(PEM 格式) |
ENV_KAFKA_SSL_CLIENT_CA_LOCATION | 客户端证书(PEM 格式) |
ENV_KAFKA_SSL_CLIENT_KEY_LOCATION | 客户端私钥(PEM 格式) |
TLS 证书配置
当使用 Ssl 或 SaslSsl 时,需要在容器中提供 TLS 证书。
证书文件
需要准备以下 PEM 证书:
| 文件 | 说明 |
|---|---|
ca.crt | Kafka 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"