GrantForge

    Базы данных / Широкостолбцовые (NoSQL)

    Apache HBase

    Установка и настройка плагина сервиса HBase, поиск кластера через ZooKeeper или серверы начальной загрузки, вход в режиме simple или через Kerberos, поиск пространств имён, таблиц и семейств столбцов и управление политиками доступа в областях самой HBase.

    Плагин HBase ищет пространства имён, таблицы и семейства столбцов и управляет политиками доступа в областях собственных прав HBase: глобальной области, пространствах имён, таблицах, семействах столбцов и столбцах. ID плагина и тип сервиса — hbase. Плагин сервиса работает на сервере GrantForge; агент HBase, установленный в master и region server, применяет политики.

    Интеграционные тесты Testcontainers в репозитории покрывают HBase 2.5.16, 2.6.7 и 3.0.0, собранные из проверенных по SHA-512 выпусков Apache, и кластер 2.6.7 с Kerberos; это не сертифицирует все остальные версии.

    Установка

    Дистрибутив содержит плагин в plugins/hbase. Убедитесь, что hbase включён в Управление платформой → Плагины; после обновления каталога плагинов просканируйте его заново. Плагин общается с кластером через собственный клиент HBase (hbase-shaded-client-byo-hadoop 2.6.7) поверх shaded-клиента Hadoop 3.5.0 в отдельном загрузчике классов, поэтому работает и с HBase 2.x, и с 3.x.

    Добавление сервиса данных

    1. Откройте Права на данные → Сервисы данных, добавьте сервис и выберите Apache HBase (hbase).
    2. Укажите кворум ZooKeeper или серверы начальной загрузки кластера HBase 2.5 и новее.
    3. Выберите способ входа пользователя для поиска, укажите его, проверьте подключение и сохраните сервис. Проверка входит в систему и описывает кластер: его ID, версию и число работающих region server.

    Параметры носят имена клиентов HBase, поэтому их можно скопировать из hbase-site.xml. Пользователь для поиска позволяет GrantForge находить ресурсы; он не связан с клиентами, которые читают и пишут данные. Успешная проверка подключения не означает, что запросы уже подчиняются политикам.

    Параметр Назначение
    hbase.zookeeper.quorum Хосты ZooKeeper, хост или хост:порт через запятую, например zk1,zk2,zk3:2181; обязателен, если не заданы серверы начальной загрузки
    hbase.zookeeper.property.clientPort Порт хостов кворума, у которых он не указан, по умолчанию 2181
    zookeeper.znode.parent Корень кластера в ZooKeeper, по умолчанию /hbase
    hbase.client.bootstrap.servers Вместо ZooKeeper, начиная с HBase 2.5: master или region server, хост:порт через запятую
    hbase.security.authentication simple (по умолчанию): имя пользователя; kerberos: принципал с keytab или паролем
    username Обязательный пользователь для поиска; при Kerberos — полный принципал, например grantforge@EXAMPLE.COM
    password Kerberos: пароль принципала, если keytab не задан; хранится в зашифрованном виде
    keytab Kerberos: путь к keytab принципала, доступный для чтения на сервере GrantForge
    kerberos.kdc Kerberos: KDC области принципала, хост[:порт] через запятую; пустое значение использует krb5.conf сервера
    hbase.master.kerberos.principal Kerberos: принципал master, по умолчанию hbase/_HOST@ и область принципала для поиска
    hbase.regionserver.kerberos.principal Kerberos: принципал region server, по умолчанию тот же, что у master
    hbase.rpc.protection authentication (по умолчанию), integrity или privacy, как в кластере
    hbase.rpc.timeout Тайм-аут RPC, по умолчанию 30000, диапазон 1..600000

    Сервис — это ровно то, что сказано в его параметрах: никакой hbase-site.xml сервера GrantForge не читается. Параметры Kerberos отклоняются при простой аутентификации; Kerberos требует пароль или keytab. Поиск сдаётся после нескольких попыток, а не через минуты, как HBase по умолчанию.

    Kerberos

    При kerberos GrantForge выполняет вход принципала через собственный вход Hadoop, по keytab или с паролем, сохраняет вход и продлевает его по keytab; больше ничего на сервере GrantForge не требует настроек Kerberos. Области, KDC которых указаны в kerberos.kdc, объявляются для всего сервера GrantForge, как это делают плагины HDFS и Hive, поэтому разные сервисы могут одновременно использовать разные области.

    Кластер закрывает соединение клиента, который входит не так, как он ожидает, и не объясняет причину. Плагин сообщает об этом как об отказе во входе и указывает на hbase.security.authentication и hbase.rpc.protection, которые должны совпадать с настройками кластера.

    Что видит пользователь для поиска

    Когда агент HBase применяет политики, списки опускают пространства имён и таблицы, которыми пользователь для поиска не может пользоваться: дайте ему политику, разрешающую read на пространстве имён *, или укажите его в hbase.superuser кластера.

    Ресурсы и типы доступа

    Уровень Сопоставление Типы доступа
    global Единственное значение * admin: операции над всем кластером, например балансировщик, квоты и репликация
    namespace Подстановочные знаки, с учётом регистра read, write, create, admin
    table Подстановочные знаки, с учётом регистра; внутри пространства имён, без его имени read, write, create, admin
    column_family Подстановочные знаки, с учётом регистра; внутри таблицы read, write
    column Подстановочные знаки, с учётом регистра; внутри семейства столбцов; имена как текст UTF-8 read, write

    Типы доступа — это read, write, create и admin самой HBase. exec HBase для конечных точек сопроцессоров не предлагается, потому что агент не может проверять их вызовы во всех версиях HBase.

    Как и в HBase, право охватывает всё в своей области: read на пространстве имён sales читает все его таблицы, write на семействе столбцов пишет все его столбцы. Запрос решается в каждой названной им области, и запрет в любой из них отклоняет его; так политика может разрешить таблицу и запретить один её столбец. Глобальная область — это сам кластер, а не все таблицы; все таблицы охватывают политики на пространстве имён *.

    В значениях политик * соответствует любому числу символов, ? — одному. Редактор политик предлагает пространства имён, таблицы в названных политикой пространствах имён и семейства столбцов её таблиц; столбцы содержат данные и не предлагаются.

    Пример политик

    Допустим, в пространстве имён sales есть таблица orders с семействами столбцов d, где лежат name и ssn, и meta. Создайте в одном сервисе данных эти включённые политики доступа:

    Ресурсы Правило
    namespace=sales Разрешить read пользователю alice
    namespace=sales, table=orders, column_family=d Разрешить read пользователю bob
    namespace=sales, table=orders Разрешить read группе auditors
    namespace=sales, table=orders, column_family=d, column=ssn Запретить read группе auditors
    namespace=analytics Разрешить create и admin пользователю dave

    Когда агент применит новый снимок, alice будет читать все таблицы sales; bob при чтении orders получит только столбцы d, а в списке таблиц увидит только orders; участники auditors прочтут всю orders, кроме d:ssn; dave создаст пространство имён analytics и его таблицы, будет ими управлять, а создание таблиц в других местах ему запретят.

    Применение политик

    Плагин сервиса управляет политиками и ищет ресурсы. Чтобы применять их, в каждом master и region server нужен агент HBase. Развёртывание и проверки описаны на странице агента HBase.

    Связанные руководства

    Редактировать эту страницу на GitHub