在多个Azure租户资源上运行Python脚本使用哪个Azure账户?
我正在测试一个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}")
参考: