Перейти к основному содержимому
Версия: 1.5.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.

Метод контроля разрешений​

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

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

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

  • Использовать Apache Ranger для единообразного управления доступом к внутренним таблицам Selena, внешним таблицам и всем объектам.
  • Использовать Apache Ranger для управления доступом к внутренним таблицам и объектам Selena. Для external catalog повторно использовать политику соответствующего внешнего сервиса в Ranger для контроля доступа.
  • Использовать Apache Ranger для управления доступом к external catalog путем повторного использования сервиса, соответствующего внешнему источнику данных. Использовать встроенную систему привилегий 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 quick start.

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

    telnet <ranger-ip> <ranger-port>

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

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

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

примечание

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

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

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

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

    mkdir {path-to-ranger}/ews/webapp/WEB-INF/classes/ranger-plugins/starrocks
  2. Загрузите plugin-starrocks/target/ranger-starrocks-plugin-3.0.0-SNAPSHOT.jar и mysql-connector-j.jar, и поместите их в папку starrocks.

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

    ranger-admin restart

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

примечание

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

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

    wget https://github.com/StarRocks/starrocks/blob/main/conf/ranger/ranger-servicedef-starrocks.json
    примечание

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

    "implClass": "",

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

    "implClass": "org.apache.ranger.services.starrocks.RangerServiceStarRocks",
  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-starrocks.json
  3. Перейдите по адресу http://<ranger-ip>:<ranger-host>/login.jsp для входа на страницу Apache Ranger. На странице появится сервис STARROCKS.

    home

  4. Нажмите знак плюс (+) после STARROCKS для настройки сервиса Selena.

    service detail

    property

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

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

    example

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

    added service

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

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

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

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

    vim ranger-starrocks-security.xml

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

    ...
    <property>
    <name>ranger.plugin.starrocks.policy.rest.url</name>
    <value>http://localhost:6080</value> -- Измените на адрес Ranger Admin.
    <description>
    URL to Ranger Admin
    </description>
    </property>
    ...
  7. (Опционально) Если вы хотите использовать сервис журнала аудита Ranger, вам нужно создать файл ranger-starrocks-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 для разных catalog. Когда пользователи обращаются к внешней таблице, система реализует контроль доступа на основе политики доступа сервиса 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>");

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

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

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