Teknologian jakaminen

SSL-sertifioinnin opetusohjelma kafkalle ja eläintarhanhoitajalle

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Kirjoittaja Lewei Community (forum.lwops.cn) Xu Yuan
Nykyaikaisia ​​hajautettuja järjestelmiä rakennettaessa tiedonsiirron turvallisuuden varmistaminen on ratkaisevan tärkeää. Apache Kafka ja Zookeeper ovat suosittuja hajautettuja viestijonoja ja koordinointipalveluita, jotka tarjoavat SSL (Secure Sockets Layer) -todennusmekanismin parantamaan tiedonsiirron turvallisuutta.
Tässä artikkelissa esitellään yksityiskohtaisesti koko prosessi SSL-varmenteen luomisesta palvelimen ja asiakkaan määrittämiseen sen varmistamiseksi, että tiedot ovat täysin suojattuja lähetyksen aikana.

1. Määritä Kafka-tilin salasana:
1. Ensin sinun on muokattava kafka-määritystiedostoa: vim /asop/kafka/kafka_2.11-2.1.0/config/server.properties

broker.id=0
listeners=SASL_PLAINTEXT://:9092
advertisingd.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
lukumäärä.osioita=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
tranzakció.state.log.replication.factor=1
tranzakció.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

#Käytetty todennusprotokolla
security.inter.broker.protocol=SASL_PLAINTEXT
#SASL-mekanismi
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
#Luokalla täydellinen todennus
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
#Jos ACL-määritystä (access control list) ei löydy, mikä tahansa toiminto on sallittu.
allow.everyone.if.no.acl.found=false
#Sinun on otettava käyttöön pääjärjestelmänvalvojan asetus ja asetettava vierailijakäyttäjä pääjärjestelmänvalvojaksi.
super.users=Käyttäjä:vierailija

2. Toiseksi luo palvelimelle kirjautumisen vahvistustiedosto. Voit nimetä tiedoston haluamallasi tavalla, esimerkiksi vim /asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf seuraa

KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule vaaditaan
käyttäjätunnus = "vierailija"
salasana="qaz@123"
user_visitor="qaz@123";
};

3. Muokkaa sitten kafka-asennushakemistoa vim /asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh ja lisää muuttujat tiedoston yläosaan.

vienti KAFKA_OPTS=" -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf"
Lisää kuvan kuvaus tähän
4. Luo seuraavaksi käyttäjälle ja tuottajalle kirjautumisen vahvistustiedosto. Voit nimetä tiedoston haluamallasi tavalla, kuten kafka_client_jaas.conf. Tiedoston sisältö on seuraava (jos kyseessä on ohjelman käyttö, esim. springboot-käyttö , sitä ei tarvitse määrittää)
vim /asop/kafka/kafka_2.11-2.1.0/config/kafka_client_jaas.conf

KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule vaaditaan
käyttäjätunnus = "vierailija"
salasana="qaz@123";
};

5. Lisää seuraavat konfiguraatiot kenttään kuluttaja.properties ja tuottaja.properties:
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.mechanism=PLAIN

6. Muokkaa kafka-asennushakemistoja bin/kafka-console-producer.sh ja bin/kafka-console-consumer.sh ja lisää muuttujat tiedostojen yläosaan.
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

vienti KAFKA_OPTS=" -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_client_jaas.conf"Lisää kuvan kuvaus tähän
7. Käynnistä zookeeper ja kafka. Tässä vaiheessa palvelinpuolen kafka-käyttäjän sisäänkirjautumisen määritys on valmis (sulje ensin kafka ja sitten zookeeper).

Sulje palvelu 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

Aloita palvelu 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

Sammuta palvelueläintarhanhoitaja-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh stop /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
Käynnistä eläintarhanhoitaja-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh aloitus /asop/zk/zookeeper-3.4.13/conf/zoo.cfg

8. Luo ja tarkastele teemoja

/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- property sasl.mechanism=PLAIN
Lisää kuvan kuvaus tähän
vastaanottaa viestejä

/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=PLAINLisää kuvan kuvaus tähän

