Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Узнайте, как настроить политики Apache Ranger для кластеров Apache Kafka с пакетом Enterprise Security Package (ESP). Кластеры ESP подключены к домену, благодаря чему пользователи могут проходить аутентификацию с учетными данными домена. В этом руководстве вы создадите две политики Ranger для ограничения доступа к разделам sales
и marketingspend
.
В этом руководстве описано следующее:
- Создание пользователей домена.
- Создание политик Ranger.
- Создание разделов в кластере Kafka.
- Проверка политик Ranger.
Предварительные требования
Кластер HDInsight Kafka с корпоративным пакетом безопасности.
Подключение к пользовательскому интерфейсу администратора Apache Ranger
В браузере подключитесь к пользовательскому интерфейсу администратора Ranger с помощью URL-адреса
https://ClusterName.azurehdinsight.net/Ranger/
. Не забудьте изменитьClusterName
на имя вашего кластера Kafka. Учетные данные Ranger не совпадают с учетными данными кластера Hadoop. Чтобы браузеры не использовали кэшированные учетные данные Hadoop, подключитесь к пользовательскому интерфейсу администратора Ranger в новом окне браузера в режиме InPrivate.Войдите с помощью учетных данных администратора Microsoft Entra. Учетные данные администратора Microsoft Entra не совпадают с учетными данными кластера HDInsight или учетными данными узла SSH для linux HDInsight.
Создание пользователей домена
Узнайте, как создать пользователей домена sales_user и marketing_user, в статье "Создание кластера HDInsight с корпоративным пакетом безопасности". В рабочем сценарии пользователи домена приходят из клиента Идентификатора Microsoft Entra.
Создайте политику «Ranger»
Создайте политику Ranger для пользователей sales_user и marketing_user.
Откройте пользовательский интерфейс администратора Ranger.
В разделе Kafka выберите <ClusterName>_kafka. Может быть указана одна предварительно настроенная политика.
Щелкните Добавить новую политику, а затем введите следующие значения.
Параметры Предлагаемое значение Имя политики Политика продаж HDInsight* Тема продажи* Выбор пользователя sales_user1 Разрешения публикация, использование, создание Имя темы может содержать следующие подстановочные знаки:
-
*
обозначает ноль или более вхождений символов. -
?
означает один символ.
Подождите несколько минут, чтобы Ranger синхронизировался с идентификатором Microsoft Entra, если пользователь домена не заполняется автоматически для выбора пользователя.
-
Щелкните Добавить, чтобы сохранить политику.
Щелкните Добавить новую политику, а затем введите следующие значения.
Настройка Предлагаемое значение Имя политики Маркетинговая политика HDInsight Тема marketingspend
Выбор пользователя marketing_user1 Разрешения публикация, использование, создание Щелкните Добавить, чтобы сохранить политику.
Создание разделов в кластере Kafka с ESP
Чтобы создать разделы salesevents
и marketingspend
выполните следующие действия.
Используйте следующую команду, чтобы открыть подключение Secure Shell (SSH) к кластеру:
ssh [email protected]
Замените
DOMAINADMIN
на администратора вашего кластера, который был настроен во время создания кластера. ЗаменитеCLUSTERNAME
именем кластера. При появлении запроса введите пароль для учетной записи администратора. Дополнительные сведения об использованииSSH
с HDInsight см. в статье Подключение к HDInsight (Hadoop) с помощью SSH.Чтобы сохранить имя кластера в переменной и установить служебную программу синтаксического анализа JSON (
jq
), используйте следующие команды. При появлении запроса введите имя кластера Kafka.sudo apt -y install jq read -p 'Enter your Kafka cluster name:' CLUSTERNAME
Чтобы получить узлы брокера Kafka, используйте следующие команды. При появлении запроса введите пароль для учетной записи администратора кластера.
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`; \
Прежде чем продолжить, может потребоваться настроить среду разработки, если вы еще не сделали этого. Вам нужны такие компоненты, как Java JDK, Apache Maven и клиент SSH с безопасным копированием (SCP). Дополнительные сведения см. в инструкциях по настройке.
Скачайте примеры производителя и потребителя Apache Kafka, подключенных к домену.
Выполните шаги 2 и 3 в разделе «Сборка и развертывание примера» в учебном руководстве: Использование API-интерфейсов производителя и потребителя Apache Kafka.
Примечание.
Для этого руководства используйте
kafka-producer-consumer.jar
в рамках проектаDomainJoined-Producer-Consumer
. Не используйте тот, который находится вProducer-Consumer
проекте; он предназначен для сценариев, не присоединенных к домену.Выполните следующие команды:
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
Тестирование политик Ranger
На основе настроенных политик Ranger sales_user может создавать и использовать тему salesevents
, но не тему marketingspend
. И наоборот, marketing_user могут создавать и использовать раздел marketingspend
, но не раздел salesevents
.
Откройте новое подключение SSH к кластеру. Выполните следующую команду, чтобы войти от имени пользователя sales_user1.
ssh [email protected]
Используйте имена брокера из предыдущего раздела, чтобы настроить следующую переменную среды.
export KAFKABROKERS=<brokerlist>:9092
Пример:
export KAFKABROKERS=<brokername1>.contoso.com:9092,<brokername2>.contoso.com:9092
Выполните шаг 3 в разделе "Сборка и развертывание примера " в руководстве. Используйте API-интерфейсы производителя и потребителя Apache Kafka, чтобы убедиться, что
kafka-producer-consumer.jar
они также доступны для sales_user.Примечание.
Для этого руководства используйте
kafka-producer-consumer.jar
в рамках проекта "DomainJoined-Producer-Consumer". Не используйте элемент под проектом "Производитель-потребитель", который предназначен для сценариев, не связанных с доменом.Убедитесь, что sales_user1 может отправлять в тему
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
Выполните следующую команду, чтобы использовать из раздела
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
Убедитесь, что вы можете читать сообщения.
Убедитесь, что sales_user1 не может производить в топик
marketingspend
, выполнив следующую команду в том же окне 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
Происходит ошибка авторизации, ее можно игнорировать.
Обратите внимание, что marketing_user1 не может потреблять из темы
salesevents
.Повторите предыдущие шаги 1–3, но на этот раз как marketing_user1.
Выполните следующую команду, чтобы использовать из раздела
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
Предыдущие сообщения не будут отображаться.
Просмотрите события аудита доступа из пользовательского интерфейса Ranger.
Создание и использование разделов в ESP Kafka с помощью консоли
Примечание.
Использовать команды консоли для создания разделов нельзя. Вместо этого необходимо использовать код Java, показанный в предыдущем разделе. См. раздел Создание разделов в кластере Kafka с ESP.
Для создания и использования разделов в ESP Kafka с помощью консоли выполните следующие действия.
Используйте
kinit
с именем пользователя. Введите пароль, когда появится запрос.kinit sales_user1
Задайте переменные среды.
export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/hdp/current/kafka-broker/conf/kafka_client_jaas.conf" export KAFKABROKERS=<brokerlist>:9092
Создание сообщений в раздел
salesevents
:/usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --topic salesevents --broker-list $KAFKABROKERS --producer-property security.protocol=SASL_PLAINTEXT
Использование сообщений из раздела
salesevents
:/usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --topic salesevents --from-beginning --bootstrap-server $KAFKABROKERS --consumer-property security.protocol=SASL_PLAINTEXT
Создание и использование тем для долговременной сессии в среде ESP Kafka
Кэш билетов Kerberos имеет ограничение срока действия. Для длительного сеанса используйте ключтаб вместо обновления кэша билетов вручную.
Чтобы использовать keytab в длительном сеансе без kinit
:
Создайте новый файл keytab для вашего пользователя домена:
ktutil addent -password -p <user@domain> -k 1 -e RC4-HMAC wkt /tmp/<user>.keytab q
Создайте
/home/sshuser/kafka_client_jaas.conf
. В нем должны присутствовать следующие строки.KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true keyTab="/tmp/<user>.keytab" useTicketCache=false serviceName="kafka" principal="<user@domain>"; };
Замените
java.security.auth.login.config
на/home/sshuser/kafka_client_jaas.conf
и создайте или потребляйте тему с помощью консоли или 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
Очистка ресурсов
Если вы не собираетесь продолжать использовать это приложение, удалите созданный кластер Kafka:
- Войдите на портал Azure.
- В поле поиска в верхней части введите HDInsight.
- В разделе "Службы" выберите кластеры HDInsight.
- В списке кластеров HDInsight, который отобразится, выберите ... рядом с кластером, созданным для этого учебного пособия.
- Выберите Удалить>Да.
Устранение неполадок
Если kafka-producer-consumer.jar
кластер, присоединенный к домену, не работает, убедитесь, что вы используете kafka-producer-consumer.jar
в DomainJoined-Producer-Consumer
проекте. Не используйте тот, который находится под проектом Producer-Consumer
, предназначенным для сценариев, не присоединенных к домену.