Список 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