線上部署中的秘密插入 (預覽)
適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)
線上端點內容中的秘密插入是從秘密存放區擷取秘密 (例如 API 金鑰),並將其插入使用者容器 (在線上部署內執行) 中的流程。 最後,您可以透過環境變數安全地存取秘密,從而讓執行評分指令碼的推斷伺服器或使用 BYOC (自備容器) 部署方法帶來的推斷堆疊能夠使用。
重要
此功能目前處於公開預覽。 此預覽版本沒有服務等級協定,不建議用於處理生產工作負載。 可能不支援特定功能,或可能已經限制功能。
如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
問題說明
當您建立線上部署時,可能需要使用來自部署內的秘密來存取外部服務。 其中一些外部服務包括 Microsoft Azure OpenAI 服務、Azure AI 服務和 Azure AI 內容安全性。
若要使用秘密,您必須找到一種方法,以安全地將其傳遞至在部署內執行的使用者容器。 不建議您在部署定義中包含秘密,因為這種做法會在部署定義中將秘密公開。
更好的方法是將秘密儲存在秘密存放區中,然後從部署內安全地擷取秘密。 不過,此方法會帶來各自的挑戰:部署應該如何向秘密存放區進行自我驗證,以擷取秘密。 因為線上部署會使用端點身分識別 (這是受控識別) 來執行您的使用者容器,因此您可以使用 Azure RBAC 來控制端點身分識別的權限,並允許端點從秘密存放區擷取秘密。 使用此方法需要您執行下列工作:
- 將正確的角色指派給端點身分識別,以便其可從秘密存放區讀取秘密。
- 實作部署的評分邏輯,讓其使用端點的受控識別從秘密存放區擷取秘密。
雖然這個使用受控識別的方法是擷取及插入秘密的安全方式,但透過秘密插入功能插入秘密會進一步簡化工作區連線和金鑰保存庫擷取秘密的程序。
與此端點建立關聯的受控識別
線上部署會使用與端點相關聯的受控識別來執行您的使用者容器。 此受控識別稱為端點身分識別,是支援 Azure RBAC 的 Microsoft Entra ID。 因此,您可以將 Azure 角色指派給身分識別,以控制執行作業所需的權限。 此端點身分識別可以是系統指派的身分識別 (SAI),或是使用者指派的身分識別 (UAI)。 您可以決定建立端點時要使用這些身分識別中的哪一種。
- 針對系統指派的身分識別,當您建立端點時,會自動建立身分識別,且會自動指派具有基本權限 (例如 Azure Container Registry 提取權限和儲存體 Blob 資料讀者) 的角色。
- 針對使用者指派的身分識別,您必須先建立身分識別,然後在建立端點時,將其與端點建立關聯。 您也會負責視需要將適當的角色指派給 UAI。
如需使用端點受控識別的詳細資訊,請參閱如何使用受控識別從端點存取資源,以及使用受控識別來與外部服務進行互動的範例。
端點身分識別的角色指派
秘密存放區需要下列角色:
- 針對工作區下儲存在工作區連線中的秘密:
Workspace Connections
會提供清單秘密 API (預覽),要求呼叫 API 的身分識別具有指派給身分識別的Azure Machine Learning Workspace Connection Secrets Reader
角色 (或對等角色)。 - 針對儲存在外部 Microsoft Azure Key Vault 中的秘密:Key Vault 會提供取得祕密版本 API,要求呼叫 API 的身分識別具有指派給身分識別的
Key Vault Secrets User
角色 (或對等角色)。
實作秘密插入
一旦從秘密存放區擷取秘密 (例如 API 金鑰) 後,有兩種方式可將秘密插入線上部署內執行的使用者容器:
- 使用受控識別自行插入秘密。
- 使用秘密插入功能插入秘密。
這兩種方法皆牽涉兩個步驟:
- 首先,使用端點身分識別,從秘密存放區擷取秘密。
- 其次,將秘密插入您的使用者容器內。
透過使用受控識別進行秘密插入
在部署定義中,您必須使用端點身分識別,從秘密存放區呼叫 API。 您可以在評分指令碼或您在 BYOC 容器中執行的殼層指令碼中實作此邏輯。 若要透過使用受控識別來實作秘密插入,請參閱使用受控識別與外部服務互動的範例。
透過秘密插入功能進行秘密插入
若要使用秘密插入功能,請在部署定義中,將工作區連線或 Key Vault 中的秘密 (您想要參考的秘密) 對應至環境變數。 這種方法不需要您在評分指令碼或在 BYOC 容器中執行的殼層指令碼中撰寫任何程式碼。 若要將工作區連線或 Key Vault 中的秘密對應至環境變數,則必須符合下列條件:
- 在端點建立期間,如果已定義線上端點來強制存取預設秘密存放區 (目前工作區下的工作區連線),則在端點下建立部署的使用者身分識別應具有從工作區連線讀取秘密的權限。
- 部署所使用的端點身分識別應具有從工作區連線或 Key Vault 讀取秘密的權限,如部署定義中所參考。
注意
- 如果已成功使用 SAI 建立端點,並將旗標設定為強制存取預設秘密存放區,則端點會自動擁有工作區連線的權限。
- 若端點使用 UAI,或是未設定強制存取預設秘密存放區的旗標,則端點身分識別可能沒有工作區連線的權限。 在這種情況下,您必須手動將工作區連線的角色指派給端點身分識別。
- 端點身分識別不會自動接收外部 Key Vault 的權限。 如果您使用 Key Vault 做為秘密存放區,則必須手動將 Key Vault 的角色指派給端點身分識別。
如需使用秘密插入的詳細資訊,請參閱使用秘密插入將機器學習模型部署至線上端點 (預覽)。