2. Määritä ssal-tilin salasana zk:lle ja kafkalle:

  1. Zookeeper-määritys SASL
    1.1 Luo uusi zoo_jaas.conf-tiedosto
    Zoo_jaas.conf-tiedoston nimelle ja polulle ei ole erityisiä vaatimuksia. Se sijoitetaan yleensä hakemistoon ${ZOOKEEPER_HOME}/conf vim /asop/zk/zookeeper-3.4.13/conf/zoo_jaas.conf.

Palvelin {
org.apache.kafka.common.security.plain.PlainLoginModule vaaditaan
käyttäjätunnus = "admin"
salasana="admin@12"
user_kafka="kafka@123";
};

    Server.username、Server.password为 Zookeeper 内部通信的用户名和密码,因此保证每个 zk 节点该属性一致即可
    Server.user_xxx 中 xxx 为自定义用户名,用于 zkClient 连接所使用的用户名和密码,即为 kafka 创建的用户名
  • 1
  • 2

1.2 Määritä /asop/zk/zookeeper-3.4.13/conf/zoo.cfg-tiedosto
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requestClientAuthScheme=sasl
jaasLoginRenew=3600000
zookeeper.sasl.client=true

Zookeeper.sasl.client on asetettu arvoon tosi, jotta asiakkaan todennus voidaan ottaa käyttöön. Muussa tapauksessa zoo_jaas.conf-tiedostossa määritetty käyttäjänimi ei toimi.

1.3 Tuo riippuvuuspaketteja
Koska käytetty luvanvarmistusluokka on: org.apache.kafka.common.security.plain.PlainLoginModule, tarvitaan kafka-aiheiset jar-paketit. Luo uusi kansio zk_sasl_lib seuraavasti: Kopioi seuraavat jar-paketit kafka/lib-hakemistosta hakemistoon. zookeeper lib ja äskettäin luotu zk_sasl_lib-hakemisto:

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 Muokkaa tiedostoa zkEnv.sh/asop/zk/zookeeper-3.4.13/bin/zkEnv.sh
Ennen muutosta: Jos ei, lisää se suoraan

export SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP} m $SERVER_JVMFLAGS"

Muokkauksen jälkeen:

