共用方式為


在線端點的驗證和授權

適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)

本文說明 Azure 機器學習 在線端點內容中身分識別和許可權的概念。 本文討論 Microsoft支援角色型訪問控制和許可權的 Entra 標識碼 。 Microsoft Entra 標識符稱為 使用者身 分識別或 端點身分識別,視其用途而定。

  • 使用者身分識別是Microsoft Entra識別符,可建立端點及其部署,或與端點或工作區互動。 使用者身分識別會發出對端點、部署或工作區的要求。 使用者身分識別需要適當的許可權,才能在端點或工作區上執行 控制平面 和數據 平面 作業。

  • 端點身分識別是 Microsoft Entra ID,可在部署中執行使用者容器。 使用者容器會使用端點身分識別進行部署。 端點身分識別也需要適當的許可權,使用者容器才能視需要與資源互動。 例如,端點身分識別需要適當的許可權,才能從 Azure Container Registry 提取映射,或與其他 Azure 服務互動。

使用者身分識別和端點身分識別具有個別的許可權需求。 如需管理身分識別和權限的詳細資訊,請參閱如何驗證線上端點的用戶端

重要

Microsoft僅限受控在線端點支援 Entra ID aad_token 驗證。 針對 Kubernetes 線上端點,您可以使用金鑰或 Azure 機器學習 aml_token

授權的許可權和範圍

Azure 角色型存取控制 (RBAC) 可讓您使用特定範圍上一組允許和/或拒絕的動作來定義和指派角色。 您可以根據您的業務需求自訂這些角色和範圍。 下列範例可作為您可以視需要擴充的起點。

針對使用者身分識別:

  • 若要管理控制平面和數據平面作業,您可以使用內建角色 AzureML 資料科學家,其中包含權限動作 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*/actions
  • 若要控制特定端點的作業,請使用範圍 /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>/onlineEndpoints/<endpointName>
  • 若要控制工作區中所有端點的作業,請使用範圍 /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>

針對端點身分識別,若要允許使用者容器讀取 Blob,內建角色 記憶體 Blob 資料讀取器 會包含權限資料動作 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read

如需管理 Azure 機器學習 工作區授權的詳細資訊,請參閱管理 Azure 機器學習 的存取權。 如需角色定義、範圍和角色指派的相關詳細資訊,請參閱 Azure RBAC。 若要了解指派角色的範圍,請參閱了解 Azure RBAC 的範圍

使用者身分識別所需的權限

例如,當您使用 Microsoft 帳戶登入 Azure 租使用者時,az login您可以完成驗證的使用者驗證步驟,以判斷身分識別為使用者。 若要在 Azure 機器學習 工作區下建立在線端點,您的身分識別需要適當的許可權,也稱為授權或 authz。 使用者身分識別需要適當的許可權,才能執行 控制平面 和數據 平面 作業。

控制平面作業

控制平面作業會控制並變更線上端點。 這些作業包括線上端點和線上部署的建立、讀取、更新及刪除 (CRUD) 作業。 針對線上端點和部署,執行控制平面作業的要求會移至 Azure Machine Learning 工作區。

控制平面作業的驗證

針對控制平面作業,您可以使用 Microsoft Entra 令牌向工作區驗證用戶端。 根據您的使用案例,您可以選擇數個驗證工作流程來取得此權杖。 使用者身分識別也必須指派適當的 Azure RBAC 角色來存取資源。

控制平面作業的授權

針對控制平面作業,您的使用者身分識別必須指派適當的 Azure RBAC 角色,才能存取您的資源。 具體而言,針對在線端點和部署的 CRUD 作業,使用者身分識別必須針對下列動作指派角色:

作業 必要的 Azure RBAC 角色 範圍
在在線端點和部署上執行建立/更新作業。 擁有者參與者或任何允許的角色 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/write 工作區
在在線端點和部署上執行刪除作業。 擁有者參與者或任何允許的角色 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/delete 工作區
透過 Azure Machine Learning 工作室 在在線端點和部署上執行建立/更新/刪除作業。 擁有者參與者或任何允許的角色 Microsoft.Resources/deployments/write 包含工作區的資源群組
在在線端點和部署上執行讀取作業。 擁有者參與者或任何允許的角色 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/read 工作區
擷取 Azure 機器學習 令牌 (aml_token) 以從工作區叫用受控和 Kubernetes 在線端點。 擁有者參與者或任何允許的角色 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action 端點
從工作區擷取用來叫用在線端點的密鑰(受控和 Kubernetes)。 擁有者參與者或任何允許的角色 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action 端點
重新產生受控和 Kubernetes 在線端點的金鑰。 擁有者參與者或任何允許的角色 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action 端點
擷取Microsoft Entra aad_token 以叫用受控在線端點。 不需要角色 不適用*

* 登入后,您可以直接從 Microsoft Entra 標識符擷取 Microsoft Entra aad_token ,如此一來,該作業就不需要工作區的 Azure RBAC 許可權。

使用者身分識別的許可權,以強制存取預設秘密存放區

