Перейти к основному содержимому
Версия: 2.0.x

Управление правами доступа с помощью Apache Ranger

Apache Ranger предоставляет централизованную платформу управления безопасностью, которая позволяет пользователям настраивать политики доступа через визуальный веб-интерфейс. Это помогает определить, какие роли могут получить доступ к каким данным и обеспечивает детализированный контроль доступа к данным для различных компонентов и сервисов в экосистеме Hadoop.

Apache Ranger предоставляет следующие основные модули:

  • Ranger Admin: основной модуль Ranger со встроенным веб-интерфейсом. Пользователи могут создавать и обновлять политики безопасности на этой странице или через REST-интерфейс. Плагины различных компонентов экосистемы Hadoop периодически опрашивают и получают эти политики.
  • Agent Plugin: плагины компонентов, встроенные в экосистему Hadoop. Эти плагины регулярно получают политики безопасности от Ranger Admin и сохраняют их в локальных файлах. Когда пользователи обращаются к компоненту, соответствующий плагин оценивает запрос на основе настроенной политики безопасности и отправляет результаты аутентификации соответствующему компоненту.
  • User Sync: используется для получения информации о пользователях и группах пользователей, а также для синхронизации данных о правах пользователей и групп пользователей с базой данных Ranger.

Помимо встроенной системы привилегий RBAC, Selena v1.5.2 также поддерживает контроль доступа через Apache Ranger. В настоящее время Selena поддерживает:

  • Создание политик доступа, политик маскирования и политик фильтрации на уровне строк через Apache Ranger.
  • Журналы аудита Ranger.
  • Серверы Ranger, использующие Kerberos для аутентификации, не поддерживаются.
  • Вы можете зарегистрировать несколько сервисов Selena в одном сервисе Apache Ranger для управления привилегиями в разных кластерах Selena.

Эта тема описывает методы контроля доступа и процесс интеграции Selena и Apache Ranger. Для получения информации о том, как создавать политики безопасности в Ranger для управления безопасностью данных, см. официальный сайт Apache Ranger.

Начиная с версии v1.5.2, Selena поддерживает Group Provider для сбора информации о группах из внешних систем аутентификации для управления группами пользователей. Для получения дополнительной информации см. Аутентификация групп пользователей.

Метод контроля доступа

Selena, интегрированная с Apache Ranger, предоставляет следующие методы контроля доступа:

  • Создание сервиса Selena в Ranger для реализации контроля доступа. Когда пользователи обращаются к внутренним таблицам Selena, внешним таблицам или другим объектам, контроль доступа выполняется в соответствии с политиками доступа, настроенными в сервисе Selena.
  • Когда пользователи обращаются к внешнему источнику данных, внешний сервис (например, Hive Service) в Apache Ranger может быть повторно использован для контроля доступа. Selena может сопоставлять сервисы Ranger с различными External Catalogs и реализовывать контроль доступа на основе сервиса Ranger, соответствующего источнику данных.

После интеграции Selena с Apache Ranger вы можете реализовать следующие шаблоны контроля доступа:

  • Использовать Apache Ranger для единого управления доступом к внутренним таблицам Selena, внешним таблицам и всем объектам.
  • Использовать Apache Ranger для управления доступом к внутренним таблицам и объектам Selena. Для External Catalogs повторно использовать политику соответствующего внешнего сервиса в Ranger для контроля доступа.
  • Использовать Apache Ranger для управления доступом к External Catalogs путем повторного использования сервиса, соответствующего внешнему источнику данных. Использовать встроенную систему привилегий RBAC Selena для управления доступом к внутренним таблицам и объектам Selena.

Процесс аутентификации

  1. Вы также можете использовать LDAP для аутентификации пользователей, затем использовать Ranger для синхронизации пользователей LDAP и настройки правил доступа для них. Selena также может выполнить аутентификацию входа пользователя через LDAP.
  2. Когда пользователи инициируют запрос, Selena анализирует оператор запроса, передает информацию о пользователе и необходимые привилегии в Apache Ranger. Ranger определяет, имеет ли пользователь необходимую привилегию на основе политики доступа, настроенной в соответствующем сервисе, и возвращает результат аутентификации в Selena. Если у пользователя есть доступ, Selena возвращает данные запроса; если нет, Selena возвращает ошибку.

