在多个Azure租户资源上运行Python脚本使用哪个Azure账户?

0 投票
1 回答
69 浏览
提问于 2025-04-14 16:39

我正在测试一个Python脚本,这个脚本会检查Azure中每个资源的标签。这个脚本从一个CSV文件中获取资源列表,文件里列出了来自不同租户的资源。

为了测试,我使用的是我自己的Azure账户,这个账户只在一个租户里,所以当我尝试访问其他租户的资源时,脚本就会失败。

我应该用什么账户或解决方案,才能让我的脚本获取不同租户的信息呢?

有没有什么想法?

我尝试用az login登录到每个租户的不同账户,但系统只保留了我最后登录的账户的令牌,所以用Azure CLI无法同时登录多个账户。

我想用服务主体也是一样的,因为它只在一个租户里被识别。

1 个回答

0

是的,你可以使用一个多租户的应用程序来访问多个 Azure 租户上的资源。

首先,在TenantA中创建一个多租户 Microsoft Entra ID 应用程序

在此输入图片描述

然后,通过使用New-AzADServicePrincipal -ApplicationId <AppIdOFMultitenantappFromTenantA>命令,在TenantB中创建企业应用程序。

接下来,为TenantB中的企业应用程序分配读取者角色

在此输入图片描述

要访问TenantB的资源,请按照下面的方式登录:

在此输入图片描述

az login --service-principal -u ServicePrincipalID -p "ClientSecret" -t TenantBID

我使用下面的示例代码来获取TenantB的资源和资源标签:

from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient

credential = DefaultAzureCredential()
resource_client = ResourceManagementClient(credential, "b83c1ed3-c5b6-44fb-b5ba-2b83a074c23f")
resources = resource_client.resources.list()

for resource in resources:
    print(f"Resource name: {resource.name}")
    print(f"Resource tags: {resource.tags}")

在此输入图片描述

参考:

使用多租户应用程序进行 Azure 身份验证 | Cloud Journey | Medium

撰写回答