在Ubuntu上設置Kafka的安全策略,通常涉及配置SSL/TLS加密、SASL認證以及訪問控制列表(ACL)。以下是詳細的步驟指南:
首先,確保你已經在Ubuntu上安裝了Kafka。你可以從Apache Kafka官方網站下載并按照安裝指南進行安裝。
SSL/TLS用于加密Kafka集群中的數據傳輸。
你可以使用OpenSSL生成自簽名證書和密鑰。
# 生成CA證書
openssl req -new -x509 -days 365 -keyout ca-key.pem -out ca-cert.pem -subj "/CN=kafka-ca"
# 生成服務器證書和密鑰
openssl req -newkey rsa:2048 -days 365 -nodes -keyout server-key.pem -out server-cert.pem -subj "/CN=kafka"
# 生成客戶端證書和密鑰
openssl req -newkey rsa:2048 -days 365 -nodes -keyout client-key.pem -out client-cert.pem -subj "/CN=kafka-client"
編輯server.properties
文件,添加以下配置:
listeners=SSL://:9093
ssl.keystore.location=/path/to/server-keystore.jks
ssl.keystore.password=your_keystore_password
ssl.key.password=your_key_password
ssl.truststore.location=/path/to/server-truststore.jks
ssl.truststore.password=your_truststore_password
ssl.enabled.protocols=TLSv1.2
ssl.protocol=TLSv1.2
ssl.cipher.suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384
將生成的證書和密鑰導入到keystore和truststore中:
# 創建keystore
keytool -importkeystore -srckeystore server-cert.pem -srcstoretype PEM -destkeystore server-keystore.jks -deststoretype JKS
# 創建truststore
keytool -importkeystore -srckeystore ca-cert.pem -srcstoretype PEM -destkeystore server-truststore.jks -deststoretype JKS
編輯客戶端的client.properties
文件,添加以下配置:
security.protocol=SSL
ssl.truststore.location=/path/to/client-truststore.jks
ssl.truststore.password=your_truststore_password
ssl.keystore.location=/path/to/client-keystore.jks
ssl.keystore.password=your_keystore_password
ssl.key.password=your_key_password
SASL用于身份驗證。
編輯server.properties
文件,添加以下配置:
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=false
super.users=User:admin
創建一個JAAS配置文件(例如kafka_server_jaas.conf
),內容如下:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret";
};
使用JAAS配置文件啟動Kafka服務器:
bin/kafka-server-start.sh config/server.properties --override java.security.auth.login.config=/path/to/kafka_server_jaas.conf
ACL用于控制對Kafka資源的訪問。
使用Kafka的kafka-acls.sh
腳本創建ACL:
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
--add --allow-principal User:admin --operation Read --topic test-topic
確保所有配置都正確無誤后,啟動Kafka服務器和客戶端,并驗證SSL/TLS和SASL認證是否正常工作。
通過以上步驟,你可以在Ubuntu上為Kafka設置安全策略,確保數據傳輸的安全性和身份驗證的可靠性。