Предварительные требования

  • Установлен Apache Ranger версии 2.1.0 или более поздней. Инструкции по установке Apache Ranger см. в руководстве по быстрому запуску Ranger.

  • Все машины Selena FE имеют доступ к Apache Ranger. Вы можете проверить это, выполнив следующую команду на каждой машине FE:

    telnet <ranger-ip> <ranger-port>

    Если отображается Connected to <ip>, соединение установлено успешно.

Интеграция сервиса Selena с Ranger

(Опционально) Установка ranger-selena-plugin

примечание

Основная цель этого шага - использовать функцию автозаполнения имен ресурсов Ranger. При создании политик в Ranger Admin пользователям необходимо вводить имя ресурсов, доступ к которым требуется защитить. Чтобы упростить ввод имен ресурсов для пользователей, Ranger Admin предоставляет функцию автозаполнения, которая ищет доступные ресурсы в сервисе, соответствующие введенным данным, и автоматически дополняет имя ресурса.

Если у вас нет разрешений на работу с кластером Ranger или вам не нужна эта функция, вы можете пропустить этот шаг.

Также обратите внимание, что если вы не установили ranger-selena-plugin, то вы не сможете использовать test connection при создании сервиса Selena. Однако это не означает, что вы не можете успешно создать сервис.

  1. Создайте папку selena в директории Ranger Admin ews/webapp/WEB-INF/classes/ranger-plugins.

    mkdir {path-to-ranger}/ews/webapp/WEB-INF/classes/ranger-plugins/selena
  2. Загрузите ranger-selena-plugin-3.0.0-SNAPSHOT.jar (обратитесь в техническую поддержку для получения дистрибутива) и mysql-connector-j.jar и поместите их в папку selena.

  3. Перезапустите Ranger Admin.

    • Ranger 0.5.x:

      ranger-admin restart
    • Ranger 2.x и выше:

      ./ews/ranger-admin-services.sh restart

Настройка сервиса Selena в Ranger Admin

примечание

