首页主机资讯Kafka在Ubuntu上的安全配置指南

Kafka在Ubuntu上的安全配置指南

时间2025-11-13 23:56:05发布访客分类主机资讯浏览555
导读:Kafka在Ubuntu上的安全配置指南 Kafka作为分布式消息系统,需通过认证、加密、授权及系统加固保障数据安全。以下是针对Ubuntu环境的详细安全配置步骤: 1. 前置准备 安装Java JDK:Kafka依赖Java环境,推荐使...

Kafka在Ubuntu上的安全配置指南

Kafka作为分布式消息系统,需通过认证、加密、授权及系统加固保障数据安全。以下是针对Ubuntu环境的详细安全配置步骤:

1. 前置准备

  • 安装Java JDK:Kafka依赖Java环境,推荐使用OpenJDK 11+。
    sudo apt update &
        &
     sudo apt install -y openjdk-11-jdk
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64  # 添加至~/.bashrc永久生效
    
  • 安装Kafka:从官网下载并解压至/opt/kafka(示例版本3.0.0)。
    wget https://downloads.apache.org/kafka/3.0.0/kafka_2.13-3.0.0.tgz
    tar -xzf kafka_2.13-3.0.0.tgz -C /opt/
    mv /opt/kafka_2.13-3.0.0 /opt/kafka
    

2. 配置SASL认证(身份验证)

SASL用于验证客户端与Broker的身份,推荐使用SCRAM-SHA-512(强度高于PLAIN)。

2.1 启用SASL_PLAINTEXT/SASL_SSL

编辑/opt/kafka/config/server.properties,添加以下配置:

listeners=SASL_SSL://:9093  # 使用SASL+SSL加密通信
security.inter.broker.protocol=SASL_SSL  # Broker间通信协议
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-512  # Broker间认证机制
sasl.enabled.mechanisms=SCRAM-SHA-512  # 支持的客户端认证机制

2.2 创建JAAS配置文件

/opt/kafka/config/下创建kafka_server_jaas.conf,定义Broker用户(如admin):

KafkaServer {

    org.apache.kafka.common.security.scram.ScramLoginModule required
    username="admin"
    password="admin-secret"  # 实际使用时替换为强密码
}
    ;
    

2.3 关联JAAS配置与Kafka

修改/opt/kafka/bin/kafka-server-start.sh,在启动命令前添加JVM参数:

export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"

2.4 注册Broker用户

使用kafka-configs.sh脚本将Broker用户添加至Kafka:

/opt/kafka/bin/kafka-configs.sh --zookeeper localhost:2181 \
    --alter \
    --add-config "SCRAM-SHA-512=[iterations=8192,password=admin-secret]" \
    --entity-type users \
    --entity-name admin

3. 配置SSL/TLS加密(数据传输安全)

SSL/TLS用于加密Broker与客户端、Broker间的通信,防止数据泄露。

3.1 生成证书与密钥库

使用OpenSSL生成CA证书、服务器证书及客户端证书:

# 创建证书目录
mkdir -p /opt/kafka/config/ssl &
    &
     cd /opt/kafka/config/ssl

# 生成CA私钥与证书(有效期10年)
openssl req -new -x509 -days 3650 -keyout ca-key.pem -out ca-cert.pem -subj "/CN=Kafka-CA"

# 生成服务器私钥与证书签名请求(CSR)
openssl req -newkey rsa:2048 -days 365 -nodes -keyout server-key.pem -out server-req.pem -subj "/CN=localhost"

# 用CA签署服务器证书
openssl x509 -req -in server-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem

# 生成客户端私钥与CSR
openssl req -newkey rsa:2048 -days 365 -nodes -keyout client-key.pem -out client-req.pem -subj "/CN=client"

# 用CA签署客户端证书
openssl x509 -req -in client-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem

3.2 导入证书至Java Keystore/Truststore

将证书导入Broker的Keystore(存储自身私钥与证书)和Truststore(存储CA证书):

# 创建Broker Keystore并导入服务器证书
keytool -importkeystore -deststorepass kafka-pass -destkeypass kafka-pass -destkeystore kafka.keystore.jks -srckeystore server-cert.pem -srcstoretype PEM

# 导入CA证书至Broker Truststore(信任客户端证书)
keytool -import -alias ca -file ca-cert.pem -keystore kafka.truststore.jks -storepass kafka-pass -noprompt

3.3 配置Kafka使用SSL

编辑/opt/kafka/config/server.properties,添加SSL配置:

ssl.keystore.location=/opt/kafka/config/ssl/kafka.keystore.jks
ssl.keystore.password=kafka-pass
ssl.key.password=kafka-pass
ssl.truststore.location=/opt/kafka/config/ssl/kafka.truststore.jks
ssl.truststore.password=kafka-pass
ssl.client.auth=required  # 强制客户端提供证书(双向TLS)
ssl.enabled.protocols=TLSv1.2,TLSv1.3  # 仅允许安全协议
ssl.cipher.suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384  # 限制加密套件

4. 配置授权(ACL,访问控制)

通过ACL限制用户对Kafka资源(Topic、Group等)的操作权限。

4.1 启用ACL授权器

编辑/opt/kafka/config/server.properties,添加以下配置:

authorizer.class.name=kafka.security.authorizer.AclAuthorizer
allow.everyone.if.no.acl.found=false  # 无ACL时拒绝访问
super.users=User:admin  # 定义超级用户(可管理所有资源)

4.2 创建ACL规则

使用kafka-acls.sh脚本为用户分配权限(示例:允许admin读写test-topic):

/opt/kafka/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
    --add \
    --allow-principal User:admin \
    --operation Read \
    --operation Write \
    --topic test-topic

5. 防火墙与操作系统加固

5.1 配置防火墙

仅开放Kafka使用的端口(默认9093),阻止非法访问:

sudo ufw allow 9093/tcp
sudo ufw enable  # 启用防火墙

5.2 限制Kafka进程权限

将Kafka运行在非root用户(如kafka)下,减少权限滥用风险:

sudo useradd -r -m -d /opt/kafka -s /sbin/nologin kafka
sudo chown -R kafka:kafka /opt/kafka
sudo -u kafka /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties

6. 验证配置

6.1 测试SASL/SSL连接

使用客户端配置文件/opt/kafka/config/client.properties连接Broker:

bootstrap.servers=localhost:9093
security.protocol=SASL_SSL
ssl.truststore.location=/opt/kafka/config/ssl/kafka.truststore.jks
ssl.truststore.password=kafka-pass
sasl.mechanism=SCRAM-SHA-512
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret";
    

6.2 生产/消费消息

# 生产消息(需指定client.properties)
/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9093 --topic test-topic --producer.config /opt/kafka/config/client.properties

# 消费消息
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9093 --topic test-topic --consumer.config /opt/kafka/config/client.properties --from-beginning

通过以上步骤,Kafka在Ubuntu环境中的安全性将得到显著提升。需定期更新证书、监控日志,并根据业务需求调整权限策略。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Kafka在Ubuntu上的安全配置指南
本文地址: https://pptw.com/jishu/747621.html
如何在Ubuntu上部署Kafka集群及配置 如何升级Ubuntu Kafka版本及配置

游客 回复需填写必要信息