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. Мы рассмотрим следующие темы:
Поддержка авторизации Knox и аудита
Политики командной строки в Hive
Политики командной строки в HBase
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 для управления безопасностью.