На этом шаге настраивается сервис Selena в Ranger, чтобы пользователи могли выполнять контроль доступа к объектам Selena через Ranger.

  1. Скопируйте ranger-servicedef-selena.json в любую директорию машины Selena FE или машины Ranger.

    wget https://raw.githubusercontent.com/Selena/selena/main/conf/ranger/ranger-servicedef-selena.json
    примечание

    Если вам не нужна функция автозаполнения Ranger (что означает, что вы не устанавливали ranger-selena-plugin), вы должны установить implClass в файле .json в пустое значение:

    "implClass": "",

    Если вам нужна функция автозаполнения Ranger (что означает, что вы установили ranger-selena-plugin), вы должны установить implClass в файле .json в значение org.apache.ranger.services.selena.RangerServiceSelena:

    "implClass": "org.apache.ranger.services.selena.RangerServiceSelena",
  2. Добавьте сервис Selena, выполнив следующую команду от имени администратора Ranger.

    curl -u <ranger_adminuser>:<ranger_adminpwd> \
    -X POST -H "Accept: application/json" \
    -H "Content-Type: application/json" http://<ranger-ip>:<ranger-port>/service/plugins/definitions -d@ranger-servicedef-selena.json
  3. Откройте http://<ranger-ip>:<ranger-host>/login.jsp для входа на страницу Apache Ranger. Сервис SELENA появится на странице.

    home

  4. Нажмите знак плюс (+) после SELENA, чтобы настроить сервис Selena.

    service detail

    property

    • Service Name: Вы должны ввести имя сервиса.
    • Display Name: Имя, которое вы хотите отобразить для сервиса под SELENA. Если не указано, будет отображаться Service Name.
    • Username и Password: Имя пользователя и пароль FE, используемые для автозаполнения имен объектов при создании политик. Эти два параметра не влияют на подключение между Selena и Ranger. Если вы хотите использовать автозаполнение, настройте хотя бы одного пользователя с активированной ролью db_admin.
    • jdbc.url: Введите IP-адрес и порт Selena FE.

    На следующем рисунке показан пример конфигурации.

    example

    На следующем рисунке показан добавленный сервис.

    added service

  5. Нажмите Test connection, чтобы проверить подключение, и сохраните его после успешного подключения. Если вы не устанавливали ranger-selena-plugin, вы можете пропустить проверку подключения и создать сервис напрямую.

  6. На каждой машине FE кластера Selena создайте файл ranger-selena-security.xml в папке fe/conf и скопируйте содержимое. Вы должны изменить следующие два параметра и сохранить изменения:

    • ranger.plugin.selena.service.name: Измените на имя сервиса Selena, которое вы создали на шаге 4.
    • ranger.plugin.selena.policy.rest.url: Измените на адрес Ranger Admin.

    Если вам нужно изменить другие конфигурации, обратитесь к официальной документации Apache Ranger. Например, вы можете изменить ranger.plugin.selena.policy.pollIntervalMs, чтобы изменить интервал получения изменений политики.

    vim ranger-selena-security.xml

    ...
    <property>
    <name>ranger.plugin.selena.service.name</name>
    <value>selena</value> -- Измените на имя сервиса Selena.
    <description>
    Name of the Ranger service containing policies for this Selena instance
    </description>
    </property>
    ...

    ...
    <property>
    <name>ranger.plugin.selena.policy.rest.url</name>
    <value>http://localhost:6080</value> -- Измените на адрес Ranger Admin.
    <description>
    URL to Ranger Admin
    </description>
    </property>
    ...
  7. (Опционально) Если вы хотите использовать сервис журнала аудита Ranger, вам нужно создать файл ranger-selena-audit.xml в папке fe/conf каждой машины FE. Скопируйте содержимое, замените solr_url в xasecure.audit.solr.solr_url на ваш собственный solr_url, и сохраните файл.

  8. Добавьте конфигурацию access_control = ranger во все файлы конфигурации FE.

    vim fe.conf
    access_control=ranger
  9. Перезапустите все машины FE.

    -- Переключитесь на папку FE.
    cd..

    bin/stop_fe.sh
    bin/start_fe.sh

Повторное использование других сервисов для контроля доступа к внешним таблицам

Для External Catalog вы можете повторно использовать внешние сервисы (такие как Hive Service) для контроля доступа. Selena поддерживает сопоставление различных внешних сервисов Ranger для различных каталогов. Когда пользователи обращаются к внешней таблице, система реализует контроль доступа на основе политики доступа сервиса Ranger, соответствующего внешней таблице. Права пользователей согласуются с пользователем Ranger с таким же именем.

  1. Скопируйте файлы конфигурации Ranger для Hive ranger-hive-security.xml и ranger-hive-audit.xml в файл fe/conf всех машин FE. Убедитесь, что IP и порт Ranger указаны правильно.

  2. Перезапустите все машины FE.

  3. Настройте External Catalog.

    • При создании External Catalog добавьте свойство "ranger.plugin.hive.service.name".

        CREATE EXTERNAL CATALOG hive_catalog_1
      PROPERTIES (
      "type" = "hive",
      "hive.metastore.type" = "hive",
      "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
      "ranger.plugin.hive.service.name" = "<ranger_hive_service_name>"
      )
    • Вы также можете добавить это свойство в существующий External Catalog.

      ALTER CATALOG hive_catalog_1
      SET ("ranger.plugin.hive.service.name" = "<ranger_hive_service_name>");

​ Эта операция изменяет метод аутентификации существующего каталога на аутентификацию на основе Ranger.

Что делать дальше

После добавления сервиса Selena вы можете щелкнуть на сервис, чтобы создать политики контроля доступа для сервиса и назначить различные права доступа различным пользователям или группам пользователей. Когда пользователи обращаются к данным Selena, контроль доступа будет реализован на основе этих политик.