informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Penulis Komunitas Lewei (forum.lwops.cn) Xu Yuan
Saat membangun sistem terdistribusi modern, memastikan keamanan transmisi data sangatlah penting. Apache Kafka dan Zookeeper, sebagai layanan koordinasi dan antrian pesan terdistribusi yang populer, menyediakan mekanisme otentikasi SSL (Secure Sockets Layer) untuk meningkatkan keamanan selama transmisi data.
Artikel ini akan memperkenalkan secara rinci seluruh proses mulai dari pembuatan sertifikat SSL hingga konfigurasi server dan klien untuk memastikan bahwa data terlindungi sepenuhnya selama transmisi.
1. Konfigurasikan kata sandi akun Kafka:
1. Pertama, Anda perlu memodifikasi file konfigurasi kafka: vim /asop/kafka/kafka_2.11-2.1.0/config/server.properties
broker.id=0
pendengar=SASL_PLAINTEXT://:9092
diiklankan.pendengar=SASL_PLAINTEXT://10.176.31.137:9092
num.jaringan.utas=3
jumlah.io.threads=8
soket.kirim.buffer.byte=102400
soket.terima.buffer.byte=102400
soket.permintaan.maks.byte=104857600
log.dirs=/asop/kafka/logs
jumlah partisi = 1
jumlah.utas.pemulihan.per.data.dir=1
offset.topik.replikasi.faktor=1
transaksi.state.log.replikasi.faktor=1
transaksi.state.log.min.isr=1
log.retensi.jam=168
log.segmen.byte=1073741824
log.retensi.periksa.interval.ms=300000
penjaga kebun binatang.sambungkan=host lokal:2181
penjaga kebun binatang.waktu koneksi.habis.ms=6000
grup.awal.penyeimbangan.penundaan.ms=0
#Protokol otentikasi digunakan
keamanan.inter.broker.protokol=SASL_PLAINTEXT
#SASLmekanisme
sasl.enabled.mekanisme=BIASA
sasl.mekanisme.inter.broker.protokol=PLAIN
#Kelas untuk menyelesaikan otentikasi
pengotorisasi.kelas.nama=kafka.keamanan.auth.SimpleAclAuthorizer
#Jika tidak ada konfigurasi ACL (daftar kontrol akses) yang ditemukan, operasi apa pun diperbolehkan.
izinkan.semua.orang.jika.tidak.acl.ditemukan=salah
#Anda perlu mengaktifkan pengaturan administrator super dan mengatur pengguna pengunjung sebagai administrator super.
super.users=Pengguna:pengunjung
2. Kedua, buat file verifikasi login untuk server. Anda dapat memberi nama file sesuai keinginan Anda, seperti vim /asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf berikut
Server Kafka {
org.apache.kafka.common.security.plain.PlainLoginModule diperlukan
nama pengguna=“pengunjung”
kata sandi=“qaz@123”
pengunjung_pengguna=“qaz@123”;
};
3. Kemudian modifikasi direktori instalasi kafka vim /asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh dan tambahkan variabel di bagian atas file
ekspor KAFKA_OPTS=" -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf"
4. Selanjutnya buat file verifikasi login untuk konsumen dan produsen. Anda dapat memberi nama file sesuai keinginan Anda, seperti kafka_client_jaas.conf. Isi filenya adalah sebagai berikut (jika akses program, misalnya akses springboot , itu tidak perlu dikonfigurasi)
vim /asop/kafka/kafka_2.11-2.1.0/config/kafka_client_jaas.conf
Klien Kafka {
org.apache.kafka.common.security.plain.PlainLoginModule diperlukan
nama pengguna=“pengunjung”
kata sandi="qaz@123";
};
5. Tambahkan konfigurasi berikut ke masing-masing properti konsumen dan properti produsen:
vim /asop/kafka/kafka_2.11-2.1.0/config/consumer.properties
vim /asop/kafka/kafka_2.11-2.1.0/config/producer.properties
protokol keamanan=SASL_PLAINTEXT
sasl.mekanisme=POLOS
6. Ubah direktori instalasi kafka bin/kafka-console-producer.sh dan bin/kafka-console-consumer.sh, dan tambahkan variabel di bagian atas file.
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
ekspor KAFKA_OPTS=" -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_client_jaas.conf"
7. Mulai zookeeper dan kafka masing-masing. Pada titik ini, konfigurasi verifikasi login pengguna kafka sisi server selesai (pertama tutup kafka lalu tutup zookeeper)
Matikan layanan 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
Mulai layanan 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
Matikan layanan zookeeper-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh hentikan /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
Mulai layanan zookeeper-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh mulai /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
8. Membuat dan melihat tema
/asop/kafka/kafka_2.11-2.1.0/bin/kafka-console-producer.sh --broker-list 10.176.31.137:9092 --topik cmdb --properti-produsen keamanan.protokol=SASL_PLAINTEXT --properti-produsen sasl.mekanisme=PLAIN
menerima pesan
/asop/kafka/kafka_2.11-2.1.0/bin/kafka-console-consumer.sh --bootstrap-server 10.176.31.137:9092 --topik cmdb --dari-awal --properti-konsumen keamanan.protokol=SASL_PLAINTEXT --properti-konsumen sasl.mekanisme=PLAIN
2. Konfigurasikan kata sandi akun ssal untuk zk dan kafka:
Pelayan {
org.apache.kafka.common.security.plain.PlainLoginModule diperlukan
nama pengguna=“admin”
kata sandi=“admin@12”
pengguna_kafka=“kafka@123”;
};
Server.username、Server.password为 Zookeeper 内部通信的用户名和密码,因此保证每个 zk 节点该属性一致即可
Server.user_xxx 中 xxx 为自定义用户名,用于 zkClient 连接所使用的用户名和密码,即为 kafka 创建的用户名
1.2 Konfigurasikan file /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
penyedia otentikasi.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
memerlukanClientAuthScheme=sasl
jaasLoginPerbarui=3600000
penjaga kebun binatang.sasl.client=benar
Zookeeper.sasl.client disetel ke true untuk mengaktifkan otentikasi klien. Jika tidak, nama pengguna yang dikonfigurasi di zoo_jaas.conf tidak akan berfungsi. Klien masih dapat terhubung tanpa file jaas, tetapi dengan PERINGATAN.
1.3 Impor paket ketergantungan
Karena kelas verifikasi izin yang digunakan adalah: org.apache.kafka.common.security.plain.PlainLoginModule, diperlukan paket jar terkait kafka. Buat folder baru zk_sasl_lib sebagai berikut: Salin paket jar berikut dari direktori kafka/lib ke lib zookeeper dan direktori zk_sasl_lib yang baru dibuat:
kafka-klien-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/penjaga kebun binatang-3.4.13/zk_sasl_lib
cp /asop/kafka/kafka_2.11-2.1.0/libs/klien-kafka-2.1.0.jar /asop/zk/keepkeeper-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/keepkeeper-3.4.13/zk_sasl_lib/
chmod 755 -R /asop/zk/keepkeeper-3.4.13/zk_sasl_lib/
1.4 Ubah file zkEnv.sh/asop/zk/zookeeper-3.4.13/bin/zkEnv.sh
Sebelum modifikasi: Jika tidak, langsung tambahkan
ekspor SERVER_JVMFLAGS=“-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS”
Setelah modifikasi:
untuk jar di /asop/zk/zookeeper-3.4.13/zk_sasl_lib/*.jar;
Mengerjakan
KELAS=“ toples : toples:yaR:“JALAN KELAS”
Selesai
ekspor SERVER_JVMFLAGS=" -Djava.security.auth.login.config=/asop/zk/zookeeper-3.4.13/conf/zoo_jaas.conf "
Mulai ulang saja layanan Zookeeper
Matikan layanan zookeeper-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh hentikan /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
Mulai layanan zookeeper-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh mulai /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
Server Kafka {
org.apache.kafka.common.security.plain.PlainLoginModule diperlukan
nama pengguna=“pengunjung”
kata sandi=“qaz@123”
pengunjung_pengguna=“qaz@123”;
};
Klien{
org.apache.kafka.common.security.plain.PlainLoginModule diperlukan
nama pengguna=“kafka”
kata sandi="kafka@123";
};
KafkaServer.username、KafkaServer.password 为 broker 内部通信的用户名密码,同上
KafkaServer.user_xxx di mana xxx harus konsisten dengan nama pengguna yang dikonfigurasi di KafkaServer.username, dan kata sandinya juga harus konsisten
KafkaServer.user_producer dan KafkaServer.user_consumer mempersiapkan ACL berikutnya, sehingga konsumen dan produsen menggunakan akun yang berbeda, dan akun konsumen hanya dapat menggunakan data, dan akun produsen hanya dapat menghasilkan data.
Client.username dan Client.password isi password akun yang terdaftar di Zookeeper, yang digunakan untuk komunikasi antara broker dan zookeeper (jika zookeeper tidak dikonfigurasi dengan SASL, dapat diabaikan. Jika zookeeper.sasl.client salah, dapat juga diabaikan. Masukkan saja.
[2021-06-29 17:14:30,204] PERINGATAN Konfigurasi SASL gagal: javax.security.auth.login.LoginException: Tidak ada bagian konfigurasi JAAS bernama 'Client' yang ditemukan dalam berkas konfigurasi JAAS yang ditentukan: '/Users/wjun/env/kafka/config/kafka_server_jaas.conf'. Akan melanjutkan koneksi ke server Zookeeper tanpa autentikasi SASL, jika server Zookeeper mengizinkannya. (org.apache.zookeeper.ClientCnxn)
2.2 Ubah file server.properties
broker.id=0
pendengar=SASL_PLAINTEXT://:9092
diiklankan.pendengar=SASL_PLAINTEXT://192.168.157.198:9092
num.jaringan.utas=3
jumlah.io.threads=8
soket.kirim.buffer.byte=102400
soket.terima.buffer.byte=102400
soket.permintaan.maks.byte=104857600
log.dirs=/asop/kafka/logs
jumlah partisi = 1
jumlah.utas.pemulihan.per.data.dir=1
offset.topik.replikasi.faktor=1
transaksi.state.log.replikasi.faktor=1
transaksi.state.log.min.isr=1
log.retensi.jam=168
log.segmen.byte=1073741824
log.retensi.periksa.interval.ms=300000
penjaga kebun binatang.sambungkan=127.0.0.1:2181
penjaga kebun binatang.waktu koneksi.habis.ms=6000
grup.awal.penyeimbangan.penundaan.ms=0
#Protokol otentikasi digunakan
keamanan.inter.broker.protokol=SASL_PLAINTEXT
#SASLmekanisme
sasl.enabled.mekanisme=BIASA
sasl.mekanisme.inter.broker.protokol=PLAIN
#Kelas untuk menyelesaikan otentikasi
pengotorisasi.kelas.nama=kafka.keamanan.auth.SimpleAclAuthorizer
#Jika tidak ada konfigurasi ACL (daftar kontrol akses) yang ditemukan, operasi apa pun diperbolehkan.
izinkan.semua.orang.jika.tidak.acl.ditemukan=salah
#Anda perlu mengaktifkan pengaturan administrator super dan mengatur pengguna pengunjung sebagai administrator super.
super.users=Pengguna:pengunjung
Dimana localhost perlu diubah menjadi alamat IP
super.users mengonfigurasi pengguna super, yang tidak terpengaruh oleh konfigurasi ACL berikutnya.
2.3 Ubah skrip startup
Ubah file kafka-server-start.sh untuk memuatnya ke dalam file kafka_server_jaas.conf/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh
sebelum memperbaiki:
jika [ “x$KAFKA_HEAP_OPTS” = “x” ]; maka
ekspor KAFKA_HEAP_OPTS=“-Xmx1G -Xms1G”
baiklah
Setelah modifikasi:
(Tambahkan baris ini ke baris pertama terlebih dahulu. Jika sudah punya, tidak perlu menambahkannya.) 2.1.0/config/kafka_server_jaas.conf "
jika [ “x$KAFKA_HEAP_OPTS” = “x” ]; maka
ekspor KAFKA_HEAP_OPTS=“-Xmx1G -Xms1G -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf”
baiklah
Tetapkan aturan ACL untuk penjaga kebun binatang
/asop/zk/zookeeper-3.4.13/bin/zkCli.sh #Masuk ke mode baris perintah zk
addauth mencerna admin:admin@12 #Ganti pengguna login (administrator super ada di file konfigurasi zk/asop/zk/zookeeper-3.4.13/conf/zoo_jaas.conf)
setAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa #(Atur IP dan kata sandi akun pengguna yang dapat login. admin adalah administrator yang ditentukan dalam file konfigurasi zk di atas, dan pengguna Kafka adalah /asop Pengguna zk koneksi kafka yang ditentukan dalam file /kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf (di bawah Klien))
addauth mencerna kafka:kafka@123 #Beralih ke pengguna kafka dan setel acl lagi
setAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa
Catatan: Jika Anda ingin menambahkan IP daftar putih atau pengguna harus menambahkannya berdasarkan aslinya, jika tidak maka akan ditimpa.
setAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa,auth:admin:admin@12:cdrwa,ip:1.1.1.1
Perlu memulihkan izin, jalankan tanpa mengatur acl
setAcl / dunia:siapa saja:cdrwa
Mulai ulang saja layanan kafka
Matikan layanan 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
Mulai layanan 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
Pada titik ini, konfigurasi otentikasi SSL kafka dan zookeeper selesai. Untuk keterampilan pengoperasian dan pemeliharaan lebih lanjut, harap perhatikan komunitas Lewei. Untuk pertanyaan pengoperasian dan pemeliharaan lebih lanjut, silakan tinggalkan pesan.