受控線上端點的驗證

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

本文說明線上端點內容中身分識別和權限的概念。 我們首先會討論支援 Azure RBACMicrosoft Entra ID。 根據 Microsoft Entra 身分識別的目的,我們將其稱為使用者身分識別端點身分識別

使用者身分識別是 Microsoft Entra ID,可供您用來建立端點及其部署,或用來與端點或工作區進行互動。 換句話說,如果身分識別向端點、部署或工作區發出要求,則可將身分識別視為使用者身分識別。 使用者身分識別需要適當的權限,才能在端點或工作區上執行控制平面和資料平面作業。

端點身分識別是 Microsoft Entra ID,可在部署中執行使用者容器。 換句話說,如果身分識別與端點相關聯,並用於部署的使用者容器,則稱為端點身分識別。 端點身分識別也需要適當的權限,使用者容器才能視需要與資源互動。 例如,端點身分識別需要適當的權限,才能從 Azure Container Registry 提取映像,或與其他 Azure 服務進行互動。

一般而言,使用者身分識別和端點身分識別會有不同的權限需求。 如需管理身分識別和權限的詳細資訊,請參閱如何驗證線上端點的用戶端。 如需自動為秘密新增額外權限的特殊案例詳細資訊,請參閱使用者身分識別的其他權限

限制

受控線上端點支援使用 Microsoft Entra ID 驗證 (aad_token)。 針對 Kubernetes 線上端點,您可以使用金鑰或 Azure Machine Learning 權杖 (aml_token)。

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

當您使用 Microsoft 帳戶登入 Azure 租用戶 (例如,使用 az login) 時,您完成使用者驗證步驟 (通常稱為 authn),並決定您的身分識別為使用者身分。 現在,假設您想要在工作區下建立線上端點,則您需要適當的權限才能這樣做。 這是授權 (通常稱為 authz) 所在的位置。

控制平面作業

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

控制平面作業的驗證

針對控制平面作業,您有一種方式可以向工作區驗證用戶端:使用 Microsoft Entra 權杖

根據您的使用案例,您可以選擇數個驗證工作流程來取得此權杖。 您的使用者身分識別也必須有適當的 Azure 角色型存取控制 (Azure RBAC) 允許存取您的資源。

控制平面作業的授權

針對控制平面作業,您的使用者身分識別必須有適當的 Azure 角色型存取控制 (Azure RBAC) 允許存取您的資源。 具體而言,針對線上端點和部署的 CRUD 作業,您需要身分識別以透過下列動作指派角色:

作業 必要的 Azure RBAC 角色 指派角色的範圍
在線上端點和部署上建立/更新作業 擁有者、參與者或允許下列權限的任何角色:Microsoft.MachineLearningServices/workspaces/onlineEndpoints/write 工作區
刪除線上端點和部署上的作業 擁有者、參與者或允許下列權限的任何角色:Microsoft.MachineLearningServices/workspaces/onlineEndpoints/delete 工作區
透過 Azure Machine Learning Studio 在線上端點和部署上建立/更新/刪除作業 擁有者、參與者或允許下列權限的任何角色:Microsoft.Resources/deployments/write 工作區所屬的資源群組
讀取線上端點和部署上的作業 擁有者、參與者或允許下列權限的任何角色:Microsoft.MachineLearningServices/workspaces/onlineEndpoints/read 工作區
從工作區擷取 Azure Machine Learning 權杖 (aml_token),以叫用線上端點 (受控和 Kubernetes) 擁有者、參與者或允許下列權限的任何角色:Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action endpoint
從工作區擷取金鑰以叫用線上端點 (受控和 Kubernetes) 擁有者、參與者或允許下列權限的任何角色:Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action endpoint
重新產生線上端點的金鑰 (受控和 Kubernetes) 擁有者、參與者或允許下列權限的任何角色:Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action endpoint
擷取 Microsoft Entra 權杖 (aad_token) 以叫用受控線上端點 不需要角色。 不適用

注意

登入後,您即可直接從 Microsoft Entra ID 擷取 Microsoft Entra 權杖 (aad_token),且您不需要工作區的額外 Azure RBAC 權限。

強制存取預設秘密存放區時,使用者身分識別的其他權限

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

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

  • 如果使用者身分識別沒有從工作區連線讀取秘密的權限,但其嘗試使用 SAI 來建立端點,並將端點的旗標設定為強制存取預設秘密存放區,則會拒絕端點建立。

  • 同樣地,如果使用者身分識別沒有從工作區連線讀取秘密的權限,但其嘗試使用 SAI 在端點底下建立部署,並將端點的旗標設定為強制存取預設秘密存放區,則會拒絕部署建立。

