使用开发人员帐户在本地开发期间向 Azure 服务验证 Python 应用的身份

在本地开发期间,应用程序需要向 Azure 进行身份验证才能使用不同的 Azure 服务。 使用以下方法之一在本地进行身份验证:

本文介绍如何在 Azure 标识库支持的工具中使用开发人员帐户进行身份验证。 在前面的部分中,你将了解:

  • 如何使用 Microsoft Entra 组有效地管理多个开发人员帐户的权限。
  • 如何将角色分配给开发人员帐户以限定权限范围。
  • 如何登录到受支持的本地开发工具。
  • 如何通过应用代码使用开发人员帐户进行身份验证。

支持身份验证的开发人员工具

若要使用开发人员的 Azure 凭据在本地开发期间向 Azure 进行身份验证的应用,开发人员必须从以下开发人员工具之一登录到 Azure:

  • Azure CLI
  • Azure Developer CLI
  • Azure PowerShell
  • Visual Studio Code

Azure 标识库可以检测开发人员是否从其中一个工具登录。 然后,该库可通过工具获取 Microsoft Entra 访问令牌,以将应用作为登录用户向 Azure 进行身份验证。

此方法利用开发人员的现有 Azure 帐户来简化身份验证过程。 但是,开发人员帐户拥有的权限可能比应用需要的权限更多,因此超出了应用在生产环境中运行时使用的权限。 作为替代方法,可以创建在本地开发期间使用的应用程序服务主体,其权限范围仅限应用所需的访问权限。

创建用于本地开发的Microsoft Entra 组

创建Microsoft Entra 组来封装应用在本地开发中所需的角色(权限),而不是将角色分配给单个服务主体对象。 此方法具有以下优势:

  • 每个开发人员在组级别都分配了相同的角色。
  • 如果应用需要新角色,只需将角色添加到应用的组中。
  • 如果新开发人员加入团队,则会为开发人员创建一个新的应用程序服务主体并将其添加到组中,确保开发人员有权处理应用。
  1. 导航到 Azure 门户中 Microsoft Entra ID 概述页。

  2. 从左侧菜单中选择 “所有组 ”。

  3. “组 ”页上,选择“ 新建组”。

  4. “新建组 ”页上,填写以下表单字段:

    • “组类型”:选择“安全性”。
    • 组名称:输入包含对应用或环境名称的引用的组的名称。
    • 组说明:输入用于解释该组目的的说明。

    显示如何在 Azure 门户中创建组的屏幕截图。

  5. 在“成员”下选择“未选择成员”链接,以将成员添加到组中。

  6. 在打开的浮出控件面板中,搜索之前创建的服务主体,并从筛选的结果中选择它。 选择面板底部的 “选择 ”按钮以确认你的选择。

  7. 选择“新建组”页底部的“创建”以创建组并返回到“所有组”页。 如果未看到列出的新组,请稍等片刻并刷新页面。

将角色分配给组

接下来,确定您的应用在何种资源上需要哪些角色(权限),并将这些角色分配给您创建的 Microsoft Entra 组。 可以在资源、资源组或订阅范围内为组分配角色。 此示例演示如何在资源组范围内分配角色,因为大多数应用将其所有 Azure 资源分组到单个资源组中。

  1. 在 Azure 门户中,导航到包含应用的资源组的 “概述 ”页。

  2. 在左侧导航栏中,选择“访问控制(IAM)”。

  3. “访问控制”(IAM) 页上,选择“ + 添加 ”,然后从下拉菜单中选择 “添加角色分配 ”。 “添加角色分配”页提供了多个选项卡来配置和分配角色。

  4. 在“ 角色 ”选项卡上,使用搜索框查找要分配的角色。 选择角色,然后选择“ 下一步”。

  5. 在“ 成员 ”选项卡上:

    • 对于 “分配对值的访问权限 ”,请选择“ 用户”、“组”或服务主体
    • 对于 “成员 ”值,选择 “+ 选择成员 ”以打开 “选择成员 ”浮出控件面板。
    • 搜索之前创建的Microsoft Entra 组,并从筛选的结果中选择它。 选择 “选择” 以选择组并关闭浮动面板。
    • 选择“成员”选项卡底部的“审阅 + 分配”。

    一张屏幕截图展示如何为 Microsoft Entra 组分配一个角色。

  6. 在“ 审阅 + 分配 ”选项卡上,选择页面底部的 “审阅 + 分配 ”。

使用开发人员工具登录到 Azure

若要使用 Azure 帐户进行身份验证,请选择以下方法之一:

使用 Visual Studio Code 的开发人员可以直接通过中转站通过编辑器通过其开发人员帐户进行身份验证。 使用 DefaultAzureCredentialVisualStudioCodeCredential 的应用随后可以使用此帐户通过无缝单一登录体验对应用请求进行身份验证。

  1. 在 Visual Studio Code 中,转到 “扩展 ”面板并安装 Azure 资源 扩展。 此扩展允许直接从 Visual Studio Code 查看和管理 Azure 资源。 它还使用内置的 Visual Studio Code Microsoft身份验证提供程序向 Azure 进行身份验证。

    显示 Azure 资源扩展的屏幕截图。

  2. 在 Visual Studio Code 中打开命令面板,然后搜索并选择 Azure:登录

    显示如何在 Visual Studio Code 中登录到 Azure 的屏幕截图。

    小窍门

    使用 Ctrl+Shift+P Windows/Linux 或 Cmd+Shift+P macOS 打开命令面板。

  3. azure-identity-broker Python 包添加到应用:

    pip install azure-identity-broker
    

从应用向 Azure 服务进行身份验证

Azure 标识库提供 TokenCredential 的实现,这些实现支持各种方案和Microsoft Entra 身份验证流。 前面的步骤演示如何在本地使用用户帐户时使用 DefaultAzureCredential 或特定的开发工具凭据。

实现代码

  1. azure 标识 包添加到应用程序:

    pip install azure-identity
    

    注意

    使用 VisualStudioCodeCredential时,还必须安装 azure-identity-broker 包:

    pip install azure-identity-broker
    

    为您的应用程序所需的 azure.identity 模块和 Azure 服务客户端模块添加必要的 import 语句。

  2. 请根据具体情况选择合适的凭据实现。

使用特定于开发工具的凭据

TokenCredential 对应于特定开发工具的实例传递给 Azure 服务客户端构造函数,例如 AzureCliCredential

from azure.identity import AzureCliCredential
from azure.storage.blob import BlobServiceClient

credential = AzureCliCredential()

blob_service_client = BlobServiceClient(
   account_url="https://<account-name>.blob.core.windows.net",
   credential=credential)

使用可用于任何开发工具的凭据

使用优化用于所有本地开发工具的DefaultAzureCredential实例。 此示例要求将环境变量 AZURE_TOKEN_CREDENTIALS 设置为 dev. 有关详细信息,请参阅 “排除凭据类型类别”。

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

credential = DefaultAzureCredential(require_envvar=True)

blob_service_client = BlobServiceClient(
   account_url="https://<account-name>.blob.core.windows.net",
   credential=credential)

小窍门

当团队使用多个开发工具通过 Azure 进行身份验证时,优先使用 DefaultAzureCredential 而不是工具特定的凭据。