如果您使用 秘密插入 功能,而且設定 旗標在建立端點時強制存取預設秘密存放區,則您的使用者身分識別必須具有從工作區連線讀取秘密的許可權。

端點身分識別可以是系統指派的身分識別(SAI)或使用者指派的身分識別(UAI)。 使用 SAI 建立端點並設定強制存取預設秘密存放區的旗標時,使用者身分識別必須具有在建立端點和部署時從工作區連線讀取秘密的許可權。 此限制可確保只有具有權限可讀取祕密的使用者身分識別,才能將讀取秘密的權限授與端點身分識別。

如果使用者身分識別沒有從工作區連線讀取秘密的許可權,會嘗試使用 SAI 建立端點或部署,而且端點的旗標會設定為強制存取預設秘密存放區、端點或部署建立遭到拒絕。

如果使用 UAI 建立端點,或端點使用 SAI,但未設定強制存取預設秘密存放區的旗標,則使用者身分識別不需要能夠從工作區連線讀取秘密以建立端點或部署。 在此情況下,端點身分識別不會自動授與讀取秘密的許可權,但可以藉由指派適當的角色手動授與此許可權。

不論角色指派是自動還是手動,如果您將環境變數對應至端點或部署定義中的秘密參考,就會觸發秘密擷取和插入。 秘密插入功能會使用端點身分識別來執行秘密擷取和插入。 如需關於秘密插入的詳細資訊,請參閱在線上端點中插入秘密

資料平面作業

數據平面作業不會變更在線端點,但使用與端點互動的數據。 資料平面作業的範例之一,是將評分要求傳送至線上端點並從中取得回應。 針對線上端點和部署,執行資料平面作業的要求會移至端點的評分 URI。

資料平面作業的驗證

針對數據平面作業,您可以選擇下列方式來驗證用戶端,以將要求傳送至端點評分 URI:

  • 機碼
  • Azure 機器學習 aml_token
  • Microsoft Entra aad_token

如需如何驗證用戶端以進行資料平面作業的詳細資訊,請參閱如何針對線上端點驗證用戶端

資料平面作業的授權

針對數據平面作業,您的使用者身分識別需要適當的 Azure RBAC 角色,只有在端點設定為使用 Microsoft entra aad_token時,才允許存取您的資源。 針對在線端點和部署上的數據平面作業,使用者身分識別必須具有指派下列動作的角色:

作業 必要的 Azure RBAC 角色 範圍
使用 或 Azure 機器學習 aml_token叫用key在線端點。 不需要角色。 不適用
使用 Microsoft Entra aad_token叫用受控在線端點。 擁有者參與者或任何允許的角色 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/score/action 端點
使用 Microsoft Entra aad_token叫用 Kubernetes 在線端點。 Kubernetes 線上端點不支援用於資料平面作業的 Microsoft Entra 權杖。 不適用

端點身分識別所需的權限

線上部署會使用端點身分識別 (也就是與端點相關聯的受控識別) 來執行您的使用者容器。 端點身分識別是支援 Azure RBAC 的 Microsoft Entra 識別碼 。 因此,您可以將 Azure 角色指派給端點身分識別,以控制執行作業所需的權限。 此端點身分識別可以是 SAI 或 UAI。 您可以在建立端點時決定要使用 SAI 還是 UAI。

  • 針對 SAI,當您建立端點時,會自動建立身分識別,以及具有基本許可權的角色,例如 Container Registry 提取許可權 AcrPull記憶體 Blob 數據讀取器,會自動指派。
  • 針對UAI,您必須先建立身分識別,然後在建立端點時將其與端點產生關聯。 您也會負責視需要將適當的角色指派給 UAI。

端點身分識別的自動角色指派

如果端點身分識別是 SAI,則為了方便起見,會將下列角色指派給端點身分識別。

角色 描述 自動角色指派的條件
AcrPull 允許端點身分識別從與工作區相關聯的 Azure 容器登錄提取映像 端點身分識別是 SAI。
儲存體 Blob 資料讀者 允許端點身分識別從工作區的預設數據存放區讀取 Blob 端點身分識別是 SAI。
AzureML 計量寫入器 (預覽) 允許端點身分識別將計量寫入工作區 端點身分識別是 SAI。
Azure 機器學習 工作區連線秘密讀取器 允許端點身分識別從工作區連線讀取秘密 端點身分識別是 SAI,而端點建立具有旗標,可強制執行預設秘密存放區的存取權。 建立端點的使用者身分識別也有權從工作區聯機讀取秘密。
  • 如果端點身分識別是 SAI,且未設定強制旗標,或使用者身分識別沒有讀取秘密的許可權,則 Azure 機器學習 工作區連線密碼讀取者角色沒有自動角色指派。 如需詳細資訊,請參閱如何使用秘密插入部署線上端點
  • 如果端點身分識別是UAI,則 Azure 機器學習 工作區聯機秘密讀取者角色沒有自動角色指派。 在此情況下,您必須視需要以手動方式將角色指派給端點身分識別。

如需 Azure 機器學習 工作區連線秘密讀取者角色的詳細資訊,請參閱將許可權指派給身分識別。