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

  1. V prohlížeči se připojte k Ranger Správa uživatelské rozhraní pomocí adresy URL https://ClusterName.azurehdinsight.net/Ranger/. Nezapomeňte změnit ClusterName 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.

  2. 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.

    Screenshot that shows the HDInsight Apache Ranger Admin UI.

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.

  1. Otevřete Uživatelské rozhraní správce Ranger.

  2. V části Kafka vyberte <Název clusteru>_kafka. Může být uvedena jedna předkonfigurovaná zásada.

  3. Vyberte Přidat novou zásadu a zadejte následující hodnoty:

    Nastavení Navrhovaná hodnota
    Název zásady hdi sales* policy
    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.

    Screenshot that shows the Apache Ranger Admin UI Create Policy1.

    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.

  4. Výběrem možnosti Přidat zásadu uložte.

  5. Vyberte Přidat novou zásadu a zadejte následující hodnoty:

    Nastavení Navrhovaná hodnota
    Název zásady hdi marketing policy
    Téma marketingspend
    Vybrat uživatele marketing_user1
    Oprávnění publish, consume, create (publikovat, využívat, vytvářet)

    Screenshot that shows the Apache Ranger Admin UI Create Policy2.

  6. 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 saleseventsmarketingspend:

  1. 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ďte CLUSTERNAME 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.

  2. 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
    
  3. 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í.

  4. Stáhněte si příklady pro producenta a konzumenta Apache Kafka připojené k doméně.

  5. 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 projektem DomainJoined-Producer-Consumer . Nepoužívejte ten v Producer-Consumer rámci projektu, který je určený pro scénáře, které nejsou připojené k doméně.

  6. 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.

  1. 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
    
  2. 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

  3. 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ě.

  4. 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
    
  5. 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.

  6. 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.

  7. Všimněte si, že marketing_user1 z tématu saleseventsnemůž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.

  8. Zobrazte události přístupu k auditu v uživatelském rozhraní Ranger.

    Screenshot that shows the Ranger UI policy audit access events.

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:

  1. Použije kinit se s uživatelským jménem. Po zobrazení výzvy zadejte heslo.

    kinit sales_user1
    
  2. 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
    
  3. 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
    
  4. 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:

  1. 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
    
    
  2. 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>";
    };
    
  3. /home/sshuser/kafka_client_jaas.conf Nahraďte java.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:

  1. Přihlaste se k portálu Azure.
  2. Do vyhledávacího pole v horní části zadejte HDInsight.
  3. V části Služby vyberte clustery HDInsight.
  4. V seznamu clusterů HDInsight, které se zobrazí, vyberte ... vedle clusteru, který jste vytvořili pro účely tohoto kurzu.
  5. 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ě.

Další kroky