Использование Azure CLI для управления списками управления доступом в Azure Data Lake Storage
В этой статье показано, как использовать Azure CLI для получения, настройки и обновления списков управления доступом к каталогам и файлам.
Наследование ACL уже доступно для новых дочерних элементов, созданных в родительском каталоге. Но можно также добавлять, обновлять и удалять списки управления доступом для существующих дочерних элементов родительского каталога без необходимости вносить эти изменения отдельно для каждого дочернего элемента.
Справочные материалы | Примеры | Отправить отзыв
Необходимые компоненты
Подписка Azure. См. дополнительные сведения о бесплатной пробной версии Azure.
Учетная запись хранения, в которой включено иерархическое пространство имен. Выполните эти инструкции, чтобы создать учетную запись.
Azure CLI версии
2.14.0
или выше.Одно из следующих разрешений безопасности:
Подготовленный субъект безопасности Идентификатора Microsoft Entra, которому назначена роль владельца данных BLOB-объектов хранилища, в пределах целевого контейнера, учетной записи хранения, родительской группы ресурсов или подписки.
Пользователь-владелец целевого контейнера или каталога, к которому планируется применять параметры ACL. Следует настроить ACL рекурсивно, то есть для всех дочерних элементов в целевом контейнере или каталоге.
Убедитесь, что у вас установлена правильная версия Azure CLI
Откройте Azure Cloud Shell или, если вы установили Azure CLI локально, командное консольное приложение (например, Windows PowerShell).
Убедитесь, что установленная
2.14.0
версия Azure CLI или более поздняя с помощью следующей команды.az --version
Если ваша версия Azure CLI ниже чем
2.14.0
, установите более позднюю версию. Дополнительные сведения см. в статье Установка Azure CLI.
Подключение к учетной записи
Если вы используете Azure CLI локально, выполните команду для входа.
az login
Если в CLI можно запустить браузер по умолчанию, откроется браузер со страницей входа.
В противном случае самостоятельно откройте в браузере страницу https://aka.ms/devicelogin и введите код авторизации, отображаемый в терминале. Затем выполните вход в браузере с помощью учетных данных.
Дополнительные сведения о различных методах аутентификации см. на странице Авторизация доступа к данным BLOB-объектов или очередей с помощью Azure CLI.
Если удостоверение связано с несколькими подписками, и вам не будет предложено выбрать подписку, установите активную подписку на подписку учетной записи хранения, с которой вы хотите работать. В этом примере замените значение заполнителя
<subscription-id>
идентификатором своей подписки.az account set --subscription <subscription-id>
Замените значение заполнителя
<subscription-id>
идентификатором своей подписки.
Примечание.
В примере, представленном в этой статье, показана авторизация Microsoft Entra. Дополнительные сведения о методах аутентификации см. на странице Авторизация доступа к данным BLOB-объектов или очередей с помощью Azure CLI.
Получение ACL
Чтобы получить список управления доступом для каталога выполните команду az storage fs access show.
В этом примере ACL сначала извлекается для каталога, а затем выводится на консоль.
az storage fs access show -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login
Чтобы просмотреть права доступа к файлу выполните команду az storage fs access show.
В этом примере список ACL сначала извлекается для файла, а затем выводится на консоль.
az storage fs access show -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login
На следующем изображении показаны выходные данные после получения списка ACL для каталога.
В этом примере владелец имеет разрешения на чтение, запись и выполнение. Группа-владелец имеет разрешения только на чтение и выполнение. Дополнительные сведения о списках управления доступом см. в разделе "Управление доступом" в Azure Data Lake Storage.
Настройка списков ACL
При установке ACL вы замените весь список ACL, включая все его записи. Если вы хотите изменить уровень разрешений субъекта безопасности или добавить новый субъект безопасности в список управления доступом, не затрагивая другие существующие записи, следует обновить ACL. Сведения о том, как обновить список управления доступом вместо его замены, см. в разделе Обновление списков ACL этой статьи.
Если вы решили настроить ACL, необходимо добавить запись для пользователя-владельца, запись для группы-владельца и запись для всех других пользователей. Дополнительные сведения о пользователе-владельце, группе-владельце и других пользователях см. в разделе Пользователи и удостоверения.
В этом разделе показано, как выполнять следующие действия.
- Настройка списка ACL
- Рекурсивная настройка ACL
Настройка списка ACL
Чтобы установить список управления доступом для каталога, выполните команду az storage fs access set.
В этом примере список ACL задается для каталога пользователя-владельца, группы-владельца или других пользователей, а затем выводится на консоль.
az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login
В этом примере список ACL по умолчанию задается в каталоге для владельца, группы-владельца или других пользователей, а затем выводится на консоль.
az storage fs access set --acl "default:user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login
Чтобы установить список управления доступом для файла, выполните команду az storage fs access set.
В этом примере список ACL задается для файла пользователя-владельца, группы-владельца или других пользователей, а затем выводится на консоль.
az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login
Примечание.
Чтобы задать ACL для определенной группы или пользователя, используйте соответствующие идентификаторы объектов. Например, чтобы задать список ACL для группы, используйте group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
. Чтобы задать список ACL для пользователя, используйте user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
.
На следующем изображении показаны выходные данные после установки списка ACL для файла.
В этом примере владелец и группа-владелец имеют разрешения только на чтение и запись. У всех остальных пользователей есть разрешения на запись и выполнение. Дополнительные сведения о списках управления доступом см. в разделе "Управление доступом" в Azure Data Lake Storage.
Рекурсивная настройка ACL
Задайте ACL рекурсивно с помощью команды az storage fs access set-recursive.
В этом примере список ACL задается для каталога my-parent-directory
. Эти записи предоставляют пользователю-владельцу права на чтение, запись и выполнение, группе-владельцу предоставляются разрешения только на чтение и выполнение, а всем остальным доступ не предоставляется. Последняя запись ACL в этом примере предоставляет отдельному пользователю с идентификатором xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx разрешения на чтение и выполнение.
az storage fs access set-recursive --acl "user::rwx,group::r-x,other::---,user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Примечание.
Если вы хотите задать запись ACL по умолчанию, добавьте префикс default:
к каждой записи. Например, default:user::rwx
или default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x
.
Обновление ACL
При обновлении ACL происходит его изменение, а не полная замена. Например, можно добавить новый субъект безопасности в ACL, не затрагивая другие субъекты безопасности, перечисленные в этом же списке. Сведения о том, как заменить ACL вместо его обновления, см. в разделе Задание ACL этой статьи.
Чтобы обновить ACL, создайте новый объект ACL с записью, которую требуется обновить, а затем используйте этот объект в операции обновления ACL. Не изменяйте существующий список ACL, просто предоставьте записи ACL, которые необходимо обновить.
В этом разделе показано, как выполнять следующие действия.
- Обновление списка ACL
- Рекурсивное обновление ACL
Обновление списка ACL
Обновите ACL файла с помощью команды az storage fs access update-recursive .
В этом примере обновляется запись ACL с разрешением на запись.
az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/myfile.txt -f my-container --account-name mystorageaccount --auth-mode login
Чтобы обновить ACL определенной группы или пользователя, используйте соответствующие идентификаторы объектов. Например, group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
или user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
.
Примечание.
Обновление ACL одного каталога без обновления ACL дочерних элементов не поддерживается Azure CLI. Чтобы обновить ACL каталога без изменения списков управления доступом всех дочерних элементов в этом каталоге, используйте любые другие поддерживаемые средства и пакеты SDK. Узнайте , как задать списки управления доступом.
Рекурсивное обновление ACL
Обновите ACL рекурсивно с помощью команды az storage fs access update-recursive.
В этом примере обновляется запись ACL с разрешением на запись.
az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Примечание.
Если вы хотите обновить запись ACL по умолчанию, добавьте префикс default:
к каждой записи. Например, default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x
.
Рекурсивное удаление записей ACL
Можно рекурсивно удалить одну или несколько записей ACL. Чтобы удалить запись ACL, создайте новый объект ACL для удаляемой записи ACL, а затем используйте этот объект в операции удаления ACL. Не изменяйте существующий список ACL, просто предоставьте записи ACL, которые необходимо удалить.
Удалите записи ACL с помощью команды az storage fs access remove-recursive.
В этом примере удаляется запись ACL из корневого каталога контейнера.
az storage fs access remove-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Примечание.
Если вы хотите удалить запись ACL по умолчанию, добавьте префикс default:
к каждой записи. Например, default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
.
Восстановление после сбоев
При рекурсивном изменении ACL могут возникать ошибки времени выполнения или разрешений. При ошибках времени выполнения перезапустите процесс с самого начала. Ошибки разрешений могут возникать, если субъект безопасности не имеет достаточных разрешений для изменения ACL каталога или файла в изменяемой иерархии каталогов. Устраните проблему с разрешениями, а затем возобновите процесс с точки сбоя с помощью маркера продолжения или перезапустите его с самого начала. Во втором случае использовать маркер продолжения не нужно. Вы можете повторно применить ACL без отрицательных последствий.
В случае сбоя можно вернуть маркер продолжения, задав для параметра --continue-on-failure
значение false
. После устранения ошибок можно возобновить процесс с точки сбоя, выполнив команду еще раз, а затем присвоив параметру --continuation
значение маркера продолжения.
az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure false --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Если вы хотите, чтобы процесс продолжался без прерывания на ошибки разрешений, можно указать это.
Чтобы процесс выполнялся без прерывания, присвойте параметру --continue-on-failure
значение true
.
az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure true --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Рекомендации
В этом разделе приведены рекомендации по рекурсивной настройке списков управления доступом.
Обработка ошибок времени выполнения
Ошибки времени выполнения могут возникать по многим причинам (например, в случае сбоя или проблемы с подключением клиента). При возникновении ошибки времени выполнения перезапустите процесс рекурсивной настройки ACL. Списки управления доступом можно повторно применить к элементам без негативного воздействия.
Обработка ошибок разрешений (403)
Если при выполнении процесса рекурсивной настройки ACL возникает исключение управления доступом, возможно, что субъект безопасности Active Directory не имеет достаточных разрешений для применения ACL к одному или нескольким дочерним элементам в иерархии каталогов. При возникновении ошибки, связанной с разрешением, процесс останавливается и предоставляется маркер продолжения. Устраните проблему с разрешениями, а затем используйте маркер продолжения для обработки оставшегося набора данных. Каталоги и файлы, которые уже были успешно обработаны, не должны обрабатываться повторно. Можно также перезапустить процесс рекурсивной настройки ACL. Списки управления доступом можно повторно применить к элементам без негативного воздействия.
Подтверждение компетенции
Рекомендуется подготовить субъект безопасности Microsoft Entra, которому назначена роль владельца данных BLOB-объектов хранилища в области целевой учетной записи хранения или контейнера.
Производительность
Чтобы сократить задержку, рекомендуется запустить процесс рекурсивной настройки ACL на виртуальной машине Azure, расположенной в том же регионе, что и учетная запись хранения.
Ограничения для списков управления доступом
Максимальное число списков управления доступом, которое можно применить к каталогу или файлу, составляет 32 списка для доступа и 32 списка по умолчанию. Дополнительные сведения см. в статье Контроль доступа в Azure Data Lake Storage 2-го поколения.