Безопасность hdfs hive hbase используя knox и ranger

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Apache HDFS (Hadoop Distributed File System) — файловая система, предназначенная для хранения файлов больших размеров, поблочно распределённых между узлами вычислительного кластера.
Apache Hive — система управления базами данных на основе платформы Hadoop.
Apache HBase — СУБД класса NoSQL с открытым исходным кодом, проект экосистемы Hadoop.
Apache KNOX — REST API и шлюз приложений для компонентов экосистемы Apache Hadoop, обеспечивает единую точку доступа для всех HTTP соединений с кластерами Apache Hadoop и систему единой аутентификации Single Sign On (SSO) для сервисов и пользовательского интерфейса компонент Apache Hadoop.
Apache Ranger – это инфраструктура для обеспечения, мониторинга и управления комплексной безопасностью данных на платформе Hadoop


Перевод поста Securing hdfs hive hbase knox ranger 2015 года. Получше и поновее поста не нашел.


Введение


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


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


В этом руководстве мы рассмотрим использование Apache Ranger для HDP 2.3 для защиты вашей среды Hadoop. Мы рассмотрим следующие темы:


  1. Поддержка авторизации Knox и аудита


  2. Политики командной строки в Hive


  3. Политики командной строки в HBase


  4. API REST для диспетчера политик



Предпосылки


Единственное предварительное условие для этого урока — наличие Hortonworks Sandbox.


Как только у вас появится Hortonworks Sandbox, войдите через SSH:



Запуск службы Knox и демонстрационной службы LDAP


В консоли Ambari по адресу http://localhost:8080/ (имя пользователя и пароль — admin и admin соответственно) выберите Knox из списка служб в левой части страницы.



Затем нажмите Service Actions в верхнем правом углу страницы и нажмите Start.



Далее вы можете отследить запуск службы Knox до его завершения:



Затем вернитесь к кнопке Service Actions в службе Knox и нажмите Start Demo LDAP.



Вы можете отследить запуск демо-службы LDAP на следующем экране:



Сценарии доступа Knox


Проверьте, запущена ли консоль администратора Ranger по адресу http://localhost:6080/ с вашего хост-компьютера. Имя пользователя — admin, пароль — admin.



Если он не запущен, вы можете запустить его из командной строки с помощью команды


sudo service ranger-admin start


Щелкните ссылку sandbox_knox в разделе Knox на главном экране Ranger Administration Portal



Вы можете просмотреть подробные сведения о политике, щелкнув название политики.



Чтобы начать тестирование политик Knox, нам нужно отключить политику global knox allow.



Найдите политику Sandbox for Guest в консоли Ranger Admin и отредактируйте политику.



и включите политику Sandbox for Guest



Из локального терминала SSHd (непосредственно в Sandbox) запустите эту команду CURL для доступа к WebHDFS.


curl -k -u admin:admin-password 'https://127.0.0.1:8443/gateway/knox_sample/webhdfs/v1?op=LISTSTATUS'


Перейдите в инструмент Ranger Policy Manager → Audit screen и проверьте, проверяется ли доступ (отказ) к Knox.



Теперь давайте попробуем ту же команду CURL, используя учетные данные guest из терминала.


curl -k -u guest:guest-password 'https://127.0.0.1:8443/gateway/knox_sample/webhdfs/v1?op=LISTSTATUS'


