在 Azure Machine Learning 作業中使用驗證認證祕密
適用於:Python SDK azure-ai-ml v2 (目前)
驗證資訊 (例如使用者名稱和密碼) 是秘密。 例如,若您連線至外部資料庫以查詢定型資料,則必須將使用者名稱和密碼傳送至遠端作業內容。 以純文字將此類值寫進定型指令碼中可能會洩露祕密,因此並不安全。
Azure Key Vault 可讓您安全地儲存和擷取祕密。 在此文章中,您將了解如何從在計算叢集上執行的定型作業擷取儲存在金鑰保存庫中的祕密。
重要
適用於機器學習的 Azure Machine Learning Python SDK v2 和 Azure CLI 延伸模組 v2 不提供設定或取得祕密的功能。 相反地,此文章中的資訊會使用適用於 Python 的 Azure Key Vault 祕密用戶端程式庫。
必要條件
遵循本文中的步驟之前,請確定您已滿足下列必要條件:
提示
此節中的許多必要條件都需要在包含資源的 Azure 訂用帳戶或 Azure 資源群組中的 [參與者]、[擁有者] 或對等的存取權。 您可能需要連絡 Azure 系統管理員,並讓他們執行這些動作。
Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。 試用免費或付費版本的 Azure Machine Learning。
Azure Machine Learning 工作區。 如果您沒有資源,請使用建立資源以開始使用一文中的步驟建立一個資源。
Azure Key Vault。 如果您使用建立資源以開始使用一文來建立工作區,則系統已為您建立金鑰保存庫。 您也可以使用快速入門:建立金鑰保存庫一文中的資訊,建立個別的金鑰保存庫執行個體。
提示
您不需要使用與工作區相同的金鑰保存庫。
(選用) 設定為使用受控識別的 Azure Machine Learning 計算叢集。 該叢集可以針對系統指派或使用者指派的受控識別進行設定。
如果您的作業在計算叢集上執行,請將儲存在金鑰保存庫中的祕密存取權授與計算叢集的受控識別。 或者,如果作業在無伺服器計算上執行,請將指定給作業的受控識別授與存取秘密的權限。 用來授與存取權的方法取決於金鑰保存庫的設定方式:
- Azure 角色型存取控制 (Azure RBAC):針對 Azure RBAC 設定時,請將受控識別新增至金鑰保存庫上的 [Key Vault 祕密使用者] 角色。
- Azure Key Vault 存取原則:設定為使用存取原則時,請新增能授與祕密 get 作業的原則,並將其指派給受控識別。
金鑰保存庫中的預存祕密值。 接著可以使用索引鍵來擷取此值。 如需詳細資訊,請參閱快速入門:從 Azure Key Vault 設定及擷取祕密。
提示
快速入門連結是聯結至使用 Azure Key Vault Python SDK 的步驟。 在左側導覽區域中的目錄中,是設定索引鍵之其他方式的連結。
取得密碼
在定型期間有兩種方式可以取得秘密:
- 使用與定型作業執行時所使用之計算資源相關聯的受控識別。
- 透過讓計算代表您執行作業,以使用您的身分識別。
將
azure-keyvault-secrets
和azure-identity
套件新增至對模型進行定型時所使用的 Azure Machine Learning 環境。 例如,透過將其新增至用來建置環境的 conda 檔案。環境是用來建置定型作業在計算叢集上執行的 Docker 映像。
從您的定型程式碼中,使用 Azure 身分識別 SDK 和 Key Vault 用戶端程式庫來取得受控識別認證,並驗證至金鑰保存庫:
from azure.identity import DefaultAzureCredential from azure.keyvault.secrets import SecretClient credential = DefaultAzureCredential() secret_client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
驗證之後,請使用 Key Vault 用戶端程式庫,透過提供相關聯的金鑰來擷取祕密:
secret = secret_client.get_secret("secret-name") print(secret.value)
相關內容
如需使用 Azure Machine Learning Python SDK v2 提交定型作業的範例,請參閱使用 Python SDK v2 將模型定型。