Рекомендации по авторизации на основе Apache Ranger для вашей платформы данных
25 февраля 2022 г.Введение
Alluxio обеспечивает оркестрацию данных для вычислений в любом облаке. Он объединяет хранилища данных в локальной среде и в облачных средах, чтобы обеспечить локальность, доступность и эластичность данных, необходимые для уменьшения сложностей, связанных с оркестровкой данных для современных рабочих нагрузок больших данных и AI/ML.
Alluxio разработан, чтобы помочь любой платформе получить доступ к любым данным из любого хранилища с высокой производительностью независимо от среды, что позволяет организации оставаться гибкой и конкурентоспособной при внедрении и экспериментировании с новыми и существующими технологиями.
Апач Рейнджер
Многие организации расширили доступ к своему озеру данных за пределы своих первоначальных пользователей ETL и пакетной аналитики, и им нужен способ централизовать то, как они определяют и обеспечивают детализированные разрешения на доступ. Менеджеры корпоративных данных все чаще используют Apache Ranger для удовлетворения этой потребности.
Apache Ranger — это платформа для включения, мониторинга и управления комплексной защитой данных на платформе Hadoop. Ranger был создан для достижения следующих целей:
- Обеспечьте централизованное администрирование безопасности для управления всеми задачами, связанными с безопасностью, в центральном пользовательском интерфейсе или с помощью REST API.
- Обеспечить детальную авторизацию для выполнения определенного действия и/или операции с компонентом/инструментом Hadoop и управлять с помощью инструмента централизованного администрирования.
- Стандартизируйте метод авторизации для всех компонентов Hadoop.
- Расширенная поддержка различных методов авторизации — управление доступом на основе ролей, управление доступом на основе атрибутов и т. д.
- Централизованный аудит доступа пользователей и административных действий (связанных с безопасностью) во всех компонентах Hadoop.
Alluxio и Apache Ranger
Alluxio реализует виртуальную файловую систему, которая обеспечивает доступ к разнородным хранилищам данных, предоставляя единое пространство имен вместе с кэшированием метаданных, кэшированием данных и службами управления данными на основе политик. Чтобы сделать виртуальную файловую систему Alluxio безопасной, Alluxio предоставляет следующие возможности:
- Аутентификация пользователя
- Авторизация пользователя
- Списки контроля доступа (ACL)
- Авторизация пути данных
- Олицетворение Hadoop на стороне клиента
- Аудит
- Шифрование
Alluxio интегрируется с Apache Ranger с помощью подключаемого модуля Ranger для поддержки механизмов авторизации и аудита пользователей, как показано на рис. 2 ниже.
Поскольку администраторы Apache Ranger определяют централизованные политики доступа в Ranger, эти политики извлекаются и кэшируются локально главным узлом Alluxio и применяются Alluxio, когда пользователи делают запросы на чтение или запись к виртуальной файловой системе Alluxio.
Лучшие практики
Alluxio поддерживает использование Apache Ranger для управления и принудительного доступа к каталогам и файлам. Есть два способа использовать Ranger с Alluxio:
- Используйте Ranger для прямого управления правами доступа к путям виртуальной файловой системы Alluxio. Этот метод следует использовать, когда файловая система Alluxio под (UFS) не является HDFS или у Alluxio есть две или более под файловых системы.
- Использование функций единого пространства имен Alluxio, и Alluxio будет основным уровнем доступа. Например, Alluxio может иметь HDFS UFS и S3-совместимую UFS, которые монтируются с помощью UNION UFS.
- Попросите Alluxio применить существующие политики Ranger для HDFS в файловой системе. Используйте этот метод при наличии существующих политик доступа к HDFS, управляемых в Ranger, и нет других подфайловых систем, кроме HDFS.
Хотя можно использовать Ranger для управления разрешениями как для Alluxio, так и для нижней файловой системы, не рекомендуется включать их одновременно, поскольку наличие нескольких источников правды может привести к путанице.
Вариант 1. Ranger управляет разрешениями файловой системы Alluxio
С этой опцией плагин службы Alluxio должен быть включен в консоли администратора Ranger. Поскольку Alluxio использует подключаемый модуль HDFS Ranger, новую службу HDFS можно определить на странице диспетчера служб.
Шаг 1. Создайте сервис Alluxio HDFS
На странице диспетчера служб консоли администратора Ranger нажмите знак плюса (+), чтобы создать новую службу.
Ranger отобразит страницу «Создать службу», где главный узел Alluxio будет указан как целевая служба. На этой странице введите данные службы Alluxio, включая уникальное имя службы. Если существует несколько сред Alluxio, например: одна для разработки, одна для тестирования и несколько производственных сред в разных центрах обработки данных, то следует использовать конкретные имена для службы Alluxio (например, alluxio-datacenter1-test
). Опять же, поскольку Alluxio использует подключаемый модуль HDFS, на странице «Создать службу» отображаются свойства HDFS. В свойстве Namenode URL введите URI главного узла Alluxio (например, alluxio://alluxio-master:19998
).
Если для параметра «Авторизация включена» задано значение «Да», все пользователи должны быть аутентифицированы, и в большинстве организаций для параметра «Тип аутентификации» будет задано значение «Kerberos». Если служба Ranger Admin настроена на использование SSL-сертификатов, то свойство Common Name for Certificate должно быть установлено правильно (на основе спецификации CN для SSL-сертификата), а главный узел Alluxio должен иметь доступ к этим файлам сертификатов. Обратите внимание, что в качестве имени пользователя и пароля заданы имя пользователя и пароль администратора Ranger, а не имя пользователя и пароль администратора Alluxio. При нажатии на кнопку "Создать" будет создана новая служба HDFS, которая отобразится на странице "Диспетчер служб".
Шаг 2. Настройте главные узлы Alluxio
После создания сервиса Alluxio Ranger HDFS с помощью административной консоли Ranger главные узлы Alluxio можно настроить на использование подключаемого модуля Ranger HDFS для извлечения и кэширования политик Ranger. Сначала скопируйте файлы core-site.xml, hdfs-site.xml, ranger-hdfs-security.xml, ranger-hdfs-audit.xml и ranger-policymgr-ssl.xml из каталога $HADOOP_CONF на сервере namenode HDFS. в каталог $ALLUXIO_HOME/conf на серверах главных узлов Alluxio. Файл ranger-hdfs-security.xml должен быть изменен, чтобы имя службы Alluxio Ranger HDFS было определено с помощью консоли администратора Ranger на шаге 1 выше. Так:
```javascript
<свойство>
<описание>
Имя службы Ranger, содержащей
политики для этого экземпляра Alluxio
Файл alluxio-site.properties на главных узлах Alluxio следует изменить, чтобы включить интеграцию Ranger, например:
```javascript
alluxio.security.authorization.plugins.enabled=true
alluxio.security.authorization.plugin.name=<имя плагина>
alluxio.security.authorization.plugin.paths=/opt/alluxio/conf
alluxio.security.authorization.permission.umask=077
Имя плагина указывает Alluxio использовать определенный плагин Ranger HDFS, расположенный в файлах .jar в каталоге $ALLUXIO_HOME/lib. Несколько версий Apache Ranger поддерживаются и реализуются с помощью следующих JAR-файлов:
```javascript
alluxio-авторизация-рейнджер-2.0-cdp-7.1-предприятие-2.7.0-2.4.jar
alluxio-авторизация-рейнджер-0.5-hdp-2.4-предприятие-2.7.0-2.4.jar
alluxio-авторизация-рейнджер-0.7-hdp-2.6-предприятие-2.7.0-2.4.jar
alluxio-авторизация-рейнджер-1.1-hdp-3.0-предприятие-2.7.0-2.4.jar
alluxio-авторизация-рейнджер-1.2-hdp-3.1-предприятие-2.7.0-2.4.jar
alluxio-авторизация-рейнджер-0.6-hdp-2.5-предприятие-2.7.0-2.4.jar
alluxio-авторизация-рейнджер-2.1-privacera-4.7-предприятие-2.7.0-2.4.jar
Например, если используется Privacera 4.7, имя подключаемого модуля будет указано как ranger-privacera-4.7
, а если используется Hortonworks HDP 2.6, имя подключаемого модуля будет указано как ranger-hdp-2.6
. .
Скопировав xml-файлы Ranger и изменив файл alluixo-site.properties, перезапустите главные демоны Alluxio.
Шаг 3. Ограничьте разрешения Alluxio для конфиденциальных каталогов
Когда политика Ranger недоступна для определенного пути, Alluxio будет использовать свои собственные разрешения в стиле POSIX, чтобы определить, есть ли у пользователя права доступа к каталогу или файлу. Поэтому рекомендуется запретить всем пользователям, кроме привилегированного пользователя root, доступ ко всем каталогам, кроме каталога /tmp. Чтобы применить это, выполните следующие команды Alluxio cli:
```javascript
аллюксио фс чмод 777 /
alluxio fs chmod 777 / пользователь
alluxio fs chmod 777 /tmp
alluxio fs chmod 700 / чувствительные_данные1
alluxio fs chmod 700 / чувствительные_данные2
Выполните chmod 077
… во всех подкаталогах, которыми должны управлять политики Ranger.
Когда сеанс терминала открыт для одного из узлов Alluxio и предпринимается попытка доступа к каталогу /sensitive_data1
как пользователь без полномочий root, должно отображаться сообщение об отказе в доступе, подобное этому:
```javascript
$ идентификатор
uid=1001(user1) gid=1001(alluxio-пользователи)
$ alluxio fs ls / чувствительные_данные1
Разрешение отклонено плагином авторизации: alluxio.exception.AccessControlException: Разрешение отклонено: пользователь = пользователь1, доступ =--x, путь =/чувствительные_данные1: ошибка в /, владелец инода = корень, группа инодов = корень, режим инода = rwx-- ----
Шаг 4. Создайте политики разрешения Ranger
На этом этапе группа управления данными и группа безопасности данных должны проверить каждый путь к каталогу или папке в файловой системе (HDFS, S3, GCS и т. д.) и определить, каким группам пользователей или пользователям следует предоставить доступ к каждому пути.
Используйте консоль администратора Ranger, чтобы определить политику разрешения, щелкнув ссылку службы HDFS alluxio-datacenter1-test, чтобы отобразить список определенных политик.
По умолчанию Ranger создаст несколько политик для пользователей-администраторов, но для пользователей Alluxio политик пока не существует. Нажмите кнопку "Добавить новую политику", чтобы отобразить страницу "Создать политику".
На странице «Создать политику» рекурсивно определите политику «Разрешить» для конкретной группы пользователей в пользовательском каталоге (/sensitive_data1
). Разрешить только права чтения и выполнения. В этом примере использование имени группы alluxio-users позволяет выполнить это для всех пользователей в этой группе.
Нажмите кнопку «Добавить», чтобы создать новую политику и отобразить ее в списке.
Подождите минуту, пока политика будет получена и кэширована главным узлом Alluxio. Затем откройте сеанс терминала на узле Alluxio, чтобы проверить политику разрешения. Запустите команду alluxio fs ls
еще раз, и она должна успешно отобразить список подкаталогов, например:
```javascript
$ идентификатор
uid=1001(user1) gid=1001(alluxio-пользователи)
$ alluxio fs ls /sensive_data1/dataset1/
-rw------- root root 283 СОХРАНЕНО 01-02-2022 14:59:45:457 100% /чувствительные_данные1/набор данных1/файл-данных-001
$ alluxio fs copyFromLocal my_data-file-002 /sensitive_data1/dataset1/
Разрешение отклонено плагином авторизации: alluxio.exception.AccessControlException: Разрешение отклонено: user=user1, access=--x, path=/sensitive_data1/dataset1/my_data-file-002: сбой в /, владелец inode=root, inode group= root, режим inode=rwx------
Обратите внимание, что политика Ranger разрешила доступ для чтения к каталогу /sensitive_data1/dataset1/
, но не разрешила доступ к нему для записи (сбой команды copyFromLocal). Это связано с тем, что в политике Ranger указаны только разрешения на чтение и выполнение в дереве каталогов /sensitive_data1
.
Позже используйте Ranger для добавления или удаления групп пользователей или конкретных пользователей из политик «Разрешить» и «Запретить». Alluxio повторно просканирует политики и обновит свой локальный кеш политик, а также применит политики, когда пользователи отправят запросы на чтение или запись в виртуальную файловую систему Alluxio.
Вариант 2. Alluxio применяет существующие политики Ranger
При использовании этого варианта нет необходимости включать подключаемый модуль службы Alluxio в административной консоли Ranger, поскольку Alluxio может использовать политики, определенные в существующей службе HDFS. Служба HDFS уже должна существовать в консоли администратора, как показано на рис. 10.
Однако главный узел Alluxio необходимо настроить для использования Ranger в качестве авторизатора.
Шаг 1. Настройте главные узлы Alluxio
Главные узлы Alluxio можно настроить на использование подключаемого модуля Ranger HDFS для извлечения и кэширования политик Ranger. Скопируйте файлы core-site.xml, hdfs-site.xml, ranger-hdfs-security.xml, ranger-hdfs-audit.xml и ranger-policymgr-ssl.xml из Каталог $HADOOP_CONF на сервере namenode HDFS в каталог $ALLUXIO_HOME/conf на серверах главных узлов Alluxio.
Затем файл alluxio-site.properties на главных узлах Alluxio нужно изменить двумя способами.
Во-первых, необходимо включить интеграцию Ranger, например:
```javascript
alluxio.security.authorization.plugins.enabled=true
alluxio.security.authorization.permission.umask=077
Затем, если HDFS монтируется как корневая UFS, на подключаемый модуль Ranger следует ссылаться как на подключаемый модуль, который следует использовать для корневой UFS, например:
```javascript
alluxio.master.mount.table.root.option.alluxio.underfs.security.authorization.plugin.name=<имя плагина>
alluxio.master.mount.table.root.option.alluxio.underfs.security.authorization.plugin.paths=/opt/alluxio/conf
Если HDFS монтируется не как корневая UFS, а монтируется с использованием метода вложенного монтирования, то команда монтирования Alluxio должна включать параметры для указания имени и путей подключаемого модуля Ranger, например:
```javascript
крепление alluxio fs \
--option alluxio.underfs.security.authorization.plugin.name=<имя плагина> \
--option alluxio.underfs.security.authorization.plugin.paths=/opt/alluxio/conf \
--option alluxio.underfs.version=2.7 \
/my_hdfs_mount \
hdfs://<имя узла>:<порт>/
Имя плагина указывает Alluxio использовать определенный плагин Ranger HDFS, расположенный в файлах .jar в каталоге $ALLUXIO_HOME/lib. Несколько версий Apache Ranger поддерживаются и реализуются с помощью следующих JAR-файлов:
```javascript
alluxio-авторизация-рейнджер-2.0-cdp-7.1-предприятие-2.7.0-2.4.jar
alluxio-авторизация-рейнджер-0.5-hdp-2.4-предприятие-2.7.0-2.4.jar
alluxio-авторизация-рейнджер-0.7-hdp-2.6-предприятие-2.7.0-2.4.jar
alluxio-авторизация-рейнджер-1.1-hdp-3.0-предприятие-2.7.0-2.4.jar
alluxio-авторизация-рейнджер-1.2-hdp-3.1-предприятие-2.7.0-2.4.jar
alluxio-авторизация-рейнджер-0.6-hdp-2.5-предприятие-2.7.0-2.4.jar
alluxio-авторизация-рейнджер-2.1-privacera-4.7-предприятие-2.7.0-2.4.jar
Например, если используется Privacera 4.7, имя подключаемого модуля будет указано как ranger-privacera-4.7
, а если используется Hortonworks HDP 2.6, имя подключаемого модуля будет указано как ranger-hdp-2.6
. .
Скопировав xml-файлы Ranger и изменив файл alluixo-site.properties, перезапустите главные демоны Alluxio.
Шаг 2. Переформатируйте Alluxio Masters
Чтобы эти изменения вступили в силу, необходимо переформатировать главные узлы Alluxio с помощью следующей команды:
```javascript
alluxio formatЖурнал
При использовании встроенного журнала (alluxio.master.journal.type=EMBEDDED
) выполните команду на каждом главном узле. Если вы используете тип журнала UFS, просто запустите команду один раз на любом главном узле.
Теперь Alluxio должен использовать существующие политики службы Ranger HDFS для определения разрешений на доступ к каталогам и файлам HDFS UFS.
Резюме
По мере того как специалисты по управлению данными и специалисты по безопасности предоставляют более широкий доступ к средам озера данных своей организации, все более важным становится наличие централизованного способа управления детализированными политиками доступа. Alluxio может использовать политики централизованного доступа Apache Ranger двумя способами: 1) напрямую контролировать доступ к виртуальным путям в виртуальной файловой системе Alluxio или 2) применять существующие политики доступа для HDFS в хранилищах.
Чтобы получить некоторый практический опыт использования Alluxio с Apache Ranger, вы можете развернуть Alluxio и Apache Ranger на своем компьютере с помощью изолированной программной среды Alluxio Ranger Best Practices по адресу: https://github.com/gregpalmr/alluxio-ranger-sandbox. . Чтобы узнать больше о безопасности Alluxio, обратитесь к документации Alluxio по адресу: https://docs.alluxio.io/ee/user/stable/en/operation/Security.html.
1 Apache Ranger – https://ranger.apache.org
2 Безопасность Alluxio – https://docs.alluxio.io/ee/user/stable/en/operation/Security.html
Автор: Грег Палмер, Alluxio
Также опубликовано [Здесь] (https://www.alluxio.io/blog/alluxio-and-apache-ranger-best-practices/)
Оригинал