Azure Python SDK - 使用 CLI 凭据连接到 USGov 失败?

标签 azure azure-sdk-python azure-gov

我已经尝试使用 AzureCliCredential(),如前面的问题/文档中所述 - 这在普通的 azure 云中效果很好。如果我使用 USGov 云 (portal.azure.us),相同的代码不会返回任何内容;我尝试过http跟踪,看起来它仍然指向management.azure.com而不是management.core.usgovcloudapi.net - 但它没有说什么。几乎所有需要订阅范围的内容都告诉我订阅不存在,但“az 帐户列表”正确显示了所有订阅。我已经将所有 python 模块更新到最新版本..不确定目前出了什么问题,有什么想法吗?

总结一下,程序是:

  1. 使用 az login --use-device-code 登录
  2. 访问 microsoft.com/deviceloginus(usgov 设备登录)并输入代码
  3. shell 已通过身份验证
  4. az 帐户列表 显示我的所有订阅
  5. 运行测试代码以列出订阅 - 没有得到任何结果。跟踪显示,如果我强制将 base_url 设置为 https://management.usgovcloudapi.net,事情仍然指向 management.azure.com。 ,我收到 InvalidAuthenticationTokenAudience 异常。

我正在使用的代码:


import logging
from azure.identity import AzureCliCredential
from azure.mgmt.subscription import SubscriptionClient

credential = AzureCliCredential()
client = SubscriptionClient(credential=credential, logging_enable=True, base_url="https://management.usgovcloudapi.net/")
logging.basicConfig(filename='test_sub_debug.log', level=logging.DEBUG)
aba_logger = logging.getLogger('azure.mgmt.subscription')
aba_logger.setLevel(logging.DEBUG)
sub_list = client.subscriptions.list()
for subscription in sub_list:
    print(subscription)

# (obviously remove the base_url= parameter for the default behavior)

最佳答案

我能够使其正常工作,但当我注销 AZ CLI 时,它仍然能够进行身份验证,因此我无法确定它是否使用相同的凭据。这是包含更多详细信息的文章:https://learn.microsoft.com/en-us/azure/developer/python/azure-sdk-sovereign-domain

import os
from msrestazure.azure_cloud import AZURE_US_GOV_CLOUD as CLOUD
from azure.mgmt.resource import SubscriptionClient
from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential(authority=CLOUD.endpoints.active_directory)

subscription_client = SubscriptionClient(
    credential,
    base_url=CLOUD.endpoints.resource_manager,
    credential_scopes=[CLOUD.endpoints.resource_manager + "/.default"])

sub_list = subscription_client.subscriptions.list()
for subscription in sub_list:
    print(subscription)

关于Azure Python SDK - 使用 CLI 凭据连接到 USGov 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71772443/

相关文章:

php - PHP 中的内存缓存

python - 是否可以从 Azure Python SDK 获取 ASC 位置?

azure - 为了使其适用于 Azure Govcloud,需要对 Go SDK 的 API 调用进行哪些​​更改

azure - 在 Azure SQL 数据仓库中使用 Polybase 技术,我可以查询以 Parquet Hadoop 格式存储的数据吗?

azure - Azure数据工厂可以将数据发布到Rest API吗

azure - 使用 Azure SDK 将 VHD 上传到 Azure

azure - 您可以邀请 Azure 政府云 AAD 租户中的 guest 用户吗?

azure - 使用非托管磁盘创建 Azure VM

azure - 从付费 Azure SQL 数据库恢复为免费

Azure 指标 : dtu_used does not accept zero dimension case