當 (1) 端點是以 UAI 建立, (2) 旗標並未設定為強制存取預設秘密存放區時,即使端點使用 SAI,您的使用者身分識別也不需要權限即可從工作區連線讀取秘密。 在此情況下,端點身分識別不會自動授與讀取秘密的權限,但您仍可以視需要指派適當的角色,以手動方式向端點身分識別授與此權限。 不論是以自動還是手動方式完成角色指派,如果您將環境變數對應至部署定義中的秘密參考,則仍會觸發秘密擷取和插入,且其會使用端點身分識別來執行此動作。

如需管理 Azure Machine Learning 工作區授權的詳細資訊,請參閱管理 Azure Machine Learning 的存取權

如需關於秘密插入的詳細資訊,請參閱在線上端點中插入秘密

資料平面作業

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

資料平面作業的驗證

針對資料平面作業,您可以選擇三種方式來驗證用戶端,以將要求傳送至端點的評分 URI:

  • 索引鍵
  • Azure Machine Learning 權杖 (aml_token)
  • Microsoft Entra 權杖 (aad_token)

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

資料平面作業的授權

針對資料平面作業,僅在端點設定為使用 Microsoft Entra 權杖 (aad_token) 的情況下,您的使用者身分識別才必須有適當的 Azure 角色型存取控制 (Azure RBAC) 允許存取您的資源。 具體而言,針對線上端點和部署的資料平面作業,您需要身分識別以透過下列動作指派角色:

作業 必要的 Azure RBAC 角色 指派角色的範圍
使用金鑰或 Azure Machine Learning 權杖 (aml_token) 叫用線上端點。 不需要角色。 不適用
使用 Microsoft Entra 權杖 (aad_token) 叫用受控線上端點。 擁有者、參與者或允許下列權限的任何角色:Microsoft.MachineLearningServices/workspaces/onlineEndpoints/score/action endpoint
使用 Microsoft Entra 權杖 (aad_token) 叫用受控線上端點。 不需要角色。 不適用

端點身分識別所需的權限

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

  • 針對系統指派的身分識別,當您建立端點時,會自動建立身分識別,且會自動指派具有基本權限 (例如 Azure Container Registry 提取權限和儲存體 Blob 資料讀者) 的角色。
  • 針對使用者指派的身分識別,您必須先建立身分識別,然後在建立端點時,將其與端點產生關聯。 您也會負責視需要將適當的角色指派給 UAI。

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

如果端點身分識別是系統指派的身分識別,則為方便起見,會將某些角色指派給端點身分識別。

角色 描述 自動角色指派的條件
AcrPull 允許端點身分識別從與工作區相關聯的 Azure Container Registry (ACR) 提取映像。 端點身分識別是系統指派的身分識別 (SAI)。
Storage Blob Data Reader 允許端點身分識別從工作區的預設資料存放區讀取 Blob。 端點身分識別是系統指派的身分識別 (SAI)。
AzureML Metrics Writer (preview) 允許端點身分識別將計量寫入工作區。 端點身分識別是系統指派的身分識別 (SAI)。
Azure Machine Learning Workspace Connection Secrets Reader1 允許端點身分識別從工作區連線讀取秘密。 端點身分識別是系統指派的身分識別 (SAI)。 端點是使用旗標建立,以強制存取預設秘密存放區。 建立端點的使用者身分識別有相同權限可從工作區連線讀取秘密。 2

1 如需 Azure Machine Learning Workspace Connection Secrets Reader 角色的詳細資訊,請參閱將權限指派給身分識別

2 即使端點身分識別為 SAI,只要未設定強制旗標或使用者身分識別沒有權限,此角色就沒有自動角色指派。 如需詳細資訊,請參閱如何使用秘密插入部署線上端點

如果端點身分識別是使用者指派的身分識別,則沒有自動角色指派。 在此情況下,您必須視需要以手動方式將角色指派給端點身分識別。

選擇授權的權限和範圍

Azure RBAC 可讓您使用特定範圍的一組允許和/或拒絕動作來定義及指派角色。 您可以根據您的業務需求自訂這些角色和範圍。 下列範例可做為起點,並可視需要進行擴充。

使用者身分識別的範例

  • 若要控制上一個控制平面作業資料表以及資料平面作業資料表中所列的所有作業,您可以考慮使用內建角色,AzureML Data Scientist其中包含權限動作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,請考慮使用包含權限資料動作 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read 的內建角色 Storage Blob Data Reader

如需控制平面作業指導方針的相關詳細資訊,請參閱管理 Azure Machine Learning 的存取權。 如需角色定義、範圍和角色指派的相關詳細資訊,請參閱 Azure RBAC。 若要了解指派角色的範圍,請參閱了解 Azure RBAC 的範圍