Kurz: Konfigurace zásad Apache Kafka ve službě HDInsight s balíčkem zabezpečení podniku
Zjistěte, jak nakonfigurovat zásady Apache Ranger pro clustery Apache Kafka (Enterprise Security Package). ESP clustery jsou připojené k doméně, což uživatelům umožňuje ověření pomocí přihlašovacích údajů do domény. V tomto kurzu vytvoříte dvě zásady Ranger pro omezení přístupu k tématům sales
a marketingspend
.
V tomto kurzu se naučíte:
- Vytvořte uživatele domény.
- Vytvořte zásady Rangeru.
- Vytváření témat v clusteru Kafka
- Otestujte zásady Rangeru.
Požadavek
Cluster HDInsight Kafka s balíčkem zabezpečení podniku.
Připojení k uživatelskému rozhraní správce Apache Ranger
V prohlížeči se pomocí adresy URL
https://ClusterName.azurehdinsight.net/Ranger/
připojte k uživatelskému rozhraní Ranger Admin . Nezapomeňte změnitClusterName
na název vašeho clusteru Kafka. Přihlašovací údaje Rangeru nejsou stejné jako přihlašovací údaje clusteru Hadoop. Abyste zabránili prohlížeči v použití přihlašovacích údajů clusteru Hadoop uložených v mezipaměti, použijte pro připojení k uživatelskému rozhraní správce Ranger nové okno prohlížeče v režimu InPrivate.Přihlaste se pomocí svých přihlašovacích údajů správce Microsoft Entra. Přihlašovací údaje správce Microsoft Entra nejsou stejné jako přihlašovací údaje clusteru HDInsight nebo přihlašovací údaje SSH uzlu Linux HDInsight.
Vytvoření uživatelů domén
Informace o vytvoření sales_user a marketing_user uživatelů domény najdete v tématu Vytvoření clusteru HDInsight s balíčkem zabezpečení podniku. V produkčním scénáři uživatelé domény pocházejí z vašeho tenanta Microsoft Entra ID.
Vytvoření zásady Rangeru
Vytvoření zásady Ranger pro uživatele sales_user a marketing_user.
Otevřete Uživatelské rozhraní správce Ranger.
V části Kafka vyberte <Název clusteru>_kafka. Může být uvedena jedna předkonfigurovaná zásada.
Vyberte Přidat novou zásadu a zadejte následující hodnoty:
Nastavení Navrhovaná hodnota Název zásady Zásady prodeje HDInsight* Téma sales* Vybrat uživatele sales_user1 Oprávnění publish, consume, create (publikovat, využívat, vytvářet) Následující zástupné znaky mohou být součástí názvu tématu:
*
označuje nula nebo více výskytů znaků.?
označuje jeden znak.
Chvíli počkejte, než se Ranger synchronizuje s ID Microsoft Entra, pokud uživatel domény není automaticky vyplněný pro vybrat uživatele.
Výběrem možnosti Přidat zásadu uložte.
Vyberte Přidat novou zásadu a zadejte následující hodnoty:
Nastavení Navrhovaná hodnota Název zásady Marketingové zásady SLUŽBY HDInsight Téma marketingspend
Vybrat uživatele marketing_user1 Oprávnění publish, consume, create (publikovat, využívat, vytvářet) Výběrem možnosti Přidat zásadu uložte.
Vytvoření témat v clusteru Kafka pomocí ESP
Vytvoření dvou témat a salesevents
marketingspend
:
Pomocí následujícího příkazu otevřete připojení SSH (Secure Shell) ke clusteru:
ssh DOMAINADMIN@CLUSTERNAME-ssh.azurehdinsight.net
Nahraďte
DOMAINADMIN
uživatelem správce vašeho clusteru nakonfigurovaným během vytváření clusteru. NahraďteCLUSTERNAME
názvem svého clusteru. Pokud se zobrazí výzva, zadejte heslo pro uživatelský účet správce. Další informace o použitíSSH
se službou HDInsight najdete v tématu Použití SSH se službou HDInsight.Pomocí následujících příkazů uložte název clusteru do proměnné a nainstalujte nástroj pro parsování JSON
jq
. Po zobrazení výzvy zadejte název clusteru Kafka.sudo apt -y install jq read -p 'Enter your Kafka cluster name:' CLUSTERNAME
K získání hostitelů zprostředkovatele Kafka použijte následující příkazy. Po zobrazení výzvy zadejte heslo účtu správce clusteru.
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`; \
Než budete pokračovat, možná budete muset nastavit vývojové prostředí, pokud jste to ještě neudělali. Potřebujete komponenty, jako je Java JDK, Apache Maven a klient SSH se zabezpečeným kopírováním (SCP). Další informace najdete v pokynech k nastavení.
Stáhněte si příklady pro producenta a konzumenta Apache Kafka připojené k doméně.
Postupujte podle kroků 2 a 3 v části Sestavení a nasaďte příklad v kurzu: Použití rozhraní Apache Kafka Producer and Consumer API.
Poznámka:
Pro účely tohoto kurzu použijte
kafka-producer-consumer.jar
pod projektemDomainJoined-Producer-Consumer
. Nepoužívejte ten vProducer-Consumer
rámci projektu, který je určený pro scénáře, které nejsou připojené k doméně.Spusťte následující příkazy:
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
Testování zásad Ranger
Na základě nakonfigurovaných zásad Ranger může sales_user vytvořit nebo použít témasalesevents
, ale ne téma marketingspend
. Naopak marketing_user může vytvořit nebo použít témamarketingspend
, ale ne téma salesevents
.
Otevřete nové připojení SSH ke clusteru. Pomocí následujícího příkazu se přihlaste jako uživatel sales_user1:
ssh sales_user1@CLUSTERNAME-ssh.azurehdinsight.net
Pomocí názvů zprostředkovatelů z předchozí části nastavte následující proměnnou prostředí:
export KAFKABROKERS=<brokerlist>:9092
Příklad:
export KAFKABROKERS=<brokername1>.contoso.com:9092,<brokername2>.contoso.com:9092
Postupujte podle kroku 3 v části Sestavení a nasaďte příklad v kurzu: Pomocí rozhraní Apache Kafka Producer and Consumer API ověřte, že
kafka-producer-consumer.jar
je také k dispozici pro sales_user.Poznámka:
Pro účely tohoto kurzu použijte
kafka-producer-consumer.jar
v rámci projektu DomainJoined-Producer-Consumer. Nepoužívejte ten v rámci projektu Producer-Consumer, který je určený pro scénáře, které nejsou připojené k doméně.Spuštěním následujícího příkazu ověřte, že sales_user1 může vytvořit téma
salesevents
:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar producer salesevents $KAFKABROKERS
Spuštěním následujícího příkazu z tématu
salesevents
:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar consumer salesevents $KAFKABROKERS
Ověřte, že můžete číst zprávy.
Spuštěním následujícího příkazu ve stejném okně SSH ověřte, že sales_user1 nemůže vytvořit do tématu
marketingspend
:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar producer marketingspend $KAFKABROKERS
Dojde k chybě autorizace, kterou můžete ignorovat.
Všimněte si, že marketing_user1 z tématu
salesevents
nemůže využívat .Opakujte předchozí kroky 1 až 3, ale tentokrát jako marketing_user1.
Spuštěním následujícího příkazu z tématu
salesevents
:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar consumer salesevents $KAFKABROKERS
Předchozí zprávy nejsou zobrazeny.
Zobrazte události přístupu k auditu v uživatelském rozhraní Ranger.
Vytváření a využívání témat v ESP Kafka pomocí konzoly
Poznámka:
K vytváření témat nemůžete použít příkazy konzoly. Místo toho musíte použít kód Jazyka Java předvázaný v předchozí části. Další informace najdete v tématu Vytváření témat v clusteru Kafka s ESP.
K vytváření a využívání témat v ESP Kafka pomocí konzoly:
Použije
kinit
se s uživatelským jménem. Po zobrazení výzvy zadejte heslo.kinit sales_user1
Nastavení proměnných prostředí:
export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf" export KAFKABROKERS=<brokerlist>:9092
Vygenerujte zprávy do tématu
salesevents
:/usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --topic salesevents --broker-list $KAFKABROKERS --producer-property security.protocol=SASL_PLAINTEXT
Využívání zpráv z tématu
salesevents
:/usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --topic salesevents --from-beginning --bootstrap-server $KAFKABROKERS --consumer-property security.protocol=SASL_PLAINTEXT
Vytváření a využívání témat pro dlouho běžící relaci v ESP Kafka
Mezipaměť lístků Kerberos má omezení vypršení platnosti. V případě dlouhotrvající relace místo ručního obnovení mezipaměti lístků použijte klávesovou zkratku.
Použití klávesové zkratky v dlouhotrvající relaci bez kinit
:
Vytvořte novou klávesovou zkratku pro uživatele domény:
ktutil addent -password -p <user@domain> -k 1 -e RC4-HMAC wkt /tmp/<user>.keytab q
Vytvořte
/home/sshuser/kafka_client_jaas.conf
. Měl by mít následující řádky: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
Nahraďtejava.security.auth.login.config
a vytvořte nebo využijte téma pomocí konzoly nebo rozhraní API: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
Vyčištění prostředků
Pokud nebudete tuto aplikaci dál používat, odstraňte cluster Kafka, který jste vytvořili:
- Přihlaste se k portálu Azure.
- Do vyhledávacího pole v horní části zadejte HDInsight.
- V části Služby vyberte clustery HDInsight.
- V seznamu clusterů HDInsight, které se zobrazí, vyberte ... vedle clusteru, který jste vytvořili pro účely tohoto kurzu.
- Vyberte Odstranit>Ano.
Řešení problému
Pokud kafka-producer-consumer.jar
v clusteru připojeném k doméně nefunguje, ujistěte se, že používáte kafka-producer-consumer.jar
v DomainJoined-Producer-Consumer
rámci projektu. Nepoužívejte ten v Producer-Consumer
rámci projektu, který je určený pro scénáře, které nejsou připojené k doméně.