【问题标题】:Using IAM for Azure Service Bus, how can I assign a role to an application?使用 IAM for Azure Service Bus,如何将角色分配给应用程序?
【发布时间】:2020-02-28 08:05:52
【问题描述】:

背景

我想授予应用程序对我的几个 Azure 服务总线队列的所有权...具体而言,通过授予它Azure 服务总线数据所有者角色。

Azure 服务总线文档说这是可能的:

Azure 服务总线支持使用 Azure Active Directory (Azure AD) 来授权对服务总线实体(队列、主题、订阅或筛选器)的请求。借助 Azure AD,您可以使用基于角色的访问控制 (RBAC) 向安全主体授予权限,该安全主体可以是用户、组或应用程序服务主体 [我的重点]。

(Source)

但是,我找不到办法。

我的尝试

  1. 在 Azure AD 中注册了应用程序。
  2. 授予应用程序对Microsoft.ServiceBususer_impersonation 权限。 (Application permissions 已禁用 [1],所以我选择了 Delegated permissions 并检查了 user_impersonation [2]。不知道这是否正确。我不久前发布了 another question ,关于 Application permissions 被禁用,但接受的答案在这种情况下,编辑清单不起作用。)
  3. 在我的服务总线队列中,选择了Role assignments
  4. 点击Add
  5. 搜索了我的应用程序。

问题

我的应用程序没有出现在Role assignments 的搜索结果中。

【问题讨论】:

  • 在 Azure AD > 应用注册 > (app) > 概述 > 本地目录中的托管应用程序:您是否看到带有应用程序名称的链接或“创建服务主体”链接? (换句话说:有问题的租户是否有应用程序的服务主体?)
  • @PhilippeSignoret 就是这样。该应用程序没有服务主体。单击链接后,它会显示出来,我可以分配它。如果您作为答案发布,我会接受。

标签: azure azure-active-directory azureservicebus azure-servicebus-queues


【解决方案1】:

服务主体是给定租户中的应用程序实例。 (多租户应用程序可以在许多租户中拥有服务主体,所有租户都引用单个应用程序注册。)

要将 Azure 角色授予应用程序,服务主体必须首先存在于租户中。检查应用注册的服务主体是否已存在于注册应用的同一租户中(如果不存在则创建它):

使用 Azure 门户:

  1. 导航到 Azure AD > 应用注册 >(应用)> 概述
  2. 本地目录中的托管应用程序标题下:
    • 如果您看到带有应用名称的链接,则服务主体已经存在。
    • 如果您看到“创建服务主体”链接,单击它将尝试创建服务主体。

使用 Azure CLI:

az ad sp show --id {app-id}
az ad sp create --id {app-id}

使用 Azure AD PowerShell:

Get-AzureADServicePrincipal -Filter "appId eq '{app-id}'"
New-AzureADServicePrincipal -AppId "{app-id}"

【讨论】:

  • 我有一个类似的问题,“应用程序权限类型”被禁用。但是服务主体存在。当我导航到 Azure AD > 应用程序注册 >(应用程序)> 概述 > 本地目录中的托管应用程序时:存在一个超链接,指示已创建服务主体。你能帮我弄清楚我可能会错过什么吗?谢谢。
猜你喜欢
  • 2018-06-13
  • 2022-01-17
  • 2016-04-20
  • 1970-01-01
  • 2021-01-22
  • 2021-10-04
  • 2021-02-27
  • 2019-05-10
  • 1970-01-01
相关资源
最近更新 更多