Поделиться через


Настройка политик Apache Ranger для Spark SQL в HDInsight с корпоративным пакетом безопасности

В этой статье описывается настройка политик Apache Ranger для Spark SQL с корпоративным пакетом безопасности в HDInsight.

Вы узнаете, как выполнять следующие задачи:

  • Создайте политики Apache Ranger.
  • Проверьте примененные политики Ranger.
  • Примените рекомендации по настройке Apache Ranger для Spark SQL.

Необходимые компоненты

Подключение в пользовательский интерфейс администратора Apache Ranger

  1. В браузере подключитесь к пользовательскому интерфейсу администратора Ranger с помощью URL-адреса https://ClusterName.azurehdinsight.net/Ranger/.

    Измените ClusterName имя кластера Spark.

  2. Войдите с помощью учетных данных администратора Microsoft Entra. Учетные данные администратора Microsoft Entra не совпадают с учетными данными кластера HDInsight или учетными данными узла Secure Shell (SSH) linux HDInsight.

    Screenshot that shows the Service Manager page in the Ranger user interface.

Создание пользователей домена

Сведения о создании sparkuser пользователей домена см. в статье "Создание кластера HDInsight с помощью ESP". В рабочем сценарии пользователи домена приходят из клиента Microsoft Entra.

Создание политики Ranger

В этом разделе описано, как создать две политики Ranger:

  • Политика доступа для доступа hivesampletable из Spark SQL
  • Политика маскирования для маскирования столбцов в hivesampletable

Создание политики доступа Ranger

  1. Откройте пользовательский интерфейс администратора Ranger.

  2. В разделе HADOOP SQL выберите hive_and_spark.

    Screenshot that shows the selection of Hive and Spark.

  3. На вкладке Access выберите "Добавить новую политику".

    Screenshot that shows the button for adding a new access policy.

  4. Введите следующие значения:

    Свойство Значение
    Имя политики read-hivesampletable-all
    database default
    table hivesampletable
    столбец *
    Выбор пользователя sparkuser
    Разрешения select

    Screenshot that shows sample details for an access policy.

    Если пользователь домена не заполняется автоматически для выбора пользователя, подождите несколько минут, пока Ranger будет синхронизироваться с идентификатором Microsoft Entra ID.

  5. Щелкните Добавить, чтобы сохранить политику.

  6. Откройте записную книжку Zeppelin и выполните следующую команду, чтобы проверить политику:

         %sql 
         select * from hivesampletable limit 10;
    

    Ниже приведен результат перед применением политики:

    Screenshot that shows the result before an access policy.

    Ниже приведен результат после применения политики:

    Screenshot that shows the result after an access policy.

Создание политики маскирования Ranger

В следующем примере показано, как создать политику для маскирования столбца:

  1. На вкладке "Маскирование" выберите "Добавить новую политику".

    Screenshot that shows the button for adding a new masking policy.

  2. Введите следующие значения:

    Свойство Значение
    Имя политики mask-hivesampletable
    База данных Hive default
    Таблица Hive hivesampletable
    Столбец куста devicemake
    Выбор пользователя sparkuser
    Типы доступа select
    Выбор параметра маскирования Hash

    Screenshot shows masking policy details.

  3. Нажмите кнопку "Сохранить", чтобы сохранить политику.

  4. Откройте записную книжку Zeppelin и выполните следующую команду, чтобы проверить политику:

         %sql
         select clientId, deviceMake from hivesampletable; 
    

    Screenshot that shows an open Zeppelin notebook.

Примечание.

По умолчанию политики Для Hive и Spark SQL распространены в Ranger.

Применение рекомендаций по настройке Apache Ranger для Spark SQL

В следующих сценариях рассматриваются рекомендации по созданию кластера HDInsight 5.1 Spark с помощью новой базы данных Ranger и использования существующей базы данных Ranger.

Сценарий 1. Использование новой базы данных Ranger при создании кластера HDInsight 5.1 Spark

При использовании новой базы данных Ranger для создания кластера соответствующий репозиторий Ranger, содержащий политики Ranger для Hive и Spark, создается под именем hive_and_spark в службе Hadoop SQL в базе данных Ranger.

