Samouczek: konfigurowanie zasad platformy Apache Kafka w usłudze HDInsight przy użyciu pakietu Enterprise Security
Dowiedz się, jak skonfigurować zasady platformy Apache Ranger na potrzeby klastrów Apache Kafka pakietów Enterprise Security Package (ESP). Klastry ESP są łączone z domeną, co pozwala użytkownikom na uwierzytelnianie przy użyciu poświadczeń domeny. Korzystając z tego artykułu, utworzysz dwie zasady platformy Ranger, aby ograniczyć dostęp do tematów sales
i marketingspend
.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Tworzenie użytkowników domeny.
- Tworzenie zasad platformy Ranger.
- Tworzenie tematów w klastrze platformy Kafka.
- Testowanie zasad platformy Ranger.
Warunek wstępny
Klaster platformy Kafka usługi HDInsight z pakietem Enterprise Security.
Łączenie z interfejsem użytkownika administratora platformy Apache Ranger
W przeglądarce połącz się z interfejsem użytkownika (UI) administratora platformy Ranger przy użyciu adresu URL
https://ClusterName.azurehdinsight.net/Ranger/
. Pamiętaj, aby zmienić wartośćClusterName
na nazwę klastra platformy Kafka. Poświadczenia platformy Ranger nie są takie same jak poświadczenia klastra Hadoop. Aby zapobiec używaniu w przeglądarce buforowanych poświadczeń usługi Hadoop, należy połączyć się z interfejsem użytkownika administratora platformy Ranger w nowym oknie przeglądarki InPrivate.Zaloguj się przy użyciu poświadczeń administratora firmy Microsoft Entra. Poświadczenia administratora usługi Microsoft Entra nie są takie same jak poświadczenia klastra usługi HDInsight ani poświadczenia protokołu SSH węzła usługi HDInsight w systemie Linux.
Tworzenie użytkowników domeny
Aby dowiedzieć się, jak utworzyć sales_user i marketing_user użytkowników domeny, zobacz Tworzenie klastra usługi HDInsight przy użyciu pakietu Enterprise Security. W scenariuszu produkcyjnym użytkownicy domeny pochodzą z dzierżawy identyfikatora Entra firmy Microsoft.
Tworzenie zasad platformy Ranger
Utwórz zasady platformy Ranger dla użytkowników sales_user i marketing_user.
Otwórz interfejs użytkownika administratora platformy Ranger.
W obszarze Kafka wybierz pozycję <ClusterName>_kafka. Na liście może znajdować się jedna wstępnie skonfigurowana zasada.
Wybierz pozycję Dodaj nowe zasady i wprowadź następujące wartości:
Ustawienie Sugerowana wartość Policy Name (Nazwa zasad) Zasady sprzedaży w usłudze HDInsight* Temat sales* Select User (Wybierz użytkownika) sales_user1 Uprawnienia publish, consume, create W nazwie tematu można uwzględnić następujące symbole wieloznaczne:
*
oznacza zero lub więcej wystąpień znaków.?
oznacza pojedynczy znak.
Poczekaj chwilę na zsynchronizowanie platformy Ranger z identyfikatorem Entra firmy Microsoft, jeśli użytkownik domeny nie zostanie automatycznie wypełniony dla pozycji Wybierz użytkownika.
Wybierz pozycję Dodaj , aby zapisać zasady.
Wybierz pozycję Dodaj nowe zasady , a następnie wprowadź następujące wartości:
Ustawienie Sugerowana wartość Policy Name (Nazwa zasad) Zasady marketingu usługi HDInsight Temat marketingspend
Select User (Wybierz użytkownika) marketing_user1 Uprawnienia publish, consume, create Wybierz pozycję Dodaj , aby zapisać zasady.
Tworzenie tematów w klastrze platformy Kafka przy użyciu pakietu ESP
Aby utworzyć dwa tematy — salesevents
i marketingspend
:
Użyj następującego polecenia, aby otworzyć połączenie protokołu Secure Shell (SSH) z klastrem:
ssh DOMAINADMIN@CLUSTERNAME-ssh.azurehdinsight.net
Zastąp
DOMAINADMIN
element użytkownikiem administracyjnym klastra skonfigurowanym podczas tworzenia klastra. Zastąp ciągCLUSTERNAME
nazwą klastra. Jeśli zostanie wyświetlony monit, wprowadź hasło konta użytkownika będącego administratorem. Aby uzyskać więcej informacji na temat używania poleceniaSSH
w usłudze HDInsight, zobacz Korzystanie z protokołu SSH w usłudze HDInsight.Użyj następujących poleceń, aby zapisać nazwę klastra w zmiennej i zainstalować narzędzie do analizy JSON,
jq
. Po wyświetleniu monitu wprowadź nazwę klastra platformy Kafka.sudo apt -y install jq read -p 'Enter your Kafka cluster name:' CLUSTERNAME
Użyj następujących poleceń, aby uzyskać hosty brokera platformy Kafka. Po wyświetleniu monitu wprowadź hasło konta administratora klastra.
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`; \
Przed kontynuowaniem może być konieczne skonfigurowanie środowiska deweloperskiego, jeśli jeszcze tego nie zrobiono. Potrzebne są składniki, takie jak zestaw Java JDK, Apache Maven i klient SSH z funkcją Secure Copy (SCP). Aby uzyskać więcej informacji, zobacz Instrukcje dotyczące instalacji.
Pobierz przykłady odbiorców i producentów przyłączonych do domeny na platformie Apache Kafka.
Wykonaj kroki 2 i 3 w obszarze Kompilowanie i wdrażanie przykładu w artykule Samouczek: korzystanie z interfejsów API producentów i konsumentów platformy Apache Kafka.
Uwaga
Na potrzeby tego samouczka użyj
kafka-producer-consumer.jar
polecenia wDomainJoined-Producer-Consumer
ramach projektu. Nie używaj tego elementu w projekcieProducer-Consumer
, który jest przeznaczony dla scenariuszy nieprzyłączonych do domeny.Uruchom następujące polecenia:
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
Testowanie zasad platformy Ranger
Na podstawie skonfigurowanych zasad platformy Ranger sales_user może tworzyć/wykorzystywać tematsalesevents
, ale nie temat marketingspend
. Z drugiej strony marketing_user może tworzyć/wykorzystywać tematmarketingspend
, ale nie temat salesevents
.
Otwórz nowe połączenie SSH z klastrem. Użyj następującego polecenia, aby zalogować się jako użytkownik sales_user1:
ssh sales_user1@CLUSTERNAME-ssh.azurehdinsight.net
Użyj nazw brokera z poprzedniej sekcji, aby ustawić następujące zmienne środowiskowe:
export KAFKABROKERS=<brokerlist>:9092
Przykład:
export KAFKABROKERS=<brokername1>.contoso.com:9092,<brokername2>.contoso.com:9092
Wykonaj krok 3 w obszarze Kompilowanie i wdrażanie przykładu w artykule Samouczek: użyj interfejsów API producentów i konsumentów platformy Apache Kafka, aby upewnić się, że
kafka-producer-consumer.jar
jest on również dostępny do sales_user.Uwaga
Na potrzeby tego samouczka użyj
kafka-producer-consumer.jar
projektu "DomainJoined-Producer-Consumer". Nie używaj go w projekcie "Producent-konsument", który jest przeznaczony dla scenariuszy nieprzyłączonych do domeny.Sprawdź, czy sales_user1 może utworzyć temat
salesevents
, uruchamiając następujące polecenie:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar producer salesevents $KAFKABROKERS
Uruchom następujące polecenie, aby skorzystać z tematu
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
Sprawdź, czy możesz odczytać komunikaty.
Sprawdź, czy sales_user1 nie może utworzyć do tematu
marketingspend
, uruchamiając następujące polecenie w tym samym oknie SSH:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar producer marketingspend $KAFKABROKERS
Wystąpi błąd autoryzacji, który można zignorować.
Zwróć uwagę, że marketing_user1 nie może korzystać z tematu
salesevents
.Powtórz powyższe kroki od 1 do 3, ale tym razem jako marketing_user1.
Uruchom następujące polecenie, aby skorzystać z tematu
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
Poprzednie komunikaty nie będą widoczne.
Wyświetl zdarzenia dostępu inspekcji z poziomu interfejsu użytkownika platformy Ranger.
Tworzenie i używanie tematów na platformie ESP Kafka przy użyciu konsoli programu
Uwaga
Nie można używać poleceń konsoli do tworzenia tematów. Zamiast tego należy użyć kodu Java przedstawionego w poprzedniej sekcji. Aby uzyskać więcej informacji, zobacz Create topics in a Kafka cluster with ESP (Tworzenie tematów w klastrze kafka przy użyciu esp).
Aby utworzyć tematy i korzystać z nich na platformie KAFka ze strony ze stanem rejestracji przy użyciu konsoli:
Użyj z
kinit
nazwą użytkownika. Wprowadź hasło po wyświetleniu monitu.kinit sales_user1
Ustaw zmienne środowiskowe:
export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf" export KAFKABROKERS=<brokerlist>:9092
Tworzenie komunikatów w temacie
salesevents
:/usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --topic salesevents --broker-list $KAFKABROKERS --producer-property security.protocol=SASL_PLAINTEXT
Korzystanie z komunikatów z tematu
salesevents
:/usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --topic salesevents --from-beginning --bootstrap-server $KAFKABROKERS --consumer-property security.protocol=SASL_PLAINTEXT
Tworzenie tematów i korzystanie z nich na potrzeby długotrwałej sesji na platformie Kafka esp
Pamięć podręczna biletów Kerberos ma ograniczenie wygaśnięcia. W przypadku długotrwałej sesji użyj tabki kluczy zamiast ręcznego odnawiania pamięci podręcznej biletów.
Aby użyć tab klucza w długotrwałej sesji bez kinit
polecenia :
Utwórz nową kartę klucza dla użytkownika domeny:
ktutil addent -password -p <user@domain> -k 1 -e RC4-HMAC wkt /tmp/<user>.keytab q
Utwórz plik
/home/sshuser/kafka_client_jaas.conf
. Powinny mieć następujące wiersze:KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true keyTab="/tmp/<user>.keytab" useTicketCache=false serviceName="kafka" principal="<user@domain>"; };
Zastąp
java.security.auth.login.config
ciąg ciągiem/home/sshuser/kafka_client_jaas.conf
i wygeneruj lub użyj tematu przy użyciu konsoli lub interfejsu 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
Czyszczenie zasobów
Jeśli nie zamierzasz nadal korzystać z tej aplikacji, usuń utworzony klaster Kafka:
- Zaloguj się w witrynie Azure Portal.
- W polu Wyszukiwania u góry wprowadź wartość HDInsight.
- W obszarze Usługi wybierz pozycję Klastry usługi HDInsight.
- Na wyświetlonej liście klastrów usługi HDInsight wybierz pozycję ... obok klastra utworzonego na potrzeby tego samouczka.
- Wybierz kolejno pozycje Usuń>Tak.
Rozwiązywanie problemów
Jeśli kafka-producer-consumer.jar
nie działa w klastrze przyłączonym do domeny, upewnij się, że używasz kafka-producer-consumer.jar
go w projekcie DomainJoined-Producer-Consumer
. Nie używaj tego elementu w projekcie Producer-Consumer
, który jest przeznaczony dla scenariuszy nieprzyłączonych do domeny.