【问题标题】:How to create a multi-tenant Service Principal in Azure using Terraform如何使用 Terraform 在 Azure 中创建多租户服务主体
【发布时间】:2021-04-18 03:32:37
【问题描述】:

我在一个租户中有一个服务主体,需要访问另一个租户中的 Azure 容器注册表。但是,我不确定如何为其创建 azurerm_role_assignment。有没有办法将服务主体配置为多租户,以便相应地在两个租户中分配角色?

【问题讨论】:

标签: azure azure-active-directory terraform terraform-provider-azure azure-rm


【解决方案1】:

首先在 terraform 中为 azure ad 应用程序和服务主体设置 available_to_other_tenants = true

既然服务主体存在于您的租户中,将服务主体创建到另一个租户中的最快方法是使用admin consent

https://login.microsoftonline.com/{tenant-id}/adminconsent?client_id={client-id}

{tenant-id} 替换为“另一个租户”的真实租户ID。 {client-id} 是 azure 广告应用或服务主体的应用 ID。

在浏览器中访问网址。使用“另一个租户”的管理员帐户登录以接受权限。然后将在“另一个租户”中创建服务主体。

现在您可以为在“另一个租户”中创建的新服务主体(它与原始服务主体不同,它是多租户应用程序的工作方式)创建 azurerm_role_assignemnt

【讨论】:

  • 嘿,唯一的问题是服务主体将获得整个租户的管理员同意,这绝对不可行。如果这可以在没有管理员同意的情况下完成,那将是完美的。
  • @AkashMasand 请注意,如果您没有为原始服务主体分配任何权限,“另一个租户”中的新服务主体也没有权限。您可以控制权限。最重要的是多租户应用程序的工作原理。更多详情来自docs.microsoft.com/en-us/azure/active-directory/develop/…
  • @AkashMasand 否。如果在该租户中使用新的服务主体,管理员同意是不可避免的。正如我所提到的,这就是多租户应用程序的工作方式。如果不接受,则不能使用多租户应用。
  • @AkashMasand 当我们说多租户应用程序时,这并不意味着您租户中的服务主体访问其他租户中的数据。实际上是将新的服务主体(具有相同的应用程序 ID)添加到其他租户并使用它来访问该租户中的数据。无论您使用什么方法添加新的服务主体,当您使用它进行身份验证时,都需要经过同意过程。使用管理员同意端点是使其工作的最快方法。
  • @AkashMasand 没关系。只需将其设置为https://localhost/ 即可进行测试。
猜你喜欢
  • 1970-01-01
  • 2020-11-11
  • 2022-01-21
  • 2021-08-27
  • 2020-05-15
  • 1970-01-01
  • 2017-06-17
  • 2019-05-28
  • 1970-01-01
相关资源
最近更新 更多