在Linux上配置Kafka權限是確保系統安全性和數據完整性的重要步驟。以下是詳細的權限設置步驟:
創建專用的用戶和組:
sudo groupadd kafka
sudo useradd -g kafka kafka
配置Kafka服務啟動用戶:
/etc/systemd/system/kafka.service
或/lib/systemd/system/kafka.service
),設置User
和Group
為kafka
。[Service]
User=kafka
Group=kafka
設置Kafka安裝目錄及其子目錄的所有權:
sudo chown -R kafka:kafka /usr/local/kafka
sudo chown -R kafka:kafka /usr/local/kafka/kafka-logs
設置適當的目錄權限:
sudo chmod -R 750 /usr/local/kafka
sudo chmod -R 750 /usr/local/kafka/kafka-logs
配置文件權限:
server.properties
和其他配置文件的權限設置正確。sudo chmod 644 /usr/local/kafka/kafka_2.12-2.2.0/config/server.properties
編輯server.properties
文件:
listeners=SASL_PLAINTEXT://:9092
advertised.listeners=SASL_PLAINTEXT://your_host_ip:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
authorizer.class.name=org.apache.kafka.common.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=false
super.users=User:kafka
配置SASL認證:
kafka_server_jaas.conf
):KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="kafka"
password="kafka-secret";
}
export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/kafka_server_jaas.conf"
kafka-acls.sh
腳本創建和管理ACL。例如,為特定用戶授予對特定主題的讀寫權限:kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
--add --allow-principal User:username --operation Read --topic topic-name
--add --allow-principal User:username --operation Write --topic topic-name
sudo iptables -A INPUT -p tcp --dport 9092 -j ACCEPT
sudo service iptables save
生成SSL證書和密鑰:
sudo openssl req -newkey rsa:2048 -nodes -keyout kafka.server.key -x509 -days 365 -out kafka.server.crt
sudo keytool -import -alias kafka -file kafka.server.crt -keystore kafka.server.jks -storepass your_password
編輯server.properties
文件:
ssl.keystore.location=/path/to/kafka.server.jks
ssl.keystore.password=your_keystore_password
ssl.key.password=your_key_password
通過以上步驟,您可以在Linux上為Kafka設置適當的權限和配置,以確保系統的安全性和穩定性。