Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hier erfahren Sie, wie Sie Apache Ranger-Richtlinien für Apache Kafka-Cluster mit dem Enterprise-Sicherheitspaket (ESP) konfigurieren. Es werden Verbindungen von ESP-Clustern mit einer Domäne hergestellt, sodass Benutzer sich mit Anmeldeinformationen für die Domäne authentifizieren können. In diesem Tutorial erstellen Sie zwei Ranger-Richtlinien, um den Zugriff auf die Themen sales und marketingspend einzuschränken.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen Sie Domänenbenutzer.
- Erstellen Sie Ranger-Richtlinien.
- Erstellen Sie Themen in einem Kafka-Cluster.
- Testen Sie Ranger-Richtlinien.
Voraussetzungen
Ein HDInsight-Kafka-Cluster mit dem Enterprise-Sicherheitspaket.
Herstellen einer Verbindung mit der Apache Ranger-Administratoroberfläche
Stellen Sie in einem Browser mit der URL
https://ClusterName.azurehdinsight.net/Ranger/eine Verbindung mit der Ranger-Administrator-Benutzeroberfläche (UI) her. Vergessen Sie nicht,ClusterNamein den Namen des Kafka-Clusters zu ändern. Die Ranger-Anmeldeinformationen sind nicht identisch mit Hadoop-Clusteranmeldeinformationen. Stellen Sie die Verbindung mit der Ranger-Administratoroberfläche in einem neuen InPrivate-Browserfenster her, um zu verhindern, dass der Browser zwischengespeicherte Hadoop-Anmeldeinformationen verwendet.Melden Sie sich mit Ihren Microsoft Entra-Administratoranmeldeinformationen an. Die Microsoft Entra-Administratoranmeldeinformationen sind nicht identisch mit HDInsight-Clusteranmeldeinformationen oder Linux-HDInsight-Knoten-SSH-Anmeldeinformationen.
Erstellen von Domänenbenutzern
Besuchen Sie Erstellen eines HDInsight-Clusters mit Enterprise-Sicherheitspaket, um zu erfahren, wie Sie die Domänenbenutzer sales_user und marketing_user erstellen. In einem Produktionsszenario kommen die Domänenbenutzer von Ihrem Microsoft Entra ID-Mandanten.
Erstellen einer Ranger-Richtlinie
Erstellen Sie eine Ranger-Richtlinie für sales_user und marketing_user.
Öffnen Sie die Ranger-Administratoroberfläche.
Wählen Sie unter Kafka den Wert <ClusterName>_kafka aus. Möglicherweise wird eine vorkonfigurierte Richtlinie aufgelistet.
Wählen Sie Neue Richtlinie hinzufügen aus, und geben Sie die folgenden Werte ein:
Einstellung Vorgeschlagener Wert Richtlinienname HDInsight Sales*-Richtlinie Thema sales* Benutzer auswählen sales_user1 Berechtigungen Veröffentlichen, Nutzen, Erstellen Die folgenden Platzhalter können im Themennamen enthalten sein:
*weist auf null oder mehr Vorkommen von Zeichen hin.?weist auf ein einzelnes Zeichen hin.
Warten Sie kurz, bis Ranger mit Microsoft Entra ID synchronisiert ist, wenn unter Benutzer auswählen nicht automatisch ein Domänenbenutzer eingetragen wird.
Wählen Sie Hinzufügen aus, um die Richtlinie zu speichern.
Wählen Sie Neue Richtlinie hinzufügen aus, und geben Sie die folgenden Werte ein:
Einstellung Vorgeschlagener Wert Richtlinienname HDInsight-Marketingrichtlinie Thema marketingspendBenutzer auswählen marketing_user1 Berechtigungen Veröffentlichen, Nutzen, Erstellen
Wählen Sie Hinzufügen aus, um die Richtlinie zu speichern.
Erstellen von Themen in einem Kafka-Cluster mit ESP
So erstellen Sie zwei Themen, salesevents und marketingspend:
Führen Sie folgenden Befehl aus, um eine SSH-Verbindung (Secure Shell) mit dem Cluster zu öffnen:
ssh DOMAINADMIN@CLUSTERNAME-ssh.azurehdinsight.netErsetzen Sie
DOMAINADMINdurch den Administratorbenutzer für Ihr Cluster, das Sie während der Clustererstellung konfiguriert haben. Ersetzen SieCLUSTERNAMEdurch den Namen Ihres Clusters. Geben Sie bei entsprechender Aufforderung das Kennwort für das Administratorbenutzerkonto ein. Weitere Informationen zum Verwenden vonSSHmit HDInsight finden Sie unter Verwenden von SSH mit HDInsight.Um den Clusternamen in einer Variablen zu speichern und ein JSON-Analysehilfsprogramm (
jq) zu installieren, verwenden Sie die folgenden Befehle. Geben Sie bei entsprechender Aufforderung den Namen des Kafka-Clusters ein.sudo apt -y install jq read -p 'Enter your Kafka cluster name:' CLUSTERNAMEUm die Kafka-Brokerhosts abzurufen, verwenden Sie die folgenden Befehle. Geben Sie bei entsprechender Aufforderung das Kennwort des Administratorkontos für den Cluster ein.
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`; \Bevor Sie fortfahren müssen Sie unter Umständen Ihre Entwicklungsumgebung einrichten, falls Sie dies nicht bereits getan haben. Sie benötigen Komponenten wie Java JDK, Apache Maven und einen SSH-Client mit Secure Copy (SCP). Weitere Informationen finden Sie unter Einrichtungsanweisungen.
Laden Sie die Apache Kafka-Producer/Consumer-Beispiele mit Domäneneinbindung herunter.
Führen Sie unter Tutorial: Verwenden der Apache Kafka Producer- und Consumer-APIs die Schritte 2 und 3 im Abschnitt Erstellen und Bereitstellen des Beispiels aus.
Hinweis
Verwenden Sie für dieses Tutorial
kafka-producer-consumer.jarim ProjektDomainJoined-Producer-Consumer. Verwenden Sie das Projekt nicht unter dem-ProjektProducer-Consumer, das sich für Szenarien eignet, die nicht in Domänen eingebunden sind.Führen Sie die folgenden Befehle aus:
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
Testen der Ranger-Richtlinien
Basierend auf den konfigurierten Ranger-Richtlinien kann sales_user das Thema salesevents produzieren/nutzen, jedoch nicht das Thema marketingspend. Umgekehrt kann marketing_user das Thema marketingspend produzieren/nutzen, jedoch nicht das Thema salesevents.
Stellen Sie eine neue SSH-Verbindung mit dem Cluster her. Führen Sie den folgenden Befehl aus, um sich als sales_user1 anzumelden:
ssh sales_user1@CLUSTERNAME-ssh.azurehdinsight.netVerwenden Sie die Broker-Namen aus dem vorherigen Abschnitt, um die folgenden Umgebungsvariable festzulegen:
export KAFKABROKERS=<brokerlist>:9092Beispiel:
export KAFKABROKERS=<brokername1>.contoso.com:9092,<brokername2>.contoso.com:9092Führen Sie Schritt 3 im Abschnitt Erstellen und Bereitstellen des Beispiels unter Tutorial: Verwenden der Apache Kafka Producer- und Consumer-APIs aus, um sicherzustellen, dass
kafka-producer-consumer.jarauch für sales_user verfügbar ist.Hinweis
Verwenden Sie für dieses Tutorial
kafka-producer-consumer.jarunter dem Projekt „DomainJoined-Producer-Consumer“. Verwenden Sie nicht das Projekt unter dem Projekt „Producer-Consumer“, das sich für Szenarien eignet, die nicht in Domänen eingebunden sind.Überprüfen Sie, ob sales_user1 für das Thema
saleseventsproduzieren kann. Führen Sie dazu den folgenden Befehl aus:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar producer salesevents $KAFKABROKERSFühren Sie den folgenden Befehl zum Nutzen des Themas
saleseventsaus:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar consumer salesevents $KAFKABROKERSStellen Sie sicher, dass Sie die Nachrichten lesen können.
Vergewissern Sie sich, dass sales_user1 nicht das Thema
marketingspendproduzieren kann, indem Sie im gleichen SSH-Fenster den folgenden Befehl ausführen:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar producer marketingspend $KAFKABROKERSEin Autorisierungsfehler tritt auf und kann ignoriert werden.
Beachten Sie, dass marketing_user1 das Thema
saleseventsnicht nutzen kann.Wiederholen Sie die vorherigen Schritte 1 bis 3, aber dieses Mal als marketing_user1.
Führen Sie den folgenden Befehl zum Nutzen des Themas
saleseventsaus:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar consumer salesevents $KAFKABROKERSVorherige Meldungen werden nicht angezeigt.
Zeigen Sie die Überwachungszugriffsereignisse in der Ranger-Benutzeroberfläche an.
Produzieren und Nutzen von Themen in Kafka mit ESP über die Konsole
Hinweis
Zum Erstellen von Themen können keine Konsolenbefehle verwendet werden. Stattdessen müssen Sie den im vorherigen Abschnitt gezeigten Java-Code verwenden. Weitere Informationen finden Sie unter Erstellen von Themen in einem Kafka-Cluster mit ESP.
Zum Produzieren und Nutzen von Themen in Kafka mit ESP über die Konsole gehen Sie folgendermaßen vor:
Verwenden Sie
kinitmit dem Benutzernamen. Geben Sie bei Aufforderung das Kennwort ein.kinit sales_user1Legen Sie Umgebungsvariablen fest:
export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf" export KAFKABROKERS=<brokerlist>:9092Produzieren Sie Meldungen für das Thema
salesevents:/usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --topic salesevents --broker-list $KAFKABROKERS --producer-property security.protocol=SASL_PLAINTEXTNutzen Sie Meldungen aus dem Thema
salesevents:/usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --topic salesevents --from-beginning --bootstrap-server $KAFKABROKERS --consumer-property security.protocol=SASL_PLAINTEXT
Produzieren und Nutzen von Themen für zeitintensive Sitzungen in ESP Kafka
Der Kerberos-Ticketcache verfügt über eine Ablaufbeschränkung. Für zeitintensive Sitzungen verwenden Sie besser die Schlüsseltabelle anstatt den Ticketcache manuell zu verlängern.
So verwenden Sie die Schlüsseltabelle in zeitintensiven Sitzungen ohne kinit:
Erstellen Sie eine neue Schlüsseltabelle für Ihren Domänenbenutzer:
ktutil addent -password -p <user@domain> -k 1 -e RC4-HMAC wkt /tmp/<user>.keytab qErstellen Sie
/home/sshuser/kafka_client_jaas.conf. Die Datei sollte folgende Zeilen enthalten:KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true keyTab="/tmp/<user>.keytab" useTicketCache=false serviceName="kafka" principal="<user@domain>"; };Ersetzen Sie
java.security.auth.login.configdurch/home/sshuser/kafka_client_jaas.conf, und erstellen oder nutzen Sie Themen mithilfe der Konsole oder 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
Bereinigen von Ressourcen
Wenn Sie diese Anwendung nicht mehr benötigen, löschen Sie das erstellte Kafka-Cluster, das Sie erstellt haben:
- Melden Sie sich beim Azure-Portal an.
- Geben Sie oben im Feld Suchen den Suchbegriff HDInsight ein.
- Wählen Sie unter Dienste die Option HDInsight-Cluster aus.
- Klicken Sie in der daraufhin angezeigten Liste mit den HDInsight-Clustern neben dem Cluster, den Sie für dieses Tutorial erstellt haben, auf die Auslassungspunkte ( ... ).
- Wählen Sie Löschen>Ja.
Problembehandlung
Wenn kafka-producer-consumer.jar nicht in einem in eine Domäne eingebundenen Cluster funktioniert, stellen Sie sicher, dass Sie kafka-producer-consumer.jar unter dem Projekt DomainJoined-Producer-Consumer verwenden. Verwenden Sie das Projekt nicht unter dem-Projekt Producer-Consumer, das sich für Szenarien eignet, die nicht in Domänen eingebunden sind.