{"FileStatuses":{"FileStatus":[{"accessTime":0,"blockSize":0,"childrenNum":0,"fileId":16393,"group":"hadoop","length":0,"modificationTime":1439987528048,"owner":"yarn","pathSuffix":"app-logs","permission":"777","replication":0,"storagePolicy":0,"type":"DIRECTORY"},{"accessTime":0,"blockSize":0,"childrenNum":4,"fileId":16389,"group":"hdfs","length":0,"modificationTime":1439987809562,"owner":"hdfs","pathSuffix":"apps","permission":"755","replication":0,"storagePolicy":0,"type":"DIRECTORY"},{"accessTime":0,"blockSize":0,"childrenNum":1,"fileId":17000,"group":"hdfs","length":0,"modificationTime":1439989173392,"owner":"hdfs","pathSuffix":"demo","permission":"755","replication":0,"storagePolicy":0,"type":"DIRECTORY"},{"accessTime":0,"blockSize":0,"childrenNum":1,"fileId":16398,"group":"hdfs","length":0,"modificationTime":1439987529660,"owner":"hdfs","pathSuffix":"hdp","permission":"755","replication":0,"storagePolicy":0,"type":"DIRECTORY"},{"accessTime":0,"blockSize":0,"childrenNum":1,"fileId":16394,"group":"hdfs","length":0,"modificationTime":1439987528532,"owner":"mapred","pathSuffix":"mapred","permission":"755","replication":0,"storagePolicy":0,"type":"DIRECTORY"},{"accessTime":0,"blockSize":0,"childrenNum":2,"fileId":16396,"group":"hadoop","length":0,"modificationTime":1439987538099,"owner":"mapred","pathSuffix":"mr-history","permission":"777","replication":0,"storagePolicy":0,"type":"DIRECTORY"},{"accessTime":0,"blockSize":0,"childrenNum":1,"fileId":16954,"group":"hdfs","length":0,"modificationTime":1439988741413,"owner":"hdfs","pathSuffix":"ranger","permission":"755","replication":0,"storagePolicy":0,"type":"DIRECTORY"},{"accessTime":0,"blockSize":0,"childrenNum":3,"fileId":16386,"group":"hdfs","length":0,"modificationTime":1440165443820,"owner":"hdfs","pathSuffix":"tmp","permission":"777","replication":0,"storagePolicy":0,"type":"DIRECTORY"},{"accessTime":0,"blockSize":0,"childrenNum":8,"fileId":16387,"group":"hdfs","length":0,"modificationTime":1439988397561,"owner":"hdfs","pathSuffix":"user","permission":"755","replication":0,"storagePolicy":0,"type":"DIRECTORY"}]}}

Мы можем проверить аудит в Ranger Policy Manager → Audit screen.



Плагин Ranger для Knox перехватывает любые запросы, отправленные к Knox, и применяет политики, полученные с портала администрирования Ranger.


Вы можете настроить политики Knox в Ranger, чтобы ограничить их определенной службой (WebHDFS, WebHCAT и т. д.) и конкретным пользователем или группой, и вы даже можете привязать пользователя / группу к IP-адресу



Разрешения grant/revoke в Hive


Ranger может поддерживать импорт политик grant/revoke, установленных через командную строку или Hue for Hive. Ranger может централизованно хранить эти политики вместе с политиками, созданными на портале администрирования, и применять их в Hive с помощью своего плагина.



Первым делом отключите глобальную политику доступа для Hive на портале администрирования Ranger.



Давайте попробуем запустить операцию Grant, используя пользовательский Hive из командной строки. Войдите в инструмент beeline, используя следующую команду


beeline -u "jdbc:hive2://sandbox.hortonworks.com:10000/default" -n it1 -p it1-d org.apache.hive.jdbc.HiveDriver


Затем введите команду GRANT


grant select, update on table xademo.customer_details to user network1;

Вы должны увидеть следующую ошибку:



Давайте проверим журнал аудита в Ranger Administration Portal → Audit



Вы можете видеть, что доступ был запрещен для операции администратора для пользователя it1.


Мы можем создать политику в Ranger для пользователя it1 в качестве администратора. Создайте новую политику в консоли администратора Ranger и убедитесь, что конфигурация соответствует приведенной ниже иллюстрации.



Мы можем попробовать команду beeline еще раз, как только политика будет сохранена.


GRANT select, update on table xademo.customer_details to user network1;


Если команда прошла успешно, вы увидите, что политика создана / обновлена в Ranger Admin Portal → Policy Manager. Он проверяет, существует ли существующая соответствующая политика для обновления, в противном случае он создает новую.



Что здесь происходит?


Плагин Ranger перехватывает команды GRANT/REVOKE в Hive и создает соответствующие политики на портале администратора. Затем плагин использует эти политики для принудительной авторизации Hive (Hiveserver2).


Пользователи могут запускать дополнительные команды GRANT для обновления разрешений и команды REVOKE для отмены разрешений.


Разрешения grant/revoke в HBase


Ranger может поддерживать импорт политик grant/revoke, установленных через командную строку в Hbase. Подобно Hive, Ranger может хранить эти политики как часть диспетчера политик и применять их в Hbase с помощью своего плагина.


Прежде чем продолжить, убедитесь, что HBase запущен из Ambari — http://127.0.0.1:8080 (имя пользователя и пароль admin).


Если это не так, нажмите кнопку Service Actions в правом верхнем углу и запустите службу.



Сначала давайте попробуем запустить операцию Grant с помощью пользователя Hbase.


Отключите политику общего доступа HBase Global Allow на Ranger Administration Portal — диспетчер политик.



