在本地開發期間,使用開發者帳號將 Python 應用程式驗證至 Azure 服務

在本機開發期間,應用程式必須向 Azure 進行驗證,才能使用不同的 Azure 服務。 可透過以下方法之一進行本地驗證:

本文說明如何使用開發者帳號,搭配 Azure Identity 函式庫支援的工具進行認證。 在以下章節中,你會學到:

  • 如何使用 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。

    小提示

    在 Windows/Linux 上使用 Ctrl+Shift+P,或在 macOS 上使用 Cmd+Shift+P,開啟命令選擇區。

  3. azure-identity-broker 的 Python 套件加入您的應用程式:

    pip install azure-identity-broker
    

從您的應用程式向 Azure 服務進行驗證

Azure Identity 函式庫提供支援各種情境及 Microsoft Entra 認證流程的 TokenCredential 實作。 以下步驟示範如何在本地處理使用者帳號時使用 DefaultAzureCredential 或特定的開發工具憑證。

實作程序代碼

  1. 新增 azure-identity 套件及任何 app 需要的 Azure 服務客戶端套件:

    pip install azure-identity azure-storage-blob
    

    注意

    使用 VisualStudioCodeCredential時,你也必須安裝以下 azure-identity-broker 套件:

    pip install azure-identity-broker
    

    加入import模組azure.identity所需的語句,以及你的應用程式所需的 Azure 服務客戶端模組。

  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。 如需詳細資訊,請參閱 排除認證類型類別

在執行應用程式前先設定環境變數:

export 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 而非工具專用的憑證。