Перейти к основному содержимому
Версия: 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, контроль доступа будет реализован на основе этих политик.