Esercitazione: Configurare i criteri Apache Kafka in HDInsight con Enterprise Security Package
Informazioni su come configurare i criteri di Apache Ranger per i cluster Apache Kafka Enterprise Security Package (ESP). Gli ESP cluster sono connessi a un dominio che consente agli utenti di eseguire l'autenticazione con le credenziali di dominio. In questa esercitazione vengono creati due criteri di Ranger per limitare l'accesso a sales
e marketingspend
.
In questa esercitazione apprenderai a:
- Creare utenti del dominio
- Creazione dei criteri di Ranger
- Creare argomenti in un cluster Kafka
- Testare i criteri di Ranger
Prerequisito
Un cluster HDInsight Kafka con Enterprise Security Package.
Connettersi all'interfaccia utente di amministrazione di Apache Ranger
Da un browser, connettersi all'interfaccia utente di amministrazione di Ranger usando l'URL
https://ClusterName.azurehdinsight.net/Ranger/
. Ricordarsi di modificareClusterName
con il nome del cluster Kafka. Le credenziali di Ranger non sono le stesse usate del cluster Hadoop. Per evitare che i browser usino credenziali memorizzate nella cache di Hadoop, usare una nuova finestra del browser InPrivate per connettersi all'interfaccia utente di Ranger Admin.Accedere usando le credenziali di amministratore di Microsoft Entra. Le credenziali di amministratore di Microsoft Entra non corrispondono alle credenziali SSH del cluster HDInsight o al nodo Linux HDInsight.
Creare utenti del dominio
Visitare Creare un cluster HDInsight con Enterprise Security Package per informazioni su come creare gli utenti del dominio sales_user e marketing_user. In uno scenario di produzione, gli utenti del dominio provengono dal tenant di Active Directory.
Creare un criterio di Ranger
Creare un criterio di Ranger per sales_user e marketing_user.
Aprire l’interfaccia utente di amministrazione di Ranger.
Selezionare <ClusterName>_kafka in Kafka. Potrebbe essere presente un criterio preconfigurato.
Selezionare Aggiungi nuovo criterio e immettere i valori seguenti:
Impostazione Valore suggerito Nome criteri hdi sales* policy Argomento sales* Seleziona utente sales_user1 Autorizzazioni publish, consume, create I seguenti caratteri jolly possono essere inclusi nel nome dell'argomento:
- "*" indica zero o più occorrenze del carattere.
- "?" indica un carattere singolo.
Attendere alcuni istanti affinché Ranger si sincronizzi con Microsoft Entra ID se un utente di dominio non viene popolato automaticamente per Select User.
Selezionare Aggiungi per salvare il criterio.
Selezionare Aggiungi nuovo criterio e quindi immettere i valori seguenti:
Impostazione Valore suggerito Nome criteri hdi marketing policy Argomento marketingspend Seleziona utente marketing_user1 Autorizzazioni publish, consume, create Selezionare Aggiungi per salvare il criterio.
Creare argomenti in un cluster Kafka con ESP
Per creare due argomenti salesevents
e marketingspend
:
Per aprire una connessione SSH al cluster, usare il comando seguente:
ssh DOMAINADMIN@CLUSTERNAME-ssh.azurehdinsight.net
Sostituire
DOMAINADMIN
con l'utente amministratore per il cluster configurato durante la creazione del cluster e sostituireCLUSTERNAME
con il nome del cluster. Quando richiesto, immettere la password per l'account utente amministratore. Per altre informazioni sull'uso diSSH
con HDInsight, vedere Use SSH with HDInsight (Uso di SSH con HDInsight).Per salvare il nome del cluster in una variabile e installare un'utilità di analisi JSON
jq
, usare i comandi seguenti. Quando richiesto, immettere il nome del cluster Kafka.sudo apt -y install jq read -p 'Enter your Kafka cluster name:' CLUSTERNAME
Per ottenere gli host del broker Kafka, usare i comandi seguenti. Quando richiesto, immettere la password dell'account amministratore del cluster.
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`; \
Prima di continuare, può essere necessario configurare l'ambiente di sviluppo se non è stato ancora fatto. Saranno necessari componenti quali Java JDK, Apache Maven e un client SSH con SCP. Per altre informazioni, vedere le istruzioni di configurazione.
Scaricare gli esempi di producer e consumer Apache Kafka aggiunti a dominio.
Seguire i passaggi 2 e 3 in Creare e distribuire l'esempio in Esercitazione: Usare le API Apache Kafka Producer e Consumer
Nota
Per questa esercitazione, usare il file kafka-producer-consumer.jar nel progetto "DomainJoined-Producer-Consumer" (non quello nel progetto Producer-Consumer, che serve per gli scenari non aggiunti a un dominio).
Eseguire i comandi seguenti:
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
Testare i criteri di Ranger
In base ai criteri di Ranger configurati, sales_user può creare o utilizzare risorse per l'argomento salesevents
ma non per l'argomento marketingspend
. Al contrario, marketing_user può creare o utilizzare risorse per l'argomento marketingspend
ma non per l'argomento salesevents
.
Aprire una nuova connessione SSH al cluster. Eseguire questo comando per accedere come sales_user1:
ssh sales_user1@CLUSTERNAME-ssh.azurehdinsight.net
Usare i nomi dei broker della sezione precedente per impostare le variabili di ambiente seguenti:
export KAFKABROKERS=<brokerlist>:9092
Esempio:
export KAFKABROKERS=<brokername1>.contoso.com:9092,<brokername2>.contoso.com:9092
Seguire il passaggio 3 in Compilare e distribuire l'esempio in Esercitazione: Usare le API Apache Kafka Producer e Consumer per assicurarsi che
kafka-producer-consumer.jar
sia disponibile anche per sales_user.Nota
Per questa esercitazione, usare il file kafka-producer-consumer.jar nel progetto "DomainJoined-Producer-Consumer" (non quello nel progetto Producer-Consumer, che serve per gli scenari non aggiunti a un dominio).
Verificare che sales_user1 possa creare risorse nell'argomento
salesevents
eseguendo il comando seguente:java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar producer salesevents $KAFKABROKERS
Eseguire il comando seguente per utilizzare risorse dall'argomento
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
Verificare che sia possibile leggere i messaggi.
Verificare che sales_user1 possa creare risorse nell'argomento
marketingspend
eseguendo il comando seguente nella stessa finestra 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
Si verifica un errore di autorizzazione che può essere ignorato.
Si noti che marketing_user1 non può utilizzare risorse dall'argomento
salesevents
.Ripetere i passaggi da 1 a 3 di cui sopra, ma questa volta come marketing_user1.
Eseguire il comando seguente per utilizzare risorse dall'argomento
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
I messaggi precedenti non possono essere visualizzati.
Visualizzare gli eventi di accesso di controllo dall'interfaccia utente di Ranger.
Creare e utilizzare argomenti in ESP Kafka con la console
Nota
Non è possibile usare i comandi della console per creare argomenti. È invece necessario usare il codice Java illustrato nella sezione precedente. Per altre informazioni, vedere Creare argomenti in un cluster Kafka con ESP.
Per creare e utilizzare argomenti in ESP Kafka con la console:
Usare
kinit
specificando il nome utente dell'utente. Immettere la password quando richiesto.kinit sales_user1
Impostare le variabili di ambiente:
export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf" export KAFKABROKERS=<brokerlist>:9092
Creare messaggi nell'argomento
salesevents
:/usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --topic salesevents --broker-list $KAFKABROKERS --producer-property security.protocol=SASL_PLAINTEXT
Utilizzare i messaggi dell'argomento
salesevents
:/usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --topic salesevents --from-beginning --bootstrap-server $KAFKABROKERS --consumer-property security.protocol=SASL_PLAINTEXT
Produrre e utilizzare argomenti per una sessione a esecuzione prolungata in ESP Kafka
La cache dei ticket Kerberos presenta una limitazione di scadenza. Per una sessione a esecuzione prolungata, è preferibile usare keytab anziché rinnovare manualmente la cache dei ticket.
Per usare keytab nella sessione a esecuzione prolungata senza kinit
:
- Creare una nuova scheda chiave per l'utente di dominio
ktutil addent -password -p <user@domain> -k 1 -e RC4-HMAC wkt /tmp/<user>.keytab q
- Creare
/home/sshuser/kafka_client_jaas.conf
e avere le righe seguenti:KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true keyTab="/tmp/<user>.keytab" useTicketCache=false serviceName="kafka" principal="<user@domain>"; };
- Sostituire
java.security.auth.login.config
con/home/sshuser/kafka_client_jaas.conf
e produrre o utilizzare l'argomento usando la console o l'APIexport 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
Pulire le risorse
Se non si intende continuare a usare questa applicazione, eseguire questa procedura per eliminare il cluster Kafka creato:
- Accedi al portale di Azure.
- Nella casella Ricerca in alto digitare HDInsight.
- Selezionare Cluster HDInsight in Servizi.
- Nell'elenco di cluster HDInsight visualizzato, fare clic su ... accanto al cluster creato per questa esercitazione.
- Fare clic su Elimina. Fare clic su Sì.
Risoluzione dei problemi
Se kafka-producer-consumer.jar non funziona in un cluster aggiunto a dominio, assicurarsi di usare il file kafka-producer-consumer.jar nel progetto "DomainJoined-Producer-Consumer" (non quello nel progetto Producer-Consumer, che serve per gli scenari non aggiunti a un dominio).
Passaggi successivi
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per