τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Συγγραφέας Lewei Community (forum.lwops.cn) Xu Yuan
Κατά την κατασκευή σύγχρονων κατανεμημένων συστημάτων, η διασφάλιση της ασφάλειας της μετάδοσης δεδομένων είναι ζωτικής σημασίας. Οι Apache Kafka και Zookeeper, ως δημοφιλείς κατανεμημένες ουρές μηνυμάτων και υπηρεσίες συντονισμού, παρέχουν μηχανισμό ελέγχου ταυτότητας SSL (Secure Sockets Layer) για την ενίσχυση της ασφάλειας κατά τη μετάδοση δεδομένων.
Αυτό το άρθρο θα εισαγάγει λεπτομερώς ολόκληρη τη διαδικασία από τη δημιουργία πιστοποιητικού SSL έως τη διαμόρφωση του διακομιστή και του προγράμματος-πελάτη για να διασφαλιστεί ότι τα δεδομένα προστατεύονται πλήρως κατά τη μετάδοση.
1. Διαμορφώστε τον κωδικό πρόσβασης λογαριασμού Kafka:
1. Πρώτα, πρέπει να τροποποιήσετε το αρχείο διαμόρφωσης kafka: vim /asop/kafka/kafka_2.11-2.1.0/config/server.properties
broker.id=0
ακροατές=SASL_PLAINTEXT://:9092
advertised.listeners=SASL_PLAINTEXT://10.176.31.137:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/asop/kafka/logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
Χρησιμοποιήθηκε #πρωτόκολλο ελέγχου ταυτότητας
security.inter.broker.protocol=SASL_PLAINTEXT
#SASLμηχανισμός
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
#Class για να ολοκληρωθεί ο έλεγχος ταυτότητας
autorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
#Εάν δεν βρεθεί διαμόρφωση ACL (λίστα ελέγχου πρόσβασης), επιτρέπεται οποιαδήποτε λειτουργία.
allow.everyone.if.no.acl.found=false
#Πρέπει να ενεργοποιήσετε τη ρύθμιση super administrator και να ορίσετε τον χρήστη επισκέπτη ως super administrator.
super.users=Χρήστης:επισκέπτης
2. Δεύτερον, δημιουργήστε ένα αρχείο επαλήθευσης σύνδεσης για τον διακομιστή Μπορείτε να ονομάσετε το αρχείο σύμφωνα με τις προτιμήσεις σας, όπως vim /asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf ακολουθεί
KafkaServer {
Απαιτείται μονάδα org.apache.kafka.common.security.plain.PlainLogin
όνομα χρήστη = "επισκέπτης"
κωδικός πρόσβασης = "qaz@123"
user_visitor=“qaz@123”;
};
3. Στη συνέχεια, τροποποιήστε τον κατάλογο εγκατάστασης kafka vim /asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh και προσθέστε μεταβλητές στο επάνω μέρος του αρχείου
εξαγωγή KAFKA_OPTS=" -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf"
4. Στη συνέχεια, δημιουργήστε ένα αρχείο επαλήθευσης σύνδεσης για τον καταναλωτή και τον παραγωγό Μπορείτε να ονομάσετε το αρχείο σύμφωνα με τις προτιμήσεις σας, όπως kafka_client_jaas.conf , δεν χρειάζεται να ρυθμιστεί)
vim /asop/kafka/kafka_2.11-2.1.0/config/kafka_client_jaas.conf
KafkaClient {
Απαιτείται μονάδα org.apache.kafka.common.security.plain.PlainLogin
όνομα χρήστη = "επισκέπτης"
κωδικός=“qaz@123”;
};
5. Προσθέστε τις ακόλουθες ρυθμίσεις παραμέτρων στα καταναλωτή.ιδιότητες και παραγωγός.ιδιότητες αντίστοιχα:
vim /asop/kafka/kafka_2.11-2.1.0/config/consumer.properties
vim /asop/kafka/kafka_2.11-2.1.0/config/producer.properties
security.protocol=SASL_PLAINTEXT
sasl.μηχανισμός=ΠΕΔΟΣ
6. Τροποποιήστε τους καταλόγους εγκατάστασης kafka bin/kafka-console-producer.sh και bin/kafka-console-consumer.sh και προσθέστε μεταβλητές στο επάνω μέρος των αρχείων.
vim /asop/kafka/kafka_2.11-2.1.0/bin/kafka-console-producer.sh
vim /asop/kafka/kafka_2.11-2.1.0/bin/kafka-console-consumer.sh
εξαγωγή KAFKA_OPTS=" -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_client_jaas.conf"
7. Ξεκινήστε το zookeeper και το kafka αντίστοιχα Σε αυτό το σημείο, ολοκληρώνεται η διαμόρφωση επαλήθευσης σύνδεσης χρήστη από την πλευρά του διακομιστή (πρώτα κλείστε το kafka και μετά κλείστε το zookeeper).
Κλείστε την υπηρεσία kafka
/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-stop.sh -daemon /asop/kafka/kafka_2.11-2.1.0/config/server.properties
Ξεκινήστε το σέρβις kafka
#/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh -daemon /asop/kafka/kafka_2.11-2.1.0/config/server.properties
Κλείστε το service zookeeper-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh stop /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
Ξεκινήστε το σέρβις zookeeper-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh start /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
8. Δημιουργήστε και προβάλετε θέματα
/asop/kafka/kafka_2.11-2.1.0/bin/kafka-console-producer.sh --broker-list 10.176.31.137:9092 --topic cmdb --producer-property security.protocol=SASL_PLAINTEXT --producer- ιδιότητα sasl.μηχανισμός=ΠΕΔΟΣ
λήψη μηνυμάτων
/asop/kafka/kafka_2.11-2.1.0/bin/kafka-console-consumer.sh --bootstrap-server 10.176.31.137:9092 --topic cmdb --from-beginning --consumer-property security.protocol= SASL_PLAINTEXT --consumer-property sasl.mechanism=PLAIN
2. Διαμορφώστε τον κωδικό πρόσβασης λογαριασμού ssal για zk και kafka:
Διακομιστής {
Απαιτείται μονάδα org.apache.kafka.common.security.plain.PlainLogin
όνομα χρήστη = "διαχειριστής"
κωδικός πρόσβασης = "admin@12"
user_kafka=“kafka@123”;
};
Server.username、Server.password为 Zookeeper 内部通信的用户名和密码,因此保证每个 zk 节点该属性一致即可
Server.user_xxx 中 xxx 为自定义用户名,用于 zkClient 连接所使用的用户名和密码,即为 kafka 创建的用户名
1.2 Διαμορφώστε το αρχείο /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
zookeeper.sasl.client=true
Το Zookeeper.sasl.client έχει οριστεί σε true για να ενεργοποιήσει τον έλεγχο ταυτότητας πελάτη Διαφορετικά, το όνομα χρήστη που έχει ρυθμιστεί στο zoo_jaas.conf δεν θα λειτουργεί.
1.3 Εισαγωγή πακέτων εξάρτησης
Επειδή η κλάση επαλήθευσης αδειών που χρησιμοποιείται είναι: org.apache.kafka.common.security.plain.PlainLoginModule, απαιτούνται πακέτα jar που σχετίζονται με το kafka Δημιουργήστε έναν νέο φάκελο zk_sasl_lib ως εξής: Αντιγράψτε τα ακόλουθα πακέτα jar από τον κατάλογο kafka/lib στον κατάλογο. zookeeper lib και ο πρόσφατα δημιουργημένος κατάλογος zk_sasl_lib:
kafka-clients-2.4.1.jar
lz4-java-1.6.0.jar
slf4j-api-1.7.28.jar
slf4j-log4j12-1.7.28.jar
snappy-java-1.1.7.3.jar
mkdir /asop/zk/zookeeper-3.4.13/zk_sasl_lib
cp /asop/kafka/kafka_2.11-2.1.0/libs/kafka-clients-2.1.0.jar /asop/zk/zookeeper-3.4.13/lib/
cp /asop/kafka/kafka_2.11-2.1.0/libs/lz4-java-1.5.0.jar /asop/zk/zookeeper-3.4.13/lib/
cp /asop/kafka/kafka_2.11-2.1.0/libs/slf4j-api-1.7.25.jar /asop/zk/zookeeper-3.4.13/lib/
cp /asop/kafka/kafka_2.11-2.1.0/libs/slf4j-log4j12-1.7.25.jar /asop/zk/zookeeper-3.4.13/lib/
cp /asop/kafka/kafka_2.11-2.1.0/libs/snappy-java-1.1.7.2.jar /asop/zk/zookeeper-3.4.13/lib/
cp /asop/kafka/kafka_2.11-2.1.0/libs/kafka-clients-2.1.0.jar /asop/zk/zookeeper-3.4.13/zk_sasl_lib
cp /asop/kafka/kafka_2.11-2.1.0/libs/lz4-java-1.5.0.jar /asop/zk/zookeeper-3.4.13/zk_sasl_lib
cp /asop/kafka/kafka_2.11-2.1.0/libs/slf4j-api-1.7.25.jar /asop/zk/zookeeper-3.4.13/zk_sasl_lib
cp /asop/kafka/kafka_2.11-2.1.0/libs/slf4j-log4j12-1.7.25.jar /asop/zk/zookeeper-3.4.13/zk_sasl_lib
cp /asop/kafka/kafka_2.11-2.1.0/libs/snappy-java-1.1.7.2.jar /asop/zk/zookeeper-3.4.13/zk_sasl_lib
chmod 755 -R /asop/zk/zookeeper-3.4.13/zk_sasl_lib/
chmod 755 -R /asop/zk/zookeeper-3.4.13/zk_sasl_lib/
1.4 Τροποποίηση του αρχείου zkEnv.sh/asop/zk/zookeeper-3.4.13/bin/zkEnv.sh
Πριν από την τροποποίηση: Εάν όχι, προσθέστε το απευθείας
εξαγωγή SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS"
Μετά την τροποποίηση:
για βάζο στο /asop/zk/zookeeper-3.4.13/zk_sasl_lib/*.jar;
κάνω
CLASSPATH =" βάζο : βάζο:jar:ΤΑΞΗ»
Έγινε
εξαγωγή SERVER_JVMFLAGS=" -Djava.security.auth.login.config=/asop/zk/zookeeper-3.4.13/conf/zoo_jaas.conf "
Απλώς επανεκκινήστε την υπηρεσία Zookeeper
Κλείστε το service zookeeper-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh stop /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
Ξεκινήστε το σέρβις zookeeper-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh start /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
KafkaServer {
Απαιτείται μονάδα org.apache.kafka.common.security.plain.PlainLogin
όνομα χρήστη = "επισκέπτης"
κωδικός πρόσβασης = "qaz@123"
user_visitor=“qaz@123”;
};
Πελάτης{
Απαιτείται μονάδα org.apache.kafka.common.security.plain.PlainLogin
όνομα χρήστη = "kafka"
κωδικός=“kafka@123”;
};
KafkaServer.username、KafkaServer.password 为 broker 内部通信的用户名密码,同上
KafkaServer.user_xxx όπου το xxx πρέπει να είναι συνεπές με το όνομα χρήστη που έχει ρυθμιστεί στο KafkaServer.username και ο κωδικός πρόσβασης πρέπει επίσης να είναι συνεπής
Το KafkaServer.user_producer και το KafkaServer.user_consumer προετοιμάζονται για το επόμενο ACL, έτσι ώστε οι καταναλωτές και οι παραγωγοί να χρησιμοποιούν διαφορετικούς λογαριασμούς και οι λογαριασμοί καταναλωτών να μπορούν να καταναλώνουν μόνο δεδομένα και οι λογαριασμοί παραγωγού να παράγουν μόνο δεδομένα.
Client.username και Client.password συμπληρώστε τον κωδικό πρόσβασης του λογαριασμού που είναι καταχωρημένος στο Zookeeper, ο οποίος χρησιμοποιείται για την επικοινωνία μεταξύ μεσίτη και zookeeper (εάν το zookeeper δεν έχει ρυθμιστεί με SASL, μπορεί να αγνοηθεί. Εάν το zookeeper.sasl.client είναι ψευδές, μπορεί επίσης να αγνοηθεί. Απλώς συμπεριλάβετε το αρχείο καταγραφής.
[2021-06-29 17:14:30,204] ΠΡΟΕΙΔΟΠΟΙΗΣΗ Η διαμόρφωση SASL απέτυχε: javax.security.auth.login.LoginException: Δεν βρέθηκε ενότητα διαμόρφωσης JAAS με το όνομα "Πελάτης" σε καθορισμένο αρχείο διαμόρφωσης JAAS: "/Users/wjun /kafka/config/kafka_server_jaas.conf'. Θα συνεχιστεί η σύνδεση με τον διακομιστή Zookeeper χωρίς έλεγχο ταυτότητας SASL, εάν ο διακομιστής Zookeeper το επιτρέπει. (org.apache.zookeeper.ClientCnxn)
2.2 Τροποποιήστε το αρχείο server.properties
broker.id=0
ακροατές=SASL_PLAINTEXT://:9092
advertised.listeners=SASL_PLAINTEXT://192.168.157.198:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/asop/kafka/logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=127.0.0.1:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
Χρησιμοποιήθηκε #πρωτόκολλο ελέγχου ταυτότητας
security.inter.broker.protocol=SASL_PLAINTEXT
#SASLμηχανισμός
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
#Class για να ολοκληρωθεί ο έλεγχος ταυτότητας
autorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
#Εάν δεν βρεθεί διαμόρφωση ACL (λίστα ελέγχου πρόσβασης), επιτρέπεται οποιαδήποτε λειτουργία.
allow.everyone.if.no.acl.found=false
#Πρέπει να ενεργοποιήσετε τη ρύθμιση super administrator και να ορίσετε τον χρήστη επισκέπτη ως super administrator.
super.users=Χρήστης:επισκέπτης
Όπου το localhost πρέπει να αλλάξει σε διεύθυνση IP
Το super.users διαμορφώνει τον υπερχρήστη, ο οποίος δεν επηρεάζεται από τις επόμενες διαμορφώσεις ACL.
2.3 Τροποποιήστε το σενάριο εκκίνησης
Τροποποιήστε το αρχείο kafka-server-start.sh για να το φορτώσετε στο αρχείο kafka_server_jaas.conf/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh
πριν τη διόρθωση:
εάν [ "x$KAFKA_HEAP_OPTS" = "x" ]; έπειτα
εξαγωγή KAFKA_HEAP_OPTS=“-Xmx1G -Xms1G”
fi
Μετά την τροποποίηση:
(Προσθέστε αυτήν τη γραμμή στην πρώτη γραμμή. Εάν την έχετε ήδη, δεν χρειάζεται να την προσθέσετε.) export KAFKA_OPTS=" -Djava.security.auth.login.config=/asop/kafka/kafka_2.11- 2.1.0/config/kafka_server_jaas.conf "
εάν [ "x$KAFKA_HEAP_OPTS" = "x" ]; έπειτα
εξαγωγή KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf"
fi
Ορίστε κανόνες ACL για τον φύλακα του ζωολογικού κήπου
/asop/zk/zookeeper-3.4.13/bin/zkCli.sh #Εισαγάγετε τη λειτουργία γραμμής εντολών του zk
addauth digest admin:admin@12 #Switch χρήστη σύνδεσης (ο σούπερ διαχειριστής βρίσκεται στο αρχείο διαμόρφωσης zk/asop/zk/zookeeper-3.4.13/conf/zoo_jaas.conf)
setAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa #(Ορίστε την IP και τον κωδικό πρόσβασης λογαριασμού χρήστη που μπορείτε να συνδεθείτε. Ο διαχειριστής είναι ο διαχειριστής που ορίζεται στο αρχείο διαμόρφωσης zk παραπάνω και ο χρήστης Kafka είναι /asop Ο χρήστης zk σύνδεσης kafka που ορίζεται στο αρχείο /kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf (κάτω από τον πελάτη))
addauth digest kafka:kafka@123 #Switch to kafka user και ρυθμίστε ξανά acl
setAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa
Σημείωση: Εάν θέλετε να προσθέσετε μια IP λίστα επιτρεπόμενων ή ο χρήστης πρέπει να την προσθέσει στην αρχική βάση, διαφορετικά θα αντικατασταθεί.
setAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa,auth:admin:admin@12:cdrwa,ip:1.1.1.1
Χρειάζεται επαναφορά αδειών, εκτέλεση χωρίς ρύθμιση acl
setAcl / world: anyone:cdrwa
Απλώς επανεκκινήστε την υπηρεσία kafka
Κλείστε την υπηρεσία kafka
#/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-stop.sh -daemon /asop/kafka/kafka_2.11-2.1.0/config/server.properties
Ξεκινήστε το σέρβις kafka
#/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh -daemon /asop/kafka/kafka_2.11-2.1.0/config/server.properties
Σε αυτό το σημείο, ολοκληρώνεται η ρύθμιση παραμέτρων ελέγχου ταυτότητας SSL του kafka και του zookeeper. Για περισσότερες δεξιότητες λειτουργίας και συντήρησης, δώστε προσοχή στην κοινότητα Lewei Για περισσότερες ερωτήσεις σχετικά με τη λειτουργία και τη συντήρηση, αφήστε ένα μήνυμα.