教學:在 Python 應用程式中使用 Key Vault 參考

在這個教學中,你會學習如何在 Python 應用程式中使用 App Configuration 實作 Key Vault 參考。 它是建立在快速入門中介紹的網頁應用程式之上。 在繼續之前,請先完成 「建立帶有應用程式配置的 Python 應用程式 」。

在本教學課程中,您將瞭解如何:

  • 建立可參考 Key Vault 中儲存之值的應用程式組態金鑰。
  • 從 Python 應用程式中取得此金鑰的值。

先決條件

建立金鑰保存庫

  1. 登入 Azure 入口網站,然後選取 [ 建立資源]。

  2. 在 [搜尋] 方塊中輸入 Key Vault。 在結果清單中,選取 [金鑰保存庫]。

  3. 在 [金鑰保存庫] 頁面上,選取 [建立]。

  4. 在 [ 建立金鑰保存庫 ] 頁面上,輸入下列資訊:

    • 訂閱:選擇一個訂閱方案。
    • 針對 資源群組:輸入現有資源群組的名稱,或選取 [ 新建] ,然後輸入資源群組名稱。
    • 針對 金鑰保存庫名稱:輸入唯一名稱。
    • 對於 區域:選擇一個位置。
  5. 對於其他選項,請使用預設值。

  6. 選擇 檢閱 + 創建。

  7. 系統驗證並顯示您的輸入之後,選取 建立。

此時,您的 Azure 帳戶是唯一獲得授權可存取此新保存庫的帳戶。

將祕密新增至 Key Vault

在保存庫中新增一個祕密,以測試 Key Vault 的擷取功能。 這個秘密稱為 Message,其值為「來自金鑰庫的問候」。

  1. 在 [金鑰保存庫資源] 功能表上,選取 [物件>秘密]。

  2. 選取 產生/匯入。

  3. 在 [建立秘密 ] 對話方塊中,輸入下列值:

    • 對於上傳選項:輸入手動。
    • 針對 Name: 輸入 Message。
    • 針對 秘密值:輸入 Hello from Key Vault。
  4. 對於其他選項,請使用預設值。

  5. 選取 ,創建。

將 Key Vault 參考新增至應用程式組態

  1. 請登入Azure portal。 選取 [ 所有資源],然後選取您的 App Configuration 存放區。

  2. 選取組態探索器。

  3. 選取 [+ 建立]>[金鑰保存庫參考],然後指定下列值:

    • 金鑰:輸入 TestApp:設定:KeyVaultMessage。
    • 標籤:將此值保留空白。
    • 訂閱、 資源群組與 金鑰保險庫:輸入你在前一節建立的金鑰金庫對應的數值。
    • 祕密:選取您在上一節中所建立、名為 Message 的祕密。

將您的應用程式存取權授與 Key Vault

你的應用程式使用 DefaultAzureCredential 同時驗證到應用程式組態和金鑰庫。 這個憑證會自動與 Azure 中的受管理身份以及本地的開發者憑證相容。

  1. 授予你的身份權限以存取金鑰庫。 將 金鑰庫秘密使用者 角色指派給你的使用者帳號或管理身份:

    az role assignment create --role "Key Vault Secrets User" --scope /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.KeyVault/vaults/<KeyVaultName> --assignee <AzureAdUserOrManagedIdentity>
    
  2. 授予你的身份權限以存取應用程式設定。 指派 應用程式設定資料讀取者 角色:

    az role assignment create --role "App Configuration Data Reader" --scope /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.AppConfiguration/configurationStores/<AppConfigurationStoreName> --assignee <AzureAdUserOrManagedIdentity>
    

更新您的程式碼,以使用 Key Vault(金鑰保管庫)引用

  1. 請執行以下指令安裝所需的套件:

    pip install azure-appconfiguration-provider azure-identity
    
  2. 建立一個稱為 AZURE_APPCONFIG_ENDPOINT 的環境變數。 將其值設定為應用程式組態存放區的端點。 你可以在 Azure 入口網站的 Overview blade 找到該端點。

    setx AZURE_APPCONFIG_ENDPOINT "endpoint-of-your-app-configuration-store"
    

    重新啟動命令提示字元,讓變更生效。

  3. 更新你的 Python 應用程式檔案以載入 Key Vault 參考資料。 建立或更新一個名為 app.py 的檔案:

    from azure.appconfiguration.provider import load
    from azure.identity import DefaultAzureCredential
    import os
    
    endpoint = os.environ.get("AZURE_APPCONFIG_ENDPOINT")
    credential = DefaultAzureCredential()
    
    # Connect to Azure App Configuration and resolve Key Vault references.
    config = load(
        endpoint=endpoint,
        credential=credential,
        keyvault_credential=credential,
    )
    
    # Access configuration values, including resolved Key Vault references.
    print(config["TestApp:Settings:KeyVaultMessage"])
    

    參數 keyvault_credential 指示提供者在解析金鑰庫參考時使用該憑證。 同 DefaultAzureCredential 一個實例同時用於應用程式設定與金鑰庫驗證。

    備註

    如果您的 Key Vault 參考指向多個需要不同認證的金鑰保存庫,則可以改用 keyvault_client_configs 參數,為每個保存庫提供個別認證。 欲了解更多資訊,請參閱 Python 提供者參考資料。

  4. 執行應用程式:

    python app.py
    

    你會看到你在 App 設定中輸入的訊息。 您也會看到您在 Key Vault 中輸入的訊息,該訊息已透過 Key Vault 參考解析取得。

清理資源

如果您不想繼續使用本文中建立的資源,請刪除在此處建立的資源群組,以避免產生費用。

這很重要

刪除資源群組是無法回復的動作。 資源群組和其中的所有資源都將被永久刪除。 請確定您不會誤刪錯誤的資源群組或資源。 如果您是在包含其他您想保留的資源的資源群組中建立了本文的資源,請從各個資源的窗格中逐一刪除資源,而不要刪除整個資源群組。

  1. 登入 Azure 入口網站,然後選取 [資源群組]。
  2. 在 [依名稱篩選] 方塊中,輸入您資源群組的名稱。
  3. 在結果清單中,選取資源群組名稱以查看概觀。
  4. 選擇 ,刪除資源群組。
  5. 系統將會要求您確認是否刪除資源群組。 輸入您資源群組的名稱以進行確認,然後選取 [刪除]。

不久後,系統便會刪除該資源群組及其所有的資源。

下一步

在此教學課程中,您建立了參考 Key Vault 中儲存之值的應用程式組態金鑰。 欲了解更多關於 Azure App Configuration 的 Python 提供者,請參閱 Python 提供者參考文件。