Screenshot that shows the repo that contains the Ranger policies for Hive and Spark.

При изменении политик они применяются как к Hive, так и к Spark.

Рассмотрим следующие моменты:

  • Если у вас есть две базы данных хранилища метаданных с одинаковым именем, используемым для каталогов Hive (например, DB1) и Spark (например, DB1):

    • Если Spark использует каталог Spark (metastore.catalog.default=spark), политики применяются к базе данных DB1 каталога Spark.
    • Если Spark использует каталог Hive (metastore.catalog.default=hive), политики применяются к базе данных DB1 каталога Hive.

    С точки зрения Ranger, нет способа различать db1 каталогов Hive и Spark.

    В таких случаях рекомендуется:

    • Используйте каталог Hive для Hive и Spark.
    • Сохраняйте разные имена баз данных, таблиц и столбцов для каталогов Hive и Spark, чтобы политики не применялись к базам данных в разных каталогах.
  • Если вы используете каталог Hive для Hive и Spark, рассмотрим следующий пример.

    Предположим, что вы создаете таблицу с именем table1 через Hive с текущим пользователем xyz . Он создает файл распределенной файловой системы Hadoop (HDFS) с именем table1.db , владелец которого является пользователем xyz .

    Теперь представьте, что пользователь abc используется для запуска сеанса Spark SQL. В этом сеансе пользователя abc, если вы пытаетесь написать что-либо в таблицу1, оно привязано к сбою, так как владелец таблицы является xyz.

    В таком случае рекомендуется использовать того же пользователя в Hive и Spark SQL для обновления таблицы. Этот пользователь должен иметь достаточные привилегии для выполнения операций обновления.

Сценарий 2. Использование существующей базы данных Ranger (с существующими политиками) при создании кластера Spark HDInsight 5.1

При создании кластера HDInsight 5.1 с помощью существующей базы данных Ranger в этой базе данных создается новый репозиторий Ranger с именем нового кластера в этом формате: hive_and_spark.

Screenshot that shows a new repo with an old ranger database.

Предположим, что у вас есть политики, определенные в репозитории Ranger, уже под именем oldclustername_hive в существующей базе данных Ranger в службе Hadoop SQL. Вы хотите предоставить общий доступ к тем же политикам в новом кластере HDInsight 5.1 Spark. Чтобы достичь этой цели, выполните следующие действия.

Примечание.

Пользователь, имеющий права администратора Ambari, может выполнять обновления конфигурации.

  1. Откройте пользовательский интерфейс Ambari из нового кластера HDInsight 5.1.

  2. Перейдите в службу Spark3 и перейдите к конфигурациям.

  3. Откройте конфигурацию advanced ranger-spark-security .

    Screenshot shows Ambari config ranger security.

    или можно также открыть эту конфигурацию в /etc/spark3/conf с помощью SSH.

    Измените две конфигурации (ranger.plugin.spark.service.name и ranger.plugin.spark.policy.cache.dir), чтобы указать на старый репозиторий политики oldclustername_hive, а затем сохранить конфигурации.

    Ambari:

    Screenshot that shows a configuration update for service name in Ambari.

    XML-файл:

    Screenshot that shows a configuration update for service name in XML.

  4. Перезапустите службы Ranger и Spark из Ambari.

  5. Откройте пользовательский интерфейс администратора Ranger и нажмите кнопку редактирования в службе HADOOP SQL .

    Screenshot that shows edit option for ranger service.

  6. Для службы oldclustername_hive добавьте пользователя rangersparklookup в список policy.download.auth.users и tag.download.auth.users и нажмите кнопку "Сохранить".

    Screenshot that shows how to add user in Ranger service.

Политики применяются к базам данных в каталоге Spark. Если вы хотите получить доступ к базам данных в каталоге Hive:

  1. В Ambari перейдите в конфигурации Spark3>.

  2. Измените metastore.catalog.default с spark на hive.

    Screenshot that shows changing a metastore configuration.

Известные проблемы

  • Интеграция Apache Ranger с Spark SQL не работает, если администратор Ranger не работает.
  • В журналах аудита Ranger при наведении указателя мыши на столбец ресурсов невозможно отобразить весь запущенный запрос.