【问题标题】:Can you inherit RBAC blob storage roles from Azure AD Security Groups?能否从 Azure AD 安全组继承 RBAC blob 存储角色?
【发布时间】:2021-03-04 03:09:54
【问题描述】:

我在使用 Azure Blob 存储进行身份验证时遇到问题,我们在 Angular 应用中使用 ADAL 来连接 Azure Blob 存储。

我已经使用存储模拟设置了 Azure 应用注册,并且可以为用户获取https://storage.azure.com/ 资源的令牌。

存储帐户为用户配置了Storage Blob Data Contributor 的访问控制,现在这是我开始遇到问题的地方。

如果我将用户直接分配给Storage Blob Data Contributor - 一切都按预期工作,我们可以查询和上传 Blob。

但是,如果我们将 Storage Blob Data Contributor 分配给 AD 安全组,则该 AD 组的成员无法访问存储并收到带有 x-ms-error-code: AuthorizationPermissionMismatch 标头的 403 错误。

通过组分配权限是否有任何限制?我们需要高级广告吗?任何帮助将不胜感激。

更新

确认 Premium AD 没有问题,因为在尝试了 P2 的租户后仍然无法正常工作。

文档here 声明;

当 RBAC 角色分配给 Azure AD 安全主体时,Azure 会授予该安全主体访问这些资源的权限。可以将访问范围限定为订阅、资源组、存储帐户或单个容器或队列的级别。 Azure AD 安全主体可以是用户、组、应用程序服务主体或 Azure 资源的托管标识。

当然,这意味着您可以为每个人分配角色,也可以从一个组继承???

完整的上下文;

  1. 应用注册配置Azure Storage -> user_impersonation
  2. 用户具有通过 GROUP ASSIGNMENT 分配的Storage Blob Data Contributor 角色
  3. Angular App 可以针对https://storage.azure.com/ 进行授权并获取令牌
  4. 403 PUT 请求错误,错误代码为AuthorizationPermissionMismatch
  5. 更新角色分配以包括直接分配
  6. 获取新令牌...
  7. PUT 现在可以工作并且图像已成功存储

现在这行得通 - 事实证明,小组是原因。为什么组分配不授予用户访问权限?

再次感谢任何帮助!

更新 2

按照以下答案的要求;

“IAM 访问”刀片中的“检查访问”选项显示我有来自三个组的 Storage Blob Data Contributor 角色分配(QA - 技术人员、QA - 没有客户数据的站点管理员和 QA - 有客户数据的站点管理员)

自几个月前创建这些角色以来,我没有更改这些与角色关联的用户,如上图所示,我必须是角色的成员才能包含在此处。

组不是动态分配的,所有用户都由成员资格部分分配给角色。这些是通过另一个组有关系吗? 即

【问题讨论】:

  • 您有没有发现问题所在?我刚遇到同样的问题。

标签: angular azure azure-active-directory azure-blob-storage adal


【解决方案1】:

您能否在 Azure 门户中受影响的存储帐户上使用“IAM 访问”刀片中的“检查访问”选项,并查看属于该组的用户是否通过继承显示角色分配?另外,我会要求您在我们尝试访问时检查该用户是否属于该组。该组是否具有动态成员资格用户分配?

storage account > IAM > Add role 并为这种类型的请求添加特殊权限,STORAGE BLOB DATA CONTRIBUTOR,我建议你看看这些article

现在,您可以使用 PowerShell 测试基于身份的访问 https://docs.microsoft.com/en-us/azure/storage/common/storage-auth-aad-rbac-powershell

让我知道状态

【讨论】:

  • 感谢@SumanthMarigowda-MSFT 的回复,我已经仔细检查了角色和分配,并使用更多屏幕截图等更新了我的问题(更新 2)。我不确定您对使用 PowerShell 进行测试的意思是什么,因为文章只说分配用户而不是检查角色。我应该提一下,我已经能够在多个 Azure 租约上重现这一点,因此它不能只是我的 AAD 设置。你能检查请求x-ms-client-request-id: fa96123b-6835-4ff4-844b-9ff84ff349df/x-ms-request-id: 67807da5-c01e-0029-45e9-16de07000000吗?
  • 在上述评论的基础上,我可以使用 PowerShell 使用命令 az role assignment list --assignee "mark.dyer@xxxx" --scope "/subscriptions/xxxx/resourceGroups/xxxx-test/providers/Microsoft.Storage/storageAccounts/xxxxstorageqa/blobServices/default/containers/jobimages" --include-groups --include-inherited 来查看自己的角色分配,但前提是我同时使用 --include-groups--include-inherited。即我是通过组分配的,因此需要该开关并分配给存储帐户,因此也需要继承的开关。在 ADAL 中获取令牌吗--include-groups?
  • 这可能需要更深入的调查,所以如果您有支持计划,我要求您提交支持票,否则请告知我们,我们将尽力帮助您获得一次性免费技术支援。在这种情况下,您能否向 AzCommunity[at]Microsoft[dot]com 发送一封引用此线程的电子邮件。请在主题字段中提及“ATTN subm”。感谢您在此问题上的合作,期待您的回复。
猜你喜欢
  • 1970-01-01
  • 2021-07-26
  • 2011-09-29
  • 2019-10-13
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
  • 2020-06-02
  • 2017-12-20
相关资源
最近更新 更多