Управление разрешениями с помощью 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.
Процесс аутентификации
- Вы также можете использовать LDAP для аутентификации пользователей, затем использовать Ranger для синхронизации пользователей LDAP и настройки правил доступа для них. Selena также может завершить аутентификацию входа пользователя через LDAP.
- Когда пользователи инициируют запрос, 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. Однако это не означает, что вы не можете успешно создать сервис.
-
Создайте папку
starrocksв директории Ranger Adminews/webapp/WEB-INF/classes/ranger-plugins.mkdir {path-to-ranger}/ews/webapp/WEB-INF/classes/ranger-plugins/starrocks -
Загрузите plugin-starrocks/target/ranger-starrocks-plugin-3.0.0-SNAPSHOT.jar и mysql-connector-j.jar, и поместите их в папку
starrocks. -
Перезапустите Ranger Admin.
ranger-admin restart
Настройка сервиса Selena в Ranger Admin
Этот шаг настраивает сервис Selena в Ranger, чтобы пользователи могли выполнять контроль доступа к объектам Selena через Ranger.
-
Скопируйте 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", -
Добавьте сервис 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 -
Перейдите по адресу
http://<ranger-ip>:<ranger-host>/login.jspдля входа на страницу Apache Ranger. На странице появится сервис STARROCKS.
-
Нажмите знак плюс (
+) после STARROCKS для настройки сервиса Selena.

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

На следующем рисунке показан добавленный сервис.
-
Нажмите Test connection для проверки связности и сохраните после успешного соединения. Если вы не установили ranger-starrocks-plugin, то можете пропустить тест соединения и создать напрямую.
-
На каждой машине 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>
... -
(Опционально) Если вы хотите использовать сервис журнала аудита Ranger, вам нужно создать файл ranger-starrocks-audit.xml в папке
fe/confкаждой машины FE. Скопируйте содержимое, заменитеsolr_urlвxasecure.audit.solr.solr_urlна ваш собственныйsolr_url, и сохраните файл. -
Добавьте конфигурацию
access_control = rangerво все файлы конфигурации FE.vim fe.conf
access_control=ranger -
Перезапустите все машины FE.
-- Переключитесь в папку FE.
cd..
bin/stop_fe.sh
bin/start_fe.sh