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

iaqfqrcu  于 2023-03-19  发布在  其他
关注(0)|答案(2)|浏览(116)

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

guykilcj

guykilcj1#

也许你可以将你的应用程序注册为多租户应用程序,以便外部Azure AD中的用户能够登录你的应用程序。有关多租户应用程序的详细信息,请参阅此doc
要获取用户Azure订阅中的VM信息,你需要实现一个流程,让你的用户(应具有Azure订阅所有者角色)至少授予用户订阅你的多租户应用的读取VM权限,以便你的应用可以获取你需要的用户VM信息。
我将详细解释您要求的孔工艺:

步骤1:

你只需参考this doc即可部署多站点应用。如果来自其他Azure AD(我们在此处称之为B租户)的用户希望使用你的多租户应用,则B租户的管理员应在你的应用中注册(此过程的详细信息请参阅此处)

第二步:

AD管理员完成注册过程后,您的多租户应用程序将显示在B租户的“企业应用程序”中。您可以使用多租户应用程序ID找到它:x1c 0d1x此步骤仅用于检查您的应用是否已成功驻留客户的租户。

第三步

此步骤将向你的多租户应用授予租户B的特定Azure订阅的VM相关权限。你应该让Azure订阅管理员(具有所有者角色)授予此权限:转到订购刀片式服务器:

将“虚拟机贡献者”角色(这是一个内置角色,它拥有所有VM管理权限,而不是阅读权限)添加到您的多租户应用,您可以使用其应用ID找到您的应用:

选中后点击“保存”,此步骤完成。

步骤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->

我已经在我这边测试过了,它对我很有效:

希望能有所帮助!

guicsvcw

guicsvcw2#

1.我们已在tenant-1上配置了多租户AD-APP
1.同一AD-APP在tenant-2的VM-1上具有贡献者权限
1.我们尝试列出tenant-1和tenant-2的所有VM。是否可以仅在API上传递tenant-1?或者,它将仅列出tenant-1的VM,因为我们使用tenant-1调用API?

相关问题