Защита файлов в HDFS
Существуют два метода защиты файлов в HDFS:
-
Настройка прав доступа в свойствах файлов.
-
Создание списков доступа (Access Control Lists, ACLs).
Права доступа к файлам и каталогам
В HDFS можно ограничивать доступ к файлам и каталогам с использованием стандартной модели защиты, базирующейся на соответствущем стандарте POSIX с некоторыми модификациями. Вы можете предоставлять права на файл или каталог отдельно владельцу этого объекта, определенной группе пользователей и всем остальным пользователям. Для файлов используют следующие флаги:
-
r— право на чтение. -
w— право на запись.
В отличие от других файловых систем, HDFS содержит только файлы с данными и не позволяет запустить какой-либо файл на выполнение.
По этой причине в файлах HDFS не используют флаг типа x, который означал бы право на исполнение. По этой же причине HDFS не поддерживает флаги доступа типа setUID и setGID.
Следующие флаги гарантируют различные права доступа к каталогу HDFS:
-
r— получить список содержимого каталога. -
w— создавать, переименовывать и удалять дочерние файлы и каталоги (одновременно требуется правоx). -
x— входить внутрь каталога (командаcd) и получать доступ ко всем дочерним файлам и каталогам (то есть возможность использовать каталог как рабочий).
Как и для файлов, HDFS не предоставляет флаги setUID и setGID для каталогов.
Прежде чем начать управление правами необходимо получить доступ к командному интерфейсу (Command-line Interface, CLI) узла NameNode. После этого используйте команды, приведенные в следующих шагах:
-
Прочитайте содержимое корневого каталога:
$ hdfs dfs -ls /Вывод на консоль приведен ниже:
-rw-r--r-- 3 hdfs hadoop 20 2021-10-07 13:34 /hadoop drwxrwxrwt - yarn hadoop 0 2021-09-15 16:58 /logs drwxr-xr-x - hdfs hadoop 0 2021-10-12 13:17 /staging drwxr-xr-x - hdfs hadoop 0 2021-09-15 16:57 /system drwxrwxrwx - hdfs hadoop 0 2021-10-20 09:00 /tmp drwxr-xr-x - hdfs hadoop 0 2021-09-27 12:24 /user
Обратите внимание на каталог /logs с флагами
drwxrwxrwt, которые означают следующее:-
dобозначает каталог (directory). -
Первые три флага
rwxопределяют права владельца файла или каталога (в данном примере —hdfsиyarn). -
Вторая группа флагов
rwxопределяют права для группы пользователей (в примере —hadoop). -
Третья группа флагов
rwxопределяет права для остальных пользователей.
-
-
Определите права на каталог /tmp как в следующем примере:
$ hdfs dfs -ls /tmpВывод на консоль приведен ниже:
drwxr-xr-x - hdfs hadoop 0 2021-10-20 09:03 /tmp/hadoop01 -rw-r--r-- 3 hdfs hadoop 20 2021-10-07 15:36 /tmp/test01 -rw-r--r-- 3 hdfs hadoop 21 2021-10-08 08:40 /tmp/test02 -rw-r--r-- 3 hdfs hadoop 19 2021-10-08 08:27 /tmp/test03 -rw-r--r-- 3 hdfs hadoop 0 2021-10-20 09:00 /tmp/test04
В данном примере все файлы имеют одинаковую настройку, то есть владелец имеет право на чтение и запись, группа
hadoop— на чтение и все остальные пользователи — на чтение. -
Прежде чем изменить права на файл, используйте команды
sudoиsu(switch user) для переключения на авторизацию с правами пользователя по имениhdfs(подмена пользователя или имперсонация).$ sudo -s $ su - hdfsВыполненные команды предоставили вам привилегии владельца используемых файлов. С этого моменты вы будете выполнять последующие команды с привилегиями пользователя
hdfs. -
Измените права доступа для группы (
g) и других пользователей (o) путем добавления им права на запись (+w):$ hdfs dfs -chmod go+w /tmp/test01Проверьте права на файл /tmp/test01:
$ hdfs dfs -ls /tmpУбедитесь в том, что права доступа для группы
hadoopи остальных пользователей изменились:drwxr-xr-x - hdfs hadoop 0 2021-10-20 09:03 /tmp/hadoop01 -rw-rw-rw- 3 hdfs hadoop 20 2021-10-07 15:36 /tmp/test01 -rw-r--r-- 3 hdfs hadoop 21 2021-10-08 08:40 /tmp/test02 -rw-r--r-- 3 hdfs hadoop 19 2021-10-08 08:27 /tmp/test03 -rw-r--r-- 3 hdfs hadoop 0 2021-10-20 09:00 /tmp/test04
Необходимые права назначены. Таким же образом вы можете изменять права на любые файлы и каталоги в HDFS.
Вы также можете назначить другую группу или другого владельца на файл или каталог с помощью команд chgrp and chown соответственно.
Список управления доступом
Список управления доступом (Access Control Lists, ACLs) содержит права доступа пользователей и групп на файлы и каталоги. К его достоинствам относится более гибкое и наглядное представление процесса управления привилегиями.
Например, вы можете использовать ACL, если необходимо назначить права различным пользователям и группам на один файл или каталог.
Для разрешения использования ACL в HDFS, активируйте соответствующее свойство в вашем кластере Hyperwave.
Следующие шаги составляют процесс настройки ACL:
-
Разрешите ACL путем добавления следующего свойства в файле hdfs-site.xml:
dfs.namenode.acls.enabled : trueПРИМЕЧАНИЕДля настройки ADH рекомендуем воспользоваться менеджером управления кластерами Arenadata Cluster Manager (ADCM).
-
Перезагрузите сервисы HDFS, чтобы применить измененные настройки. С помощью ADCM запустите задачу перенастройки и рестарта кластера.
ВАЖНОПроверьте все ли ваши сервисы выделены зеленым цветом (нормальное состояние).
-
Используйте терминал на узле NameNode, чтобы выполнить следующую команду для чтения содержимого вашего тестового каталога HDFS, например /tmp:
$ hdfs dfs -ls /tmpДанная команда отображает все файлы и подкаталоги в каталоге /tmp.
-
Выберите файл, например test01, и выполните следующую команду для считывания ACL этого файла:
$ hdfs dfs -getfacl /tmp/test01Вывод на консоль приведен ниже:
# file: /tmp/test01 # owner: hdfs # group: hadoop user::rw- group::rw- other::rw-
-
Добавьте в список пользователя, например
yarn, со всеми привилегиями на этот файл с помощью следующей команды:$ hdfs dfs -setfacl -m user:yarn:rwx /tmp/test01 -
Повторите команду
hdfs dfs -getfacl /tmp/test01для проверки обновленного списка, который теперь выглядит следующим образом:# file: /tmp/test01 # owner: hdfs # group: hadoop user::rw- user:yarn:rwx group::rw- mask::rwx other::rw-
Добавленный пользователь yarn может читать и писать в тестовый файл. Этот пример демонстрирует, что ACL предоставляет более развитые возможности по управлению доступом к файлам и каталогам HDFS.