Использование Azure CLI для управления списками ACL в Azure Data Lake Storage 2-го поколения

В этой статье показано, как использовать Azure CLI для получения, настройки и обновления списков управления доступом к каталогам и файлам.

Наследование ACL уже доступно для новых дочерних элементов, созданных в родительском каталоге. Но можно также добавлять, обновлять и удалять списки управления доступом для существующих дочерних элементов родительского каталога без необходимости вносить эти изменения отдельно для каждого дочернего элемента.

Справочные материалы | Примеры | Отправить отзыв

Необходимые компоненты

  • Подписка Azure. См. дополнительные сведения о бесплатной пробной версии Azure.

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

  • Azure CLI версии2.14.0 или выше.

  • Одно из следующих разрешений безопасности:

    • Подготовленный субъект безопасности Идентификатора Microsoft Entra, которому назначена роль владельца данных большого двоичного объекта служба хранилища, область в целевой контейнер, учетную запись хранения, родительскую группу ресурсов или подписку.

    • Пользователь-владелец целевого контейнера или каталога, к которому планируется применять параметры ACL. Следует настроить ACL рекурсивно, то есть для всех дочерних элементов в целевом контейнере или каталоге.

    • Ключ учетной записи хранения.

Убедитесь, что у вас установлена правильная версия Azure CLI

  1. Откройте Azure Cloud Shell или, если вы установили Azure CLI локально, командное консольное приложение (например, Windows PowerShell).

  2. Убедитесь, что установлена версия Azure CLI2.14.0 или выше, выполнив следующую команду.

     az --version
    

    Если ваша версия Azure CLI ниже чем 2.14.0, установите более позднюю версию. Дополнительные сведения см. в статье Установка Azure CLI.

Подключение к учетной записи

  1. Если вы используете Azure CLI локально, выполните команду для входа.

    az login
    

    Если в CLI можно запустить браузер по умолчанию, откроется браузер со страницей входа.

    В противном случае самостоятельно откройте в браузере страницу https://aka.ms/devicelogin и введите код авторизации, отображаемый в терминале. Затем выполните вход в браузере с помощью учетных данных.

    Дополнительные сведения о различных методах аутентификации см. на странице Авторизация доступа к данным BLOB-объектов или очередей с помощью Azure CLI.

  2. Если удостоверение связано с несколькими подписками, установите активную подписку в качестве подписки учетной записи хранения, в которой будет размещен статический веб-сайт.

    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 для каталога.

Get ACL output

В этом примере владелец имеет разрешения на чтение, запись и выполнение. Группа-владелец имеет разрешения только на чтение и выполнение. Дополнительные сведения о списках управления доступом в Azure Data Lake Storage 2-го поколения см. на этой странице.

Настройка списков 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 для файла.

Get ACL output 2

В этом примере владелец и группа-владелец имеют разрешения только на чтение и запись. У всех остальных пользователей есть разрешения на запись и выполнение. Дополнительные сведения о списках управления доступом в Azure Data Lake Storage 2-го поколения см. на этой странице.

Рекурсивная настройка 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, которому назначена роль владельца данных большого двоичного объекта служба хранилища в область целевой учетной записи хранения или контейнера.

Производительность

Чтобы сократить задержку, рекомендуется запустить процесс рекурсивной настройки ACL на виртуальной машине Azure, расположенной в том же регионе, что и учетная запись хранения.

Ограничения для списков управления доступом

Максимальное число списков управления доступом, которое можно применить к каталогу или файлу, составляет 32 списка для доступа и 32 списка по умолчанию. Дополнительные сведения см. в статье Контроль доступа в Azure Data Lake Storage 2-го поколения.

См. также