Список BLOB-объектов и контейнеров на основе назначенного RBAC

Приложение, созданное с использованием Spring Boot 2.5.x ... с использованием последней версии пакета SDK для Azure Java (Azure BOM 3.9.0).

Использование Spring Security и Azure Active Directory Spring Boot starter для authN / authZ ... все, что работает ... Группы безопасности AZ и роли приложений для регистрации приложений правильно отображаются в Spring Security как предоставленные полномочия и т. Д.

Контейнерам больших двоичных объектов хранилища назначена группа RBAC.

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

Все пользователи прочитали, но только некоторые пользователи могут обновлять большие двоичные объекты в некоторых контейнерах и / или папках больших двоичных объектов (например, в контейнере / администраторе).

Использование SDK хранилища BLOB-объектов Azure для вывода списка контейнеров и BLOB-объектов, но при этом ничего не видно в реализации для фильтрации по RBAC.

Некоторые детали реализации, о которых я подумал:

  • теги индекса blob / контейнера; пометьте "Admin" связанные большие двоичные объекты и используя фильтры тегов в списке. Недостатком является необходимость управления тегами blob.

  • метаданные blob / контейнера; похожи на теги, но не индексируются; не уверен, поддерживается ли напрямую через SDK

  • фильтрация коллекции потока, возвращаемой из вызова SDK, с использованием тегов или метаданных

Мысли или идеи приветствуются!

1 ответ

Вероятно, вам нужно использовать пакет SDK для управления .

      var roles = azure.accessManagement().roleAssignments()
    .listByServicePrincipal(objectId)

Или вы можете получить роли по области ресурсов (идентификатору учетной записи хранения).

Однако версия API-интерфейса службы, используемая в версии 2.10.0, немного устарела, поскольку в ней не отображаются условия назначения ролей (для ABAC), поэтому вы не увидите более точное условие под учетной записью хранения.


Для получения objectId для пользователя или субъекта-службы, вероятно, потребуется определенное разрешение на чтение пользователя в AAD. Вы можете получить их, например, через CLI, если у вас их еще нет.

      >az ad user list --display-name foo
Другие вопросы по тегам