Hadoop - права доступа к файлам и ACL (список контроля доступа)

Опубликовано: 18 Февраля, 2022

Как правило, кластер Hadoop обеспечивает безопасность на многих уровнях. Уровень защиты зависит от требований организации. В этой статье мы узнаем о первом уровне безопасности Hadoop. Он состоит в основном из двух компонентов. Обе эти функции являются частью установки по умолчанию.

1. Разрешение файла
2. ACL (список контроля доступа)

1. Разрешение файла

HDFS (Распределенная файловая система Hadoop) реализует POSIX (интерфейс переносимой операционной системы) как модель прав доступа к файлам. Это похоже на модель прав доступа к файлам в Linux. В Linux мы используем « Владелец», «Группа» и «Другие», у которых есть разрешения для каждого файла и каталога, доступных в нашей среде Linux.

     Владелец / группа пользователей Другое
         rwx rwx rwx   

Точно так же файловая система HDFS также реализует набор разрешений для этого владельца, группы и других . В Linux мы используем -rwx для разрешения конкретному пользователю, где r читается, w - для записи или добавления, а x - для исполняемого файла. Но в HDFS для файла у нас есть r для чтения, w для записи и добавления, и нет смысла для x, т.е. для разрешения на выполнение, потому что в HDFS все файлы должны быть файлами данных, и у нас нет никакой концепции выполнение файла в HDFS. Поскольку у нас нет концепции исполняемых файлов в HDFS, поэтому у нас нет setUID и setGID для HDFS.

Точно так же у нас может быть разрешение на каталог в нашей HDFS. Где r используется для перечисления содержимого каталога, w используется для создания или удаления каталога, а разрешение x используется для доступа к дочернему элементу каталога. Здесь также нет setUID и setGID для HDFS.

Как вы можете изменить разрешение этого файла HDFS?

-chmod, что означает команду режима изменения, используется для изменения разрешений для файлов в нашей HDFS. Сначала перечислите каталоги, доступные в нашей HDFS, и посмотрите разрешения, назначенные каждому из этих каталогов. Вы можете указать каталог в корне HDFS с помощью следующей команды.

 hdfs dfs -ls /

Здесь / представляет собой корневой каталог вашей HDFS.

Позвольте мне сначала перечислить файлы, присутствующие в моем каталоге Hadoop_File.

 hdfs dfs -ls / Hadoop_File

На изображении выше вы можете видеть, что для file1.txt у меня есть права на чтение и запись только для пользователя- владельца. Поэтому я добавляю разрешение на запись группе и другим .

Предварительные условия:

Вы должны быть знакомы с использованием команды -chmod в Linux, которая означает, как использовать переключатель для разрешений для пользователей. Чтобы добавить разрешение на запись для группы и других пользователей, используйте команду ниже.

 hdfs dfs -chmod go + w /Hadoop_File/file1.txt

Здесь go означает группу и прочее, w означает запись, а знак + показывает, что я добавляю разрешение на запись в группу и прочее. Затем снова перечислите файл, чтобы проверить, работает он или нет.

 hdfs dfs -ls / Hadoop_File

И мы с этим покончили, аналогично вы можете изменить разрешение для любого файла или каталога, доступного в нашей HDFS (распределенной файловой системе Hadoop).

Точно так же вы можете изменить разрешение в соответствии с вашими требованиями для любого пользователя. вы также можете изменить группу или владельца каталога с помощью -chgrp и -chown соответственно.

2. ACL (список контроля доступа)

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

Потому что, если вы хотите изменить права доступа для разных пользователей, вы не можете сделать это с помощью команды -chmod. Например, для одноузлового кластера Hadoop вашим основным пользователем является root, и вы создали отдельного пользователя для настройки Hadoop с именем, скажем, Hadoop . Теперь, если вы хотите изменить разрешение для пользователя root для файлов, которые присутствуют в вашей HDFS, вы не можете сделать это с помощью команды -chmod. Вот ACL (список контроля доступа) на картинке. С помощью ACL вы можете установить разрешение для определенного именованного пользователя или именованной группы .

In order to enable ACL in HDFS you need to add the below property in hdfs-site.xml file.

<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>

Примечание: не забудьте перезапустить все демоны, иначе изменения, внесенные в hdfs-site.xml , не отразятся.

Вы можете проверить запись в вашем списке управления доступом (ACL) с помощью команды -getfacl для каталога, как показано ниже.

 hdfs dfs -getfacl / Hadoop_File

Вы можете видеть, что у нас есть 3 разных записи в нашем ACL. Предположим, вы хотите изменить разрешение для вашего пользователя root для любого каталога HDFS, вы можете сделать это с помощью следующей команды.

Синтаксис:

 hdfs dfs -setfacl -m пользователь: имя_пользователя : rx / Hadoop_File

Вы можете изменить разрешение для любого пользователя, добавив его в ACL для этого каталога. Ниже приведены некоторые примеры изменения разрешений пользователей с разными именами для любого файла или каталога HDFS.

 hdfs dfs -setfacl -m пользователь: root: rx / Hadoop_File

Другой пример для пользователя raj:

 hdfs dfs -setfacl -m пользователь: raj: rx / Hadoop_File

Здесь rx обозначает только права на чтение и выполнение для каталога HDFS для этого корневого пользователя и пользователя raj.

В моем случае у меня нет другого пользователя, поэтому я меняю разрешение для своего единственного пользователя, т.е. dikshant.

 hdfs dfs -setfacl -m пользователь: dikshant: rwx / Hadoop_File

Затем укажите список ACL с помощью команды -getfacl, чтобы увидеть изменения.

 hdfs dfs -getfacl / Hadoop_File

Здесь вы можете увидеть еще одну запись в ACL этого каталога с пользователем: dikshant: rwx для нового разрешения пользователя dikshant. Точно так же, если у вас несколько пользователей, вы можете изменить их разрешение для любого каталога HDFS. Это еще один пример изменения разрешения пользователя dikshant из режима rx.

Здесь вы можете видеть, что я изменил разрешение пользователя dikshant с rwx на rx .