0

使用 Spring Boot 2.5.x 构建的应用程序...使用最新的 Azure Java SDK (Azure BOM 3.9.0)。

使用 Spring Security 和 Azure Active Directory Spring Boot starter 进行 authN/authZ ......一切正常...... AZ 安全组和应用程序注册应用程序角色在 Spring Security 中正确映射为授予权限等。

存储 blob 容器已分配组 RBAC。

我们有一个要求,我们希望列出已授予 AD 用户写入权限的容器(贡献者角色)以及使用 ABAC 的容器下的虚拟文件夹(blob 前缀)。

所有用户都已阅读,但只有某些用户可以更新某些容器和/或 blob 文件夹中的 blob(例如容器/管理员)

使用 Azure blob 存储 SDK 列出容器和 blob,但在实现中看不到任何要按 RBAC 筛选的内容。

我想到的一些实现细节:

  • blob/容器索引标签;标记“管理员”相关的 blob 并在列表中使用标记过滤器。缺点是需要管理 blob 标签

  • blob/容器元数据;类似于标签,但没有索引;不确定是否直接通过 SDK 支持

  • 使用标签或元数据过滤从 SDK 调用返回的流集合

想法或想法赞赏!

4

1 回答 1

0

您可能需要使用管理 SDK

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

或者,您可以按资源范围(存储帐户的 ID)获取角色。

但是 2.10.0 中使用的服务 api-version 有点旧,它没有显示角色分配中的条件(对于 ABAC),因此您不会在存储帐户下方看到更精细的条件。


获取用户/服务主体的 objectId 可能需要 AAD 中的某些读取用户权限。如果您还没有它们,您可以通过 CLI 获取它们。

>az ad user list --display-name foo
于 2021-12-05T10:41:11.700 回答