jar:lle tiedostossa /asop/zk/zookeeper-3.4.13/zk_sasl_lib/*.jar;
tehdä
CLASSPATH=“ purkki : purkki:jar:CLASSPATH”
tehty

export SERVER_JVMFLAGS=" -Djava.security.auth.login.config=/asop/zk/zookeeper-3.4.13/conf/zoo_jaas.conf"

Käynnistä vain Zookeeper-palvelu uudelleen

Sammuta palvelueläintarhanhoitaja-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh stop /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
Käynnistä eläintarhanhoitaja-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh aloitus /asop/zk/zookeeper-3.4.13/conf/zoo.cfg

  1. Kakfa määritä SASL
    2.1 Luo uusi kafka_server_jaas.conf-tiedosto
    Tiedostolle kafka_server_jaas.conf ei ole vaatimuksia. Se sijoitetaan yleensä hakemistoon ${KAFKA_HOME}/config/asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf.

KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule vaaditaan
käyttäjätunnus = "vierailija"
salasana="qaz@123"
user_visitor="qaz@123";
};
Asiakas{
org.apache.kafka.common.security.plain.PlainLoginModule vaaditaan
käyttäjätunnus = "kafka"
salasana="kafka@123";
};

    KafkaServer.username、KafkaServer.password 为 broker 内部通信的用户名密码,同上
  • 1

KafkaServer.user_xxx jossa xxx:n on oltava yhdenmukainen KafkaServer.username:ssä määritetyn käyttäjänimen kanssa, ja myös salasanan on oltava johdonmukainen
KafkaServer.user_producer ja KafkaServer.user_consumer valmistautuvat myöhempään ACL:ään, jotta kuluttajat ja tuottajat käyttävät eri tilejä ja kuluttajatilit voivat vain kuluttaa dataa ja tuottajatilit vain tuottaa dataa.
Client.username ja Client.password täyttävät Zookeeperiin rekisteröidyn tilin salasanan, jota käytetään välittäjän ja eläintarhanhoitajan väliseen viestintään (jos zookeeper ei ole määritetty SASL:n kanssa, se voidaan jättää huomiotta. Jos zookeeper.sasl.client on epätosi, se voi myös huomioimatta. Loki on seuraava)

[2021-06-29 17:14:30,204] VAROITUS SASL-määritys epäonnistui: javax.security.auth.login.LoginException: Määritetyssä JAAS-määritystiedostossa: '/Users/wjun/env, ei löytynyt JAAS-määritysosiota 'Client' /kafka/config/kafka_server_jaas.conf'. Jatkaa yhteyttä Zookeeper-palvelimeen ilman SASL-todennusta, jos Zookeeper-palvelin sallii sen. (org.apache.zookeeper.ClientCnxn)

2.2 Muokkaa server.properties-tiedostoa
broker.id=0
listeners=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
lukumäärä.osioita=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
tranzakció.state.log.replication.factor=1
tranzakció.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

#Käytetty todennusprotokolla
security.inter.broker.protocol=SASL_PLAINTEXT
#SASL-mekanismi
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
#Luokalla täydellinen todennus
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
#Jos ACL-määritystä (access control list) ei löydy, mikä tahansa toiminto on sallittu.
allow.everyone.if.no.acl.found=false
#Sinun on otettava käyttöön pääjärjestelmänvalvojan asetus ja asetettava vierailijakäyttäjä pääjärjestelmänvalvojaksi.
super.users=Käyttäjä:vierailija

Missä localhost on vaihdettava IP-osoitteeksi

super.users määrittää pääkäyttäjän, johon myöhemmät ACL-määritykset eivät vaikuta.

2.3 Muokkaa käynnistysskriptiä
Muokkaa kafka-server-start.sh-tiedostoa lataamaan se tiedostoon kafka_server_jaas.conf/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh

ennen korjaamista:

jos [ “x$KAFKA_HEAP_OPTS” = “x” ]; sitten
vienti KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi

Muokkauksen jälkeen:
(Lisää tämä rivi ensin ensimmäiselle riville. Jos sinulla on se jo, sinun ei tarvitse lisätä sitä.) export KAFKA_OPTS=" -Djava.security.auth.login.config=/asop/kafka/kafka_2.11- 2.1.0/config/kafka_server_jaas.conf "
jos [ “x$KAFKA_HEAP_OPTS” = “x” ]; sitten
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf"
fi

Aseta ACL-säännöt eläintarhanhoitajalle
/asop/zk/zookeeper-3.4.13/bin/zkCli.sh #Syötä zk:n komentorivitila

addauth digest admin:admin@12 #Vaihda kirjautumiskäyttäjää (pääkäyttäjä on zk-määritystiedostossa/asop/zk/zookeeper-3.4.13/conf/zoo_jaas.conf)

setAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa #(Aseta IP-osoite ja käyttäjätilin salasana, johon voi kirjautua. admin on yllä olevassa zk-määritystiedostossa määritetty järjestelmänvalvoja ja Kafka-käyttäjä on /asop /kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf-tiedostossa (asiakassovelluksessa) määritetty kafka-yhteyden zk-käyttäjä.

addauth digest kafka:kafka@123 #Vaihda kafka-käyttäjään ja aseta acl uudelleen
setAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa

Huomautus: Jos haluat lisätä IP-osoitteen sallittujen listalle tai käyttäjän on lisättävä se alkuperäisellä pohjalla, muuten se korvataan.
setAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa,auth:admin:admin@12:cdrwa,ip:1.1.1.1

Sinun on palautettava käyttöoikeudet, suorita ilman acl-asetusta
setAcl / world:anyone:cdrwa

Käynnistä vain kafka-palvelu uudelleen

Sulje palvelu 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

Aloita palvelu 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

Tässä vaiheessa kafkan ja zookeeperin SSL-todennusmääritys on valmis. Jos haluat lisää käyttö- ja huoltotaitoja, kiinnitä huomiota Lewei-yhteisöön.