Плагин Hive обеспечивает для HiveServer2 поиск баз данных, таблиц, столбцов и постоянных UDF, а также политики доступа, маскирования и фильтрации строк по образцу сервиса Hive в Apache Ranger. Идентификатор плагина и тип сервиса — hive. Плагин сервиса работает на сервере GrantForge; политики применяет агент Hive, установленный в HiveServer2.
Интеграционные тесты Testcontainers в репозитории охватывают HiveServer2 3.1.3, 4.0.1 и 4.1.0, включая вход через Kerberos в 4.0.1; это не означает сертификации остальных версий.
Установка
Дистрибутив содержит плагин в plugins/hive. Убедитесь в разделе Управление платформой → Плагины, что hive включён; после обновления каталога плагинов выполните повторное сканирование. Плагин обращается к HiveServer2 через собственный JDBC-драйвер Hive (hive-jdbc 4.0.1, standalone) в отдельном загрузчике классов, поэтому одинаково работает с HiveServer2 3.1 и 4.x.
Добавление сервиса данных
- Откройте Права на данные → Сервисы данных, добавьте сервис и выберите Apache Hive (
hive). - Укажите JDBC URL HiveServer2, например
jdbc:hive2://hiveserver2.example.com:10000/default. Поддерживается и обнаружение через ZooKeeper:jdbc:hive2://zk1:2181,zk2:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2. - Выберите способ входа пользователя для поиска, укажите его, проверьте подключение и сохраните сервис. Проверка выполняет вход и выводит список баз данных, как это делает поиск.
Пользователь для поиска нужен GrantForge только для обнаружения ресурсов и не связан с пользователями, выполняющими запросы. Успешная проверка подключения не означает, что запросы уже подчиняются политикам.
| Параметр | Назначение |
|---|---|
jdbc.url |
Обязательный URL HiveServer2 jdbc:hive2://хосты/база;переменные сеанса с TLS (;ssl=true;sslTrustStore=…), HTTP-транспортом или, для Kerberos, принципалом сервера (;principal=hive/_HOST@EXAMPLE.COM) |
authentication |
password (по умолчанию): пользователь с паролем — для LDAP, PAM или без аутентификации; kerberos: принципал с keytab или паролем |
username |
Обязательный пользователь для поиска; для Kerberos — полный принципал, например grantforge@EXAMPLE.COM |
password |
Пароль пользователя или, если keytab не задан, пароль Kerberos принципала; хранится в зашифрованном виде |
keytab |
Kerberos: путь к keytab принципала, доступный для чтения на сервере GrantForge |
kerberos.kdc |
Kerberos: KDC области принципала, host[:port] через запятую; если пусто, используется krb5.conf сервера |
read.timeout.ms |
Тайм-аут чтения, по умолчанию 30000, диапазон 1..600000 |
URL не может содержать учётные данные или то, что читает файлы и токены на сервере GrantForge: user, password, initFile, kerberosAuthType, delegationToken, storePasswordPath, jwt и переменные browser… отклоняются независимо от регистра. auth может быть только noSasl. Сервису Kerberos нужен principal в URL; у сервиса с паролем его быть не должно.
Kerberos
При kerberos GrantForge сам выполняет вход принципала по keytab или паролю и открывает подключение от его имени; другие настройки Kerberos на сервере GrantForge не нужны. Области, KDC которых указаны в kerberos.kdc, объявляются для всего сервера GrantForge, как в плагине HDFS, поэтому несколько сервисов Hive и HDFS могут одновременно использовать разные области.
Ресурсы и типы доступа
| Уровень | Сопоставление | Примечания |
|---|---|---|
database |
Шаблоны, без учёта регистра | Политики могут заканчиваться здесь |
table |
Шаблоны, без учёта регистра | Под базой данных; политики могут заканчиваться здесь |
column |
Шаблоны, без учёта регистра | Под таблицей |
udf |
Шаблоны, без учёта регистра | Постоянные функции, под базой данных |
url |
Пути, с учётом регистра, рекурсивно | Данные, которые читают или пишут операторы, например hdfs://nn:8020/landing; типы доступа read и write |
hiveservice |
Шаблоны | Сам HiveServer2; тип доступа serviceadmin |
global |
Шаблоны | Временные функции и добавленные файлы; тип доступа tempudfadmin |
Типы доступа совпадают с Hive: select, update, create, drop, alter, index, lock, read, write, repladmin, serviceadmin, tempudfadmin, refresh и all. Как и в Ranger, all включает все типы, кроме tempudfadmin, который позволяет пользователю выполнять произвольный код внутри HiveServer2.
В значениях политик * соответствует любому числу символов, а ? — одному символу. Редактор политик подсказывает имена по префиксу: базы данных, таблицы и UDF в базах, названных в политике, и столбцы её таблиц.
Маскирование
Политики маскирования применяются к столбцам. Каждый тип маски — одна из функций маскирования Hive, где {col} обозначает столбец:
| Тип маски | Показывает |
|---|---|
mask |
Заглавные буквы как X, строчные как x, цифры как n |
mask_show_last_4 |
Только последние четыре символа |
mask_show_first_4 |
Только первые четыре символа |
mask_hash |
Хеш SHA-256 |
mask_null |
NULL |
mask_none |
Значение без изменений |
mask_date_show_year |
1 января года даты |
custom |
Собственное выражение Hive с {col} вместо столбца, например concat('****', substr({col}, -4)) |
Например, mask_show_last_4 показывает 4111111111111111 как xxxxxxxxxxxx1111.
Фильтры строк
Политики фильтрации строк применяются к таблицам. Фильтр — условие Hive по столбцам таблицы, например region = 'EU': запросы видят только удовлетворяющие ему строки.
Маски и фильтры строк не предоставляют доступ. Запрос должна разрешать отдельная политика доступа.
Пример политик
Допустим, в Hive есть таблица sales.orders со столбцами id, region и card. Создайте в одном сервисе данных три включённые политики для пользователя alice:
| Вид политики | Ресурсы | Правило |
|---|---|---|
| Доступ | database=sales, table=orders, column=* |
Разрешить select пользователю alice |
| Маскирование | database=sales, table=orders, column=card |
Использовать mask_show_last_4 для пользователя alice |
| Фильтр строк | database=sales, table=orders |
Использовать region = 'EU' для пользователя alice |
Как только агент применит новый снимок, alice будет видеть только строки EU из sales.orders, а у каждой карты будут скрыты все символы, кроме последних четырёх; SHOW DATABASES покажет ей sales, а другие базы данных будут ей отказывать.
Применение политик
Плагин сервиса управляет политиками и ищет ресурсы. Чтобы применять их, включая маски и фильтры строк, в каждом HiveServer2 нужен агент Hive. Его развёртывание и проверки описаны в разделе агент Hive.