Войдите в оболочку HBase как пользователь it1


su - it1
[it1@sandbox ~]$ hbase shell


Запустите команду grant, чтобы предоставить пользователю mktg1 доступ на чтение, запись и создание в таблице iemployee.


hbase(main):001:0> grant 'mktg1', 'RWC', 'iemployee'

вы должны получить отказ в доступе, как показано ниже:



Перейдите в Ranger Administration Portal→ Policy Manager и создайте новую политику, чтобы назначить права admin пользователю it1.



Сохраните политику и снова запустите команду HBase.


hbase(main):006:0> grant 'mktg1', 'RWC', 'iemployee'

0 row(s) in 0.8670 seconds


Проверьте политики HBase на портале Ranger Policy Administration. Разрешения на предоставление были добавлены в существующую политику для таблицы iemployee, которую мы создали на предыдущем шаге.



Вы можете отозвать те же разрешения, и они будут удалены из администратора Ranger. Попробуйте это в той же оболочке HBase


hbase(main):007:0> revoke 'mktg1', 'iemployee'

0 row(s) in 0.4330 seconds

Вы можете проверить существующую политику и посмотреть, не были ли она изменена



Что здесь происходит?


Плагин Ranger перехватывает команды GRANT/REVOKE в Hbase и создает соответствующие политики на портале администратора. Затем плагин использует эти политики для принудительной авторизации.


Пользователи могут запускать дополнительные команды GRANT для обновления разрешений и команды REVOKE для отмены разрешений.


REST APIs для администрирования политик


Администрированием политик Ranger можно управлять через REST API. Пользователи могут использовать API для создания или обновления политик, вместо того, чтобы заходить на портал администрирования.


Запуск REST API из командной строки


В локальной оболочке командной строки запустите эту команду CURL. Этот API создаст политику с именем hadoopdev-testing-policy2 в репозитории HDFS sandbox_hdfs


curl -i --header "Accept:application/json" -H "Content-Type: application/json" --user admin:admin -X POST http://127.0.0.1:6080/service/public/api/policy -d '{ "policyName":"hadoopdev-testing-policy2","resourceName":"/demo/data/test","description":"Testing policy for /demo/data/test","repositoryName":"sandbox_hdfs","repositoryType":"HDFS","permMapList":[{"userList":["mktg1"],"permList":["Read"]},{"groupList":["IT"],"permList":["Read"]}],"isEnabled":true,"isRecursive":true,"isAuditEnabled":true,"version":"0.1.0","replacePerm":false}'


И диспетчер политик и просмотрите новую политику с именем hadoopdev-testing-policy2



Щелкните политику и проверьте созданные разрешения.



Идентификатор политики является частью URL-адреса этой страницы сведений о политике http://127.0.0.1:6080/index.html#!/hdfs/1/policy/26


Мы можем использовать идентификатор политики для получения или изменения политики.


Выполните приведенную ниже команду CURL, чтобы получить сведения о политике с помощью API.


curl -i --user admin:admin -X GET http://127.0.0.1:6080/service/public/api/policy/26

Что здесь происходит?


Мы создали политику и получили ее детали с помощью REST API. Теперь пользователи могут управлять своими политиками с помощью инструментов API или приложений, интегрированных с REST API Ranger.


Надеюсь, во время этого головокружительного тура по Ranger вы познакомились с простотой и мощью Ranger для управления безопасностью.

Источник: https://habr.com/ru/post/539620/


Интересные статьи

Интересные статьи

О чем вы узнаете из статьи? Что такое Electron Возможности и ограничения при разработке Как работать с Electron Плюсы и минусы Известные проблемы Вывод Electron — это библиотека,...
Всем привет! В предыдущих постах мы подробно поговорили про выбор зависимостей и использование lock-файлов в npm, однако я только вскользь касался вопросов безопасности. Пришло врем...
Эта публикация написана после неоднократных обращений как клиентов, так и (к горести моей) партнеров. Темы обращений были разные, но причиной в итоге оказывался один и тот же сценарий, реализу...
  Действительно, эксперты в сфере кибербезопасности защищают деньги, данные, репутацию компаний, их сотрудников и пользователей. Гордиться есть чем. Тем не менее, о тех, кто защищает нашу с ва...
На прошлой неделе исследователь Джонатан Лейтсач опубликовал весьма эмоциональный пост об уязвимостях в клиенте для веб-конференций Zoom для операционной системы macOS. В данном случае не совсем ...