Предоставление доступа к Azure Data Lake Gen2 Access только через списки управления доступом (без RBAC)

Моя цель - ограничить доступ к хранилищу Azure Data Lake Gen 2 на уровне каталогов (что должно быть возможным в соответствии с обещаниями Microsoft).

У меня есть два каталога data, а также sensitiveв контейнере озера данных поколения 2. Для определенного пользователя я хочу предоставить доступ для чтения к каталогуdata и запретить любой доступ к каталогу sensitive.

В документации я удалил все назначения RBAC для этого пользователя (в учетной записи хранения, а также в контейнере озера данных), чтобы у меня не было унаследованного доступа для чтения к каталогам. Затем я добавил инструкцию Read-ACL вdata каталог для этого пользователя.

Мое ожидание:

  • Пользователь может напрямую скачивать файлы из data каталог.
  • Пользователь не может получить доступ к файлам sensitive дирекция

Реальность: когда я пытаюсь загрузить файлы из каталога данных, я получаю 403 ServiceCode=AuthorizationPermissionMismatch

 az storage blob directory download -c containername -s data --account-name XXX --auth-mode login -d "./download" --recursive


RESPONSE Status: 403 This request is not authorized to perform this operation using this permission.

Я ожидаю, что это должно сработать. В противном случае я могу предоставить доступ только путем назначения роли чтения BLOB-объектов хранилища, но это относится ко всем каталогам и файлам в контейнере и не может быть перезаписано операторами ACL. Я здесь что-то не так?

2 ответа

Решение

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

Я обнаружил, что не могу заставить ACL работать без роли RBAC. В итоге я создал настраиваемую роль RBAC «Storage Blob Container Reader» в своей группе ресурсов только с разрешением «Microsoft.Storage/storageAccounts/blobServices/containers/read», чтобы предотвратить доступ к списку и чтению реальных больших двоичных объектов.

Другие вопросы по тегам