如何选择Azure账户实现多租户资源的Python标签检查脚本运行?
跨多租户访问Azure资源的可行方案
方案1:基于多租户授权的个人Azure账户
- 确保你的个人账户在每个目标租户中都拥有身份权限(比如访客用户、Reader角色等)
- 在Python脚本中针对每个租户单独完成身份验证:
- 使用
azure-identity库的InteractiveBrowserCredential,每次请求不同租户时指定tenant_id参数,触发对应租户的登录流程或调用缓存的令牌 - 示例代码片段:
from azure.identity import InteractiveBrowserCredential from azure.mgmt.resource import ResourceManagementClient # 按租户ID分组CSV中的资源,批量处理 for tenant_id, resources in grouped_resources.items(): credential = InteractiveBrowserCredential(tenant_id=tenant_id) resource_client = ResourceManagementClient(credential, "<目标订阅ID>") # 执行资源标签检查逻辑
- 使用
- 这种方式无需依赖Azure CLI的登录状态,直接在脚本内完成多租户认证切换
方案2:多租户服务主体
- 将服务主体配置为多租户应用:在Azure AD注册应用时,把"支持的账户类型"设置为"任何组织目录中的账户"
- 在每个目标租户中,给这个多租户服务主体分配对应资源的访问权限(比如Reader角色)
- 脚本中使用
ClientSecretCredential,针对不同租户传入对应的tenant_id即可完成认证:from azure.identity import ClientSecretCredential from azure.mgmt.resource import ResourceManagementClient client_id = "<你的应用客户端ID>" client_secret = "<你的应用客户端密钥>" for tenant_id, resources in grouped_resources.items(): credential = ClientSecretCredential( tenant_id=tenant_id, client_id=client_id, client_secret=client_secret ) resource_client = ResourceManagementClient(credential, "<目标订阅ID>") # 执行资源标签检查逻辑
方案3:Azure CLI多账户管理
- 利用Azure CLI的多账户缓存能力,将多个租户的账户添加到本地列表:
- 登录主租户账户:
az login - 添加其他租户账户:
az account add --tenant <租户ID> --username <你的账户名> - 脚本中使用
AzureCliCredential,每次访问不同租户前通过az account set --tenant <租户ID>切换上下文,或直接在AzureCliCredential中指定tenant_id参数
- 登录主租户账户:
核心注意事项
- 无论采用哪种方案,每个目标租户都必须为你的身份(用户或服务主体)分配足够权限(至少需要Reader角色来读取资源标签)
- 处理CSV时建议先按租户ID分组资源,减少重复认证次数,提升脚本执行效率
内容的提问来源于stack exchange,提问作者Louey
相关产品推荐
相关产品推荐

