从多个租户获取虚拟机详细信息

时间:2019-05-16 03:53:21

标签: azure

我们正在开发一个应用程序,任何客户都可以使用Azure活动目录登录。 我们需要某种方式来读取用户租户信息,然后获取与其订阅关联的所有VM。

1 个答案:

答案 0 :(得分:0)

也许您可以将应用程序注册为多租户应用程序,以便外部Azure AD中的用户将能够登录您的应用程序。有关多租户应用程序的详细信息,请参考此doc

要获取用户Azure订阅中的VM信息,您需要实现一个过程,该过程允许您的用户(应具有Azure订阅所有者角色)向用户授予对多租户应用的订阅的至少读取VM权限,以便您的应用可以获取所需的用户VM信息。

我将解释您要求的孔加工的详细信息:

第1步:

您可以仅参考this doc来部署多站点应用程序。如果来自其他Azure AD(在此处称为B租户)的用户想要使用您的多租户应用程序,则B租户的管理员应在您的应用中注册(此过程中,您可以查看详细信息here

第二步:

一旦AD管理员完成了注册过程,您的多租户应用将出现在B租户的“企业应用”中。您可以使用多租户应用ID找到它: enter image description here 此步骤仅用于检查您的应用是否已成功驻留客户的租户。

Step3

此步骤将向您的多租户应用授予与租户B的某些Azure订阅有关的VM相关权限。您应该让Azure订阅管理员(具有所有者角色)授予此权限: 转到订阅刀片: enter image description here

在多租户应用程序中添加“虚拟机贡献者”角色(这是一个内置角色,具有所有VM管理权限,但具有读取权限),您可以使用其应用程序ID查找您的应用程序: enter image description here 选择它,然后单击“保存”,此步骤完成。

第4步

尝试从B租户的某些Azure订阅中获取VM信息。 这一步,我将使用REST API来获取您所需的VM信息。 从B租户获取访问令牌:

Request URL:
POST https://login.microsoftonline.com/<-B tenant name->/oauth2/token

Request header:
Content-Type: application/x-www-form-urlencoded

Request Body: 
client_id=<-your multi teant app id->&
client_secret=<-client secret of your multi tenant app->&
grant_type=client_credentials&
resource=https://management.azure.com/

您可以通过下面的REST API获取access_token以获取所需的VM信息:

Request URL:
GET https://management.azure.com/subscriptions/<-your users' subscription ID->/resourceGroups/<-the resource group you want to query ->/providers/Microsoft.Compute/virtualMachines?api-version=2018-06-01

Request Header : 
Authorization: Bearer <-access token->

我已经接受了测试,对我有用: enter image description here

希望有帮助!