温馨提示×

kafka安全设置ubuntu上怎么做

小樊
54
2025-08-22 12:43:58
栏目: 智能运维

在Ubuntu上配置Kafka安全设置主要包括SSL加密、SASL认证和ACL授权,步骤如下:

  1. 安装Java

    sudo apt update  
    sudo apt install openjdk-11-jdk  
    
  2. 生成SSL证书
    使用OpenSSL生成CA、服务器和客户端证书(示例为自签名证书):

    mkdir -p kafka_ssl/{ca,server,client}  
    # 生成CA  
    openssl req -x509 -newkey rsa:2048 -keyout kafka_ssl/ca/ca-key.pem -out kafka_ssl/ca/ca-cert.pem -days 3650 -subj "/CN=KafkaCA"  
    # 生成服务器证书  
    openssl req -newkey rsa:2048 -keyout kafka_ssl/server/server-key.pem -out kafka_ssl/server/server-req.pem -days 365 -subj "/CN=kafka-server"  
    openssl x509 -req -in kafka_ssl/server/server-req.pem -CA kafka_ssl/ca/ca-cert.pem -CAkey kafka_ssl/ca/ca-key.pem -CAcreateserial -out kafka_ssl/server/server-cert.pem -days 365  
    # 生成客户端证书  
    openssl req -newkey rsa:2048 -keyout kafka_ssl/client/client-key.pem -out kafka_ssl/client/client-req.pem -days 365 -subj "/CN=kafka-client"  
    openssl x509 -req -in kafka_ssl/client/client-req.pem -CA kafka_ssl/ca/ca-cert.pem -CAkey kafka_ssl/ca/ca-key.pem -CAcreateserial -out kafka_ssl/client/client-cert.pem -days 365  
    
  3. 配置Kafka服务器

    • 编辑server.properties
      listeners=SSL://:9093,SASL_SSL://:9094  # 启用SSL和SASL_SSL监听  
      ssl.keystore.location=/path/to/server-keystore.jks  
      ssl.keystore.password=your_password  
      ssl.truststore.location=/path/to/server-truststore.jks  
      ssl.truststore.password=your_password  
      sasl.enabled.mechanisms=PLAIN  
      security.inter.broker.protocol=SASL_SSL  
      sasl.mechanism.inter.broker.protocol=PLAIN  
      authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer  # 启用ACL  
      allow.everyone.if.no.acl.found=false  
      super.users=User:admin  
      
    • 创建KeyStore和TrustStore
      keytool -import -alias server -file kafka_ssl/server/server-cert.pem -keystore kafka_ssl/server/server-keystore.jks -storepass your_password  
      keytool -import -alias ca -file kafka_ssl/ca/ca-cert.pem -keystore kafka_ssl/server/server-truststore.jks -storepass your_password  
      
  4. 配置SASL认证

    • 创建JAAS配置文件(如kafka_server_jaas.conf):
      KafkaServer {  
        org.apache.kafka.common.security.plain.PlainLoginModule required  
        username="admin"  
        password="admin-secret"  
        user_admin="admin-secret";  
      };  
      
    • 启动时加载JAAS配置
      bin/kafka-server-start.sh config/server.properties --override java.security.auth.login.config=/path/to/kafka_server_jaas.conf  
      
  5. 配置客户端
    编辑客户端配置文件(如client.properties):

    security.protocol=SASL_SSL  
    ssl.truststore.location=/path/to/client-truststore.jks  
    ssl.truststore.password=your_password  
    sasl.mechanism=PLAIN  
    sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";  
    
  6. 验证配置

    • 启动Kafka服务:
      sudo systemctl start kafka  
      
    • 使用客户端测试连接:
      bin/kafka-console-producer.sh --broker-list localhost:9093 --topic test --property security.protocol=SASL_SSL --property ssl.truststore.location=/path/to/client-truststore.jks --property sasl.jaas.config='org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";'  
      

说明

  • SSL用于加密通信,SASL用于身份认证,两者可结合使用(如SASL_SSL)。
  • ACL用于控制主题访问权限,需通过kafka-acls.sh脚本配置。
  • 生产环境中建议使用正式CA签发的证书,并妥善管理证书密钥。

0