【问题标题】:Access to Azure KeyVault from an app in another Azure ActiveDirectory tenant从另一个 Azure ActiveDirectory 租户中的应用访问 Azure KeyVault
【发布时间】:2017-03-17 00:09:51
【问题描述】:

我有一个 Azure 订阅,其中包含我的 Web 应用程序的所有资源。我创建了另一个 ActiveDirectory 租户,在租户中定义了一个 AD 应用程序,并将其设置为我的 AppService 的身份验证提供程序。现在,我想在我的订阅中创建一个 KeyVault 资源并授予我的 AD 应用程序对 KeyVault 的访问权限。

Azure KeyVault 文档说要运行以下 PS 命令:

Set-AzureRmKeyVaultAccessPolicy -VaultName <KVName> -ObjectId <ClientId> -PermissionsToKeys get

但是,这会返回以下错误:

Cannot find the Active Directory object '<ClientId>' in tenant '<MyDefaultTenantId>'

问题似乎是我的 KV 与我的 AD 应用程序不在同一个 AD 租户中,但 Set-AzureRmKeyVaultAccessPolicy 命令似乎没有 TenatId 参数。

有什么方法可以实现我想要的吗? 我是否必须将我的 AD 应用程序移动到我的默认 AD 租户?

【问题讨论】:

  • 你在这里使用的clientid是什么? objectid 应该是与目标订阅中的广告应用程序对应的服务主体 ID

标签: azure azure-active-directory azure-keyvault


【解决方案1】:

没有。密钥保管库将仅接受其所在租户的身份。

【讨论】:

  • tbh,这令人失望,因为我认为我可以在我的订阅中设置不同的 AD 租户作为各种应用服务的身份验证提供程序;这样我就可以将每个应用服务的用户分开。
  • 同一租户@Morteza 可以有多个订阅
【解决方案2】:

我也有同样的情况和要求(这 8 个小时永远不会回来 :-) 但您可以通过调用特定 URL 并继续授予应用程序身份在密钥保管库中的必要权限来轻松获得此同意

总之……

GET https://login.microsoftonline.com/{tenant}/adminconsent?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&state=12345
&redirect_uri=http://localhost/myapp/permissions

始终在私人浏览器窗口中运行,以免在浏览器的日常使用中陷入不同的身份。

在这里阅读更多: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-scopes#using-the-admin-consent-endpoint

【讨论】:

【解决方案3】:

您当然可以将您的应用程序设为multi-tenant,同意将应用程序放入包含 Key Vault 的订阅中的 Azure AD 目录,然后将应用程序添加为有权访问门户中的 Key Vault 的主体。

然后,您的应用程序可以代表该目录中的用户或使用客户端凭据以自己的名义访问 Key Vault。

【讨论】:

  • 您能否告诉我如何为目录 X 中定义的 AD 应用程序到目录 Y 执行同意流程?
  • 看看微软的这个例子:github.com/Azure-Samples/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 2020-08-01
  • 1970-01-01
  • 2018-04-18
  • 2017-01-28
  • 2020-08-28
  • 2020-06-17
相关资源
最近更新 更多