Tutoriel : Configurer des stratégies Apache Kafka dans HDInsight avec le Pack Sécurité Entreprise
Découvrez comment configurer des stratégies Apache Ranger pour des clusters Apache Kafka avec le Pack Sécurité Entreprise. Les clusters ESP sont connectés à un domaine permettant aux utilisateurs de s’authentifier avec les informations d’identification du domaine. Dans ce tutoriel, vous créez deux stratégies Ranger pour restreindre l’accès aux rubriques sales
et marketingspend
.
Dans ce tutoriel, vous allez apprendre à :
- Créez des utilisateurs du domaine.
- Création de stratégies Ranger.
- Créez des rubriques dans un cluster Kafka.
- Testez des stratégies Ranger.
Prérequis
Un cluster Kafka HDInsight avec le Pack Sécurité Entreprise.
Connexion à l’interface utilisateur Apache Ranger
À partir d’un navigateur, connectez-vous à l’Interface utilisateur (IU) d’administration Ranger avec l’URL
https://ClusterName.azurehdinsight.net/Ranger/
. N’oubliez pas de remplacerClusterName
par le nom de votre cluster Kafka. Les informations d’identification de Ranger ne sont pas les mêmes que celles du cluster Hadoop. Pour empêcher les navigateurs d’utiliser les informations d’identification Hadoop mises en cache, utilisez une nouvelle fenêtre de navigation InPrivate pour vous connecter à l’interface utilisateur administrateur de Ranger.Connectez-vous avec vos informations d’identification d’administrateur Microsoft Entra. Les informations d’identification de l’administrateur Microsoft Entra ne sont pas les mêmes que les informations d’identification du cluster HDInsight ou les informations d’identification SSH du nœud Linux HDInsight.
Créer des utilisateurs du domaine
Pour découvrir comment créer les utilisateurs du domaine sales_user et marketing_user, consultez Créer un cluster HDInsight avec le Pack Sécurité Entreprise. Dans un scénario de production, les utilisateurs de domaine viennent de votre locataire Microsoft Entra ID.
Créer une stratégie Ranger
Créez une stratégie Ranger pour sales_user et marketing_user.
Ouvrez l’interface utilisateur de l’administrateur Ranger.
Sous Kafka, sélectionnez <ClusterName>_kafka. Il est possible qu’une stratégie préconfigurée figure dans la liste.
Sélectionnez Ajouter une nouvelle stratégie, puis entrez les valeurs suivantes :
Paramètre Valeur suggérée Nom de la stratégie Stratégie de vente HDInsight* Rubrique sales* Sélectionner un utilisateur sales_user1 Autorisations publier, consommer, créer Les caractères génériques suivants peuvent être inclus dans le nom de la rubrique :
*
indique zéro, une ou plusieurs occurrences des caractères.?
indique n’importe quel caractère individuel.
Attendez quelques instants que Ranger se synchronise avec Microsoft Entra ID si un utilisateur de domaine n’est pas automatiquement renseigné pour Sélectionnez un utilisateur.
Sélectionnez Ajouter pour enregistrer la stratégie.
Sélectionnez Ajouter une nouvelle stratégie, puis entrez les valeurs suivantes :
Paramètre Valeur suggérée Nom de la stratégie Stratégie de marketing de HDInsight Rubrique marketingspend
Sélectionner un utilisateur marketing_user1 Autorisations publier, consommer, créer Sélectionnez Ajouter pour enregistrer la stratégie.
Créer des rubriques dans un cluster Kafka avec ESP
Pour créer les deux rubriques, salesevents
et marketingspend
:
Utilisez la commande suivante pour ouvrir une connexion Secure Shell (SSH) avec le cluster :
ssh DOMAINADMIN@CLUSTERNAME-ssh.azurehdinsight.net
Remplacez
DOMAINADMIN
par l’utilisateur administrateur de votre cluster qui a été configuré pendant la création du cluster. RemplacezCLUSTERNAME
par le nom de votre cluster. Si vous y êtes invité, entrez le mot de passe du compte de l’utilisateur administrateur. Pour en savoir plus sur l’utilisation deSSH
avec HDInsight, voir Utiliser SSH avec Hadoop - Azure HDInsight.Utilisez les commandes suivantes pour enregistrer le nom du cluster dans une variable et pour installer un utilitaire d’analyse JSON
jq
. Quand vous y êtes invité, entrez le nom du cluster Kafka.sudo apt -y install jq read -p 'Enter your Kafka cluster name:' CLUSTERNAME
Utilisez les commandes suivantes pour obtenir les hôtes du répartiteur Kafka. Quand vous y êtes invité, entrez le mot de passe du compte de l’administrateur du 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`; \
Avant de continuer, il vous faut peut-être configurer votre environnement de développement, si vous ne l’avez pas déjà fait. Vous avez besoin de composants comme JDK Java, Apache Maven et d’un client SSH avec Secure Copy (SCP). Pour plus d’informations, consultez la section relative aux Instructions de configuration.
Téléchargez les exemples de producteur et consommateur joints au domaine Apache Kafka.
Suivez les étapes 2 et 3 sous Générer et déployer l’exemple dans le Didacticiel : Utiliser les API de producteur et de consommateur Apache Kafka.
Remarque
Pour ce tutoriel, utilisez-le
kafka-producer-consumer.jar
sous le projetDomainJoined-Producer-Consumer
. N’utilisez pas celui sous le projetProducer-Consumer
, qui concerne les scénarios non joints à un domaine.Exécutez les commandes suivantes :
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
Tester les stratégies Ranger
En fonction des stratégies Ranger configurées, sales_user peut produire/consommer la rubrique salesevents
, mais pas la rubrique marketingspend
. À l’inverse, marketing_user peut produire/consommer la rubrique marketingspend
, mais pas la rubrique salesevents
.
Ouvrez une connexion SSH avec le cluster. Utilisez la commande suivante pour vous connecter en tant que sales_user1 :
ssh sales_user1@CLUSTERNAME-ssh.azurehdinsight.net
Utiliser les noms du répartiteur de la section précédente pour définir les variables d’environnement suivantes :
export KAFKABROKERS=<brokerlist>:9092
Exemple :
export KAFKABROKERS=<brokername1>.contoso.com:9092,<brokername2>.contoso.com:9092
Suivez l’étape 3 de la section Générer et déployer l’exemple dans Tutoriel : Utiliser les API de producteur et de consommateur Apache Kafka pour vérifier que
kafka-producer-consumer.jar
est également accessible à sales_user.Remarque
Pour ce tutoriel, utilisez
kafka-producer-consumer.jar
sous le projet « DomainJoined-Producer-Consumer ». N’utilisez pas celui sous le projet « Producer-Consumer », qui concerne les scénarios non joints à un domaine.Vérifiez que sales_user1 peut produire à destination de la rubrique
salesevents
en exécutant la commande suivante :java -jar -Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf kafka-producer-consumer.jar producer salesevents $KAFKABROKERS
Exécutez la commande suivante pour consommer ce qui provient de la rubrique
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
Vérifiez que vous pouvez lire les messages.
Vérifiez que le sales_user1 ne peut pas produire dans la rubrique
marketingspend
en exécutant la commande suivante dans la même fenêtre 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
Une erreur d’autorisation se produit et elle peut être ignorée.
Notez que marketing_user1 ne peut pas consommer ce qui provient de la rubrique
salesevents
.Répétez les étapes 1 à 3 précédentes, mais cette fois en tant que marketing_user1.
Exécutez la commande suivante pour consommer ce qui provient de la rubrique
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
Les messages précédents ne sont pas visibles.
Consultez les événements d’accès de l’audit à partir de l’interface utilisateur de Ranger.
Produire et consommer des rubriques dans ESP Kafka en utilisant la console
Notes
Vous ne pouvez pas utiliser des commandes de console pour créer des rubriques. Vous devez plutôt utiliser le code Java présenté dans la section précédente. Pour plus d’informations, consultez Créer des rubriques dans un cluster Kafka avec ESP.
Pour produire et consommer des rubriques dans ESP Kafka en utilisant la console :
Utilisez
kinit
avec le nom d’utilisateur de l’utilisateur. Entrez le mot de passe quand vous y êtes invité.kinit sales_user1
Définissez des variables d’environnement :
export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf" export KAFKABROKERS=<brokerlist>:9092
Produisez des messages dans la rubrique
salesevents
:/usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --topic salesevents --broker-list $KAFKABROKERS --producer-property security.protocol=SASL_PLAINTEXT
Consommez des messages provenant de la rubrique
salesevents
:/usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --topic salesevents --from-beginning --bootstrap-server $KAFKABROKERS --consumer-property security.protocol=SASL_PLAINTEXT
Produire et consommer des rubriques pour une session durable dans ESP Kafka
Le cache de tickets Kerberos a une limite d’expiration. Pour une session de longue durée, utilisez un keytab au lieu de renouveler le cache de tickets manuellement.
Pour utiliser un keytab dans une session durable sans kinit
:
Créer un keytab pour l’utilisateur de votre domaine :
ktutil addent -password -p <user@domain> -k 1 -e RC4-HMAC wkt /tmp/<user>.keytab q
Créez
/home/sshuser/kafka_client_jaas.conf
. Il doit contenir les lignes suivantes :KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true keyTab="/tmp/<user>.keytab" useTicketCache=false serviceName="kafka" principal="<user@domain>"; };
Remplacez
java.security.auth.login.config
par/home/sshuser/kafka_client_jaas.conf
et produisez ou consommez la rubrique à l’aide de la console ou de l’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
Nettoyer les ressources
Si vous ne souhaitez pas continuer à utiliser cette application, supprimez le cluster Kafka que vous avez créé :
- Connectez-vous au portail Azure.
- Dans la zone Rechercher située en haut, entrez HDInsight.
- Sous Services, sélectionnez Clusters HDInsight.
- Dans la liste des clusters HDInsight qui s’affiche, sélectionnez les points de suspension ... à côté du cluster que vous avez créé pour ce tutoriel.
- Sélectionnez Supprimer>Oui.
Dépannage
Si kafka-producer-consumer.jar
ne fonctionne pas dans un cluster joint à un domaine, vérifiez que vous utilisez kafka-producer-consumer.jar
sous le projet DomainJoined-Producer-Consumer
. N’utilisez pas celui sous le projet Producer-Consumer
, qui concerne les scénarios non joints à un domaine.