Перейти к основному содержимому

Управление разрешениями с помощью Apache Ranger

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

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

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

В дополнение к встроенной системе привилегий RBAC, Selena v3.1.9 также поддерживает контроль доступа через 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, контроль доступа будет реализован на основе этих политик.