Oktatóanyag: Apache Kafka-szabályzatok konfigurálása a HDInsightban nagyvállalati biztonsági csomaggal
Megtudhatja, hogyan konfigurálhatja az Apache Ranger-szabályzatokat az Enterprise Security Package (ESP) Apache Kafka-fürtökhöz. Az ESP-fürtök egy tartományhoz csatlakoznak, lehetővé téve a felhasználók számára a tartományi hitelesítő adatokkal való hitelesítést. Ebben az oktatóanyagban két Ranger-házirendet hoz létre, amelyek korlátozzák a hozzáférést a sales
és marketingspend
témakörökhöz.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Tartományi felhasználók létrehozása.
- Ranger-szabályzatok létrehozása.
- Témakörök létrehozása Egy Kafka-fürtben.
- Ranger-szabályzatok tesztelése.
Előfeltétel
HdInsight Kafka-fürt enterprise security package csomaggal.
Csatlakozás az Apache Ranger felügyeleti felhasználói felületéhez
Egy böngészőből csatlakozzon a Ranger felügyeleti felhasználói felületéhez (UI) az URL-cím
https://ClusterName.azurehdinsight.net/Ranger/
használatával. Ne felejtse el átírni aClusterName
elemet a Kafka-fürtje nevére. A Ranger hitelesítő adatai nem azonosak a Hadoop-fürt hitelesítő adataival. Ha meg szeretné akadályozni, hogy a böngészők gyorsítótárazott Hadoop hitelesítő adatokat használjanak, egy új InPrivate-böngészőablakból csatlakozzon a Ranger rendszergazdai felhasználói felületéhez.Jelentkezzen be a Microsoft Entra rendszergazdai hitelesítő adataival. A Microsoft Entra rendszergazdai hitelesítő adatai nem azonosak a HDInsight-fürt hitelesítő adataival vagy a Linux HDInsight-csomópont SSH-hitelesítő adataival.
Tartományi felhasználók létrehozása
A sales_user és marketing_user tartomány felhasználóinak létrehozásáról a HDInsight-fürt létrehozása vállalati biztonsági csomaggal című témakörben olvashat. Éles környezetben a tartományi felhasználók a Microsoft Entra ID-bérlőjéből származnak.
Ranger-szabályzat létrehozása
Hozzon létre egy Ranger-házirendet a sales_user és marketing_user felhasználókhoz.
Nyissa meg a Ranger rendszergazdai felhasználói felületét.
A Kafka területen válassza a< ClusterName>_kafka lehetőséget. Előfordulhat, hogy egy előre konfigurált szabályzat szerepel a listában.
Válassza az Új szabályzat hozzáadása lehetőséget, és adja meg a következő értékeket:
Beállítás Ajánlott érték Házirend neve HDInsight értékesítési* szabályzat Téma sales* Felhasználó kiválasztása sales_user1 Engedélyek közzététel, felhasználás, létrehozás A témakör nevében a következő helyettesítő karakterek használhatók:
*
a karakterek nulla vagy több előfordulását jelzi.?
egy karaktert jelöl.
Várjon néhány percet, amíg a Ranger szinkronizálódik a Microsoft Entra-azonosítóval, ha egy tartományfelhasználó nem töltődik fel automatikusan a Felhasználó kiválasztása beállításhoz.
A szabályzat mentéséhez válassza a Hozzáadás lehetőséget.
Válassza az Új házirend hozzáadása lehetőséget, majd adja meg a következő értékeket:
Beállítás Ajánlott érték Házirend neve HDInsight marketingszabályzat Téma marketingspend
Felhasználó kiválasztása marketing_user1 Engedélyek közzététel, felhasználás, létrehozás A szabályzat mentéséhez válassza a Hozzáadás lehetőséget.
Témakörök létrehozása egy Kafka-fürtön az ESP-vel
Két témakör létrehozása és salesevents
marketingspend
:
A következő paranccsal nyisson meg egy Secure Shell-kapcsolatot (SSH) a fürthöz:
ssh DOMAINADMIN@CLUSTERNAME-ssh.azurehdinsight.net
Cserélje le
DOMAINADMIN
a fürt létrehozása során konfigurált rendszergazdai felhasználóra. Cserélje le aCLUSTERNAME
elemet a fürt nevére. Ha a rendszer kéri, adja meg a rendszergazdai felhasználói fiók jelszavát. AzSSH
HDInsighttal való használatával kapcsolatos további információkat az SSH a HDInsighttal való használatáról szóló cikkben találhat.Használja az alábbi parancsokat a fürtnév változóként való mentéséhez és egy JSON-elemző segédprogram, a
jq
telepítéséhez. Ha a rendszer kéri, adja meg a Kafka-fürt nevét.sudo apt -y install jq read -p 'Enter your Kafka cluster name:' CLUSTERNAME
A Kafka-közvetítő gazdagépeinek lekéréséhez használja az alábbi parancsokat. Ha a rendszer kéri, adja meg a fürt rendszergazdai fiókjának jelszavát.
export KAFKABROKERS=`curl -sS -u admin -G https://$CLUSTERNAME.azurehdinsight.net/api/v1/clusters/$CLUSTERNAME/services/KAFKA/components/KAFKA_BROKER | jq -r '["\(.host_components[].HostRoles.host_name):9092"] | join(",")' | cut -d',' -f1,2`; \
Mielőtt továbblépne, előfordulhat, hogy be kell állítania a fejlesztési környezetet, ha még nem tette meg. Olyan összetevőkre van szüksége, mint a Java JDK, az Apache Maven és egy biztonságos másolattal (SCP) rendelkező SSH-ügyfél. További információ: Telepítési utasítások.
Töltse le az Apache Kafka tartományhoz csatlakoztatott előállítói és fogyasztói példákat.
Kövesse a 2. és a 3 . lépést a Build alatt, és telepítse a példát az oktatóanyagban : Az Apache Kafka Producer és Consumer API-k használata.
Feljegyzés
Ehhez az oktatóanyaghoz használja
kafka-producer-consumer.jar
aDomainJoined-Producer-Consumer
projekt alatt. Ne használja a projekt alattProducer-Consumer
lévőt, amely nem tartományhoz csatlakoztatott forgatókönyvekhez tartozik.Futtassa az alábbi parancsot:
java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar create salesevents $KAFKABROKERS java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar create marketingspend $KAFKABROKERS
Ranger-házirendek tesztelése
A konfigurált Ranger-szabályzatok alapján sales_user létrehozhatja/felhasználhatja a témakört, a témakört marketingspend
salesevents
azonban nem. Ezzel szemben a marketing_user létrehozhatja/felhasználhatja a témakörtmarketingspend
, de a témakört salesevents
nem.
Nyisson meg egy új SSH-kapcsolatot a fürthöz. Az alábbi paranccsal jelentkezzen be mint sales_user1:
ssh sales_user1@CLUSTERNAME-ssh.azurehdinsight.net
Az előző szakasz közvetítőneveit használva állítsa be a következő környezeti változót:
export KAFKABROKERS=<brokerlist>:9092
Példa:
export KAFKABROKERS=<brokername1>.contoso.com:9092,<brokername2>.contoso.com:9092
Kövesse a 3. lépést a Build alatt, és telepítse a példát az oktatóanyagban: Az Apache Kafka Producer és Consumer API-k használatával győződjön meg arról, hogy
kafka-producer-consumer.jar
az sales_user is elérhető.Feljegyzés
Ehhez az oktatóanyaghoz használja
kafka-producer-consumer.jar
a "DomainJoined-Producer-Consumer" projektet. Ne használja a "Producer-Consumer" projekt alatt lévőt, amely nem tartományhoz csatlakoztatott forgatókönyvekhez készült.Az alábbi parancs futtatásával ellenőrizze, hogy sales_user1 képes-e a témakört
salesevents
létrehozni:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar producer salesevents $KAFKABROKERS
Futtassa a következő parancsot a témakörből
salesevents
való felhasználáshoz:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar consumer salesevents $KAFKABROKERS
Ellenőrizze, hogy elolvashatja-e az üzeneteket.
Ellenőrizze, hogy a sales_user1 nem tud-e létrehozni a témakörhöz
marketingspend
, ha az alábbi parancsot futtatja ugyanabban az SSH-ablakban:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar producer marketingspend $KAFKABROKERS
Engedélyezési hiba történik, amely figyelmen kívül hagyható.
Figyelje meg, hogy marketing_user1 nem lehet felhasználni a témakörből
salesevents
.Ismételje meg az előző 1–3. lépést, de ezúttal marketing_user1.
Futtassa a következő parancsot a témakörből
salesevents
való felhasználáshoz:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar consumer salesevents $KAFKABROKERS
A korábbi üzenetek nem láthatók.
A hozzáférési események naplózása a Ranger felhasználói felületről tekinthető meg.
Témakörök létrehozása és felhasználása az ESP Kafkában a konzol használatával
Feljegyzés
A konzolparancsok nem használhatók témakörök létrehozására. Ehelyett az előző szakaszban bemutatott Java-kódot kell használnia. További információ: Témakörök létrehozása egy Kafka-fürtben ESP-vel.
Témakörök létrehozása és felhasználása az ESP Kafkában a konzol használatával:
Használja
kinit
a felhasználó felhasználónevével. Amikor a rendszer kéri, adja meg a jelszót.kinit sales_user1
Környezeti változók beállítása:
export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf" export KAFKABROKERS=<brokerlist>:9092
Üzenetek létrehozása a témakörbe
salesevents
:/usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --topic salesevents --broker-list $KAFKABROKERS --producer-property security.protocol=SASL_PLAINTEXT
A témakörből
salesevents
származó üzenetek felhasználása:/usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --topic salesevents --from-beginning --bootstrap-server $KAFKABROKERS --consumer-property security.protocol=SASL_PLAINTEXT
Témakörök létrehozása és felhasználása egy hosszú ideig futó munkamenethez az ESP Kafkában
A Kerberos-jegygyorsítótár lejárati korlátozásokkal rendelkezik. Hosszú ideig futó munkamenet esetén használjon keytab-ot a jegygyorsítótár manuális megújítása helyett.
Kulcstartó használata hosszú ideig futó munkamenetben a következő nélkül kinit
:
Hozzon létre egy új keytab-et a tartományfelhasználó számára:
ktutil addent -password -p <user@domain> -k 1 -e RC4-HMAC wkt /tmp/<user>.keytab q
Hozza létre a következőt:
/home/sshuser/kafka_client_jaas.conf
. A következő sorokkal kell rendelkeznie:KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true keyTab="/tmp/<user>.keytab" useTicketCache=false serviceName="kafka" principal="<user@domain>"; };
/home/sshuser/kafka_client_jaas.conf
Cserélje lejava.security.auth.login.config
és hozza létre vagy használja fel a témakört a konzol vagy az API használatával:export KAFKABROKERS=<brokerlist>:9092 # console tool export KAFKA_OPTS="-Djava.security.auth.login.config=/home/sshuser/kafka_client_jaas.conf" /usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --topic salesevents --broker-list $KAFKABROKERS --producer-property security.protocol=SASL_PLAINTEXT /usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --topic salesevents --from-beginning --bootstrap-server $KAFKABROKERS --consumer-property security.protocol=SASL_PLAINTEXT # API java -jar -Djava.security.auth.login.config=/home/sshuser/kafka_client_jaas.conf kafka-producer-consumer.jar producer salesevents $KAFKABROKERS java -jar -Djava.security.auth.login.config=/home/sshuser/kafka_client_jaas.conf kafka-producer-consumer.jar consumer salesevents $KAFKABROKERS
Az erőforrások eltávolítása
Ha nem folytatja az alkalmazás használatát, törölje a létrehozott Kafka-fürtöt:
- Jelentkezzen be az Azure Portalra.
- A felső keresőmezőbe írja be a HDInsight kifejezést.
- A Szolgáltatások területen válassza ki a HDInsight-fürtöket.
- A megjelenő HDInsight-fürtök listájában válassza ki az oktatóanyaghoz létrehozott fürt melletti ... elemet.
- Válassza az Törlés>Igen lehetőséget.
Hibaelhárítás
Ha kafka-producer-consumer.jar
nem működik tartományhoz csatlakoztatott fürtön, győződjön meg arról, hogy a projekt alatt használjakafka-producer-consumer.jar
.DomainJoined-Producer-Consumer
Ne használja a projekt alatt Producer-Consumer
lévőt, amely nem tartományhoz csatlakoztatott forgatókönyvekhez tartozik.