設定 Azure Machine Learning 與其他服務之間的驗證

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

Azure Machine Learning 是由多個 Azure 服務組成。 Azure Machine Learning 與其依賴的服務間有多種驗證方式。

  • Azure Machine Learning 工作區使用受控識別與其他服務通訊。 根據預設是系統指派的受控識別。 您也可以改用使用者指派的受控識別。
  • Azure Machine Learning 使用 Azure Container Registry (ACR),儲存用來定型和部署模型的 Docker 映像。 如果您允許 Azure Machine Learning 自動建立 ACR,它會啟用管理員帳戶
  • Azure Machine Learning 計算叢集使用受控識別,從 Azure Key Vault 擷取資料存放區的連線資訊,並從 ACR 提取 Docker 映像。 您也可以設定資料存放區的識別型存取,改用計算叢集的受控識別。
  • 根據資料儲存體服務和設定,資料存取可能透過多種路徑進行。 例如,資料存放區的驗證可能會使用帳戶金鑰、權杖、安全性主體、受控識別,或使用者身分識別。
  • 執行推斷時,受控線上端點可以使用受控識別存取 Azure 資源。 如需詳細資訊,請參閱從線上端點存取 Azure 資源

必要條件

遵循本文中的步驟之前,請確定您已滿足下列必要條件:

  • 若要指派角色,Azure 訂用帳戶的登入必須具有受控識別操作員角色,或其他授與必要動作的角色 (例如擁有者)。

  • 您必須熟悉建立和使用受控識別

Azure Container Registry 和身分識別類型

下表列出驗證至 Azure Container Registry 時的支援矩陣,視驗證方法和 Azure Container Registry公用網路存取組態而定。

驗證方法 已停用公用網路存取
已啟用 Azure Container Registry
公用網路存取
管理使用者
工作區系統指派的受控識別
將指派給身分識別的 ACRPull 角色工作區使用者指派的受控識別

使用者指派的受控識別

工作區

Azure 入口網站建立 Azure Machine Learning 工作區時,您可以新增使用者指派的受控識別。 建立工作區時,請使用下列步驟:

  1. 從 [基本] 頁面,選取您要搭配工作區使用的 Azure 儲存體帳戶、Azure Container Registry 和 Azure Key Vault。
  2. 從 [身分識別] 頁面,選取 [使用者指派的身分識別],然後選取要使用的受控識別。

Azure Machine Learning 工作區的使用者指派受控識別上需要下列 Azure RBAC 角色指派,才能存取工作區相關聯資源上的資料。

資源 權限
Azure Machine Learning 工作區 參與者
Azure 儲存體 參與者 (控制平面) + 儲存體 Blob 資料參與者 (資料平面,選用,以在 Azure Machine Learning 工作室中啟用資料預覽)
Azure Key Vault (使用 RBAC 權限模型時) 參與者 (控制平面) + Key Vault 系統管理員 (資料平面)
Azure Key Vault (使用存取原則權限模型時) 參與者 + 任何存取原則權限,還有清除作業
Azure Container Registry 參與者
Azure Application Insights 參與者

若要在使用者指派的受控識別上自動建立角色指派,您可以使用此 ARM 範本

提示

如果工作區具有用於加密的客戶自控金鑰,您可以傳入使用者指派的受控識別,以從儲存體向 Key Vault 驗證。 使用 user-assigned-identity-for-cmk-encryption (CLI) 或 user_assigned_identity_for_cmk_encryption (SDK) 傳入受控識別。 此受控識別與工作區主要使用者指派的受控識別可以相同或不同。

若要建立具有多個使用者指派身分識別的工作區,請使用下列其中一個方法:

適用於:Azure CLI ml 延伸模組 v2 (目前)

az ml workspace create -f workspace_creation_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

其中 workspace_creation_with_multiple_UAIs.yml 的內容如下:

location: <region name>
identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
storage_account: <storage acccount resource ID>
key_vault: <key vault resource ID>
image_build_compute: <compute(virtual machine) resource ID>
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

若要更新工作區的使用者指派身分識別,包括新增新的身分識別或刪除現有的身分識別,請使用下列其中一個方法:

適用於:Azure CLI ml 延伸模組 v2 (目前)

az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

其中 workspace_update_with_multiple_UAIs.yml 的內容如下:

identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

提示

若要新增 UAI,除了現有的 UAI 之外,您還可以在區段 user_assigned_identities 下指定新的 UAI 識別碼,需要它才能傳遞所有現有的 UAI 識別碼。
若要刪除一或多個現有的 UAI,您可以將需要保留的 UAI 識別碼放在區段 user_assigned_identities 下,其餘的 UAI 識別碼將會被刪除。
若要將身分識別類型從 SAI 更新為 UAI|SAI,您可以將類型從 "user_assigned" 變更為 "system_assigned, user_assigned"。

計算叢集

注意

Azure Machine Learning 計算叢集僅支援一個系統指派的身分識別,或多個使用者指派的身分識別,無法同時支援兩者。

預設受控身分識別是系統指派的受控身分識別,或第一個使用者指派的受控身分識別。

在執行期間,有兩種身分識別的應用程式:

  1. 系統會使用身分識別來設定使用者的儲存體裝載、容器登錄和資料存放區。

    • 在此情況下,系統會使用預設的受控識別。
  2. 您要套用身分識別,從提交作業的程式碼存取資源:

    • 在此情況下,請針對您要用來擷取認證的受控身分識別,提供對應的 client_id
    • 或是透過 DEFAULT_IDENTITY_CLIENT_ID 環境變數,取得使用者指派身分識別的用戶端識別碼。

    例如,若要使用預設受控身分識別來取得資料存放區的權杖:

    client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
    credential = ManagedIdentityCredential(client_id=client_id)
    token = credential.get_token('https://storage.azure.com/')
    

若要使用受控識別設定計算叢集,請使用下列其中一種方法:

適用於:Azure CLI ml 延伸模組 v2 (目前)

az ml compute create -f create-cluster.yml

其中 create-cluster.yml 內容如下:

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: user_assigned
  user_assigned_identities: 
    - resource_id: "identity_resource_id"

作為比較,下列 YAML 檔案的範例會建立使用系統指派受控識別的叢集:

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: system_assigned

如果您有現有的計算叢集,您可以在使用者管理和系統受控識別間變更。 下列範例示範如何變更設定:

使用者指派的受控識別

export MSI_NAME=my-cluster-identity
export COMPUTE_NAME=mycluster-msi

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Creating MSI $MSI_NAME"
# Get the resource id of the identity
IDENTITY_ID=$(az identity show --name "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]" || true)
if [[ -z $IDENTITY_ID ]]; then
    IDENTITY_ID=$(az identity create -n "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]")
fi
echo "MSI created: $MSI_NAME"
sleep 15 # Let the previous command finish: https://github.com/Azure/azure-cli/issues/8530


echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"
fi
az ml compute update --name "$COMPUTE_NAME" --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"

系統指派的受控識別

export COMPUTE_NAME=mycluster-sa

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute
fi

az ml compute update --name "$COMPUTE_NAME" --identity-type system_assigned

資料存放區

當您建立一個使用身分識別型資料存取的資料存放區時,系統會使用您的 Azure 帳戶 (Microsoft Entra 權杖) 來確認您有權限存取儲存體服務。 在身分識別型資料存取案例中,不會儲存任何驗證認證。 只有儲存體帳戶資訊會儲存在資料存放區中。

另外,資料存放區在工作區相關的金鑰保存庫中,使用認證型驗證快取連線資訊 (例如儲存體帳戶金鑰或 SAS 權杖)。 這種方法存在限制,因為其他工作區使用者只要有足夠的權限,便可擷取這些認證,所以對部分組織來說是安全性隱憂。

如需如何驗證資料存取的詳細資訊,請參閱資料管理文章。 如需設定資料的身分識別型存取資訊,請參閱建立資料存放區

有兩種情況,您可以在 Azure Machine Learning 中套用身分識別型資料存取。 當您使用機密資料,而且需要更細微的資料存取管理時,這些情況非常適合身分識別型存取:

  • 存取儲存體服務
  • 定型機器學習模型

身分識別型存取讓您使用角色型存取控制 (RBAC),限制使用者或計算資源等身分識別的資料存取權。

存取儲存體服務

您可以使用 Azure Machine Learning 資料存放區,透過身分識別型資料存取來連線儲存體服務。

當您使用身分識別型資料存取時,Azure Machine Learning 會提示您輸入 Microsoft Entra 權杖以進行資料存取驗證,而不是將認證保留在資料存放區中。 這種方法可讓您在儲存層級進行資料存取管理,並讓認證保持機密。

相同的行為適用於您透過本機電腦或計算執行個體的 Jupyter Notebook,以互動方式處理資料時。

注意

透過認證型驗證儲存的認證包括訂用帳戶識別碼、共用存取簽章 (SAS) 權杖,以及儲存體存取金鑰和服務主體資訊,例如用戶端識別碼和租用戶識別碼。

為了協助確保您安全地連線到 Azure 上的儲存體服務,Azure Machine Learning 要求您必須有權存取對應的資料儲存體。

警告

不支援跨租用戶存取儲存體帳戶。 如果您的案例需要跨租用戶存取權,請連絡 Azure Machine Learning 資料支援小組別名:amldatasupport@microsoft.com,取得自訂程式碼解決方案的協助。

身分識別型資料存取支援下列儲存體服務的連線。

  • Azure Blob 儲存體
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2

若要存取這些儲存體服務,您必須至少具有對於儲存體帳戶的儲存體 Blob 資料讀取者存取權。 只有儲存體帳戶擁有者可以透過 Azure 入口網站變更您的存取層級

使用受控識別在計算上存取定型作業的資料

特定機器學習案例使用私人資料。 此時,資料科學家可能無法以 Microsoft Entra 使用者的身分直接存取資料。 在此案例中,計算的受控識別可以用於資料存取驗證。 在此案例中,資料只能從執行定型作業的計算執行個體或機器學習計算叢集存取。 使用此方法時,管理員會授與計算執行個體或計算叢集受控識別在儲存體上的 Blob 資料讀者權限。 不需要將存取權授與個別資料科學家。

若要啟用以計算受控識別進行驗證:

  • 建立啟用受控識別的計算。 請參閱計算叢集小節,或若是計算執行個體,請參閱指派受控識別小節。

    重要

    如果計算執行個體也設定為 [閒置關機],除非受控識別有 Azure Machine Learning 工作區的 [參與者] 存取權,否則計算執行個體不會因為閒置而關機。 如需指派權限的詳細資訊,請參閱管理 Azure Machine Learning 工作區存取權

  • 在儲存體帳戶上授與計算受控識別至少儲存體 Blob 資料讀者的角色。

  • 建立啟用身分識別型驗證的資料存放區。 請參閱建立資料存放區

注意

為計算執行個體或叢集建立的系統受控識別名稱,格式為 Microsoft Entra ID 中的 /workspace-name/computes/compute-name。

啟用身分識別型驗證後,存取定型作業中的資料時,即預設使用計算受控識別。 您可以選擇性地使用下一節所述的步驟,透過使用者身分識別進行驗證。

如需針對儲存體設定 Azure RBAC 的相關資訊,請參閱角色型存取控制

使用使用者身分識別,在計算叢集上存取定型作業的資料

適用於:Azure CLI ml 延伸模組 v2 (目前)

Azure Machine Learning 計算叢集上定型時,您可以使用使用者 Microsoft Entra 權杖來向儲存體驗證。

此驗證模式可讓您:

  • 設定精細的權限,讓不同的工作區使用者可以存取儲存體帳戶內的不同儲存體帳戶或資料夾。
  • 讓資料科學家在儲存體系統上重複使用現有的權限。
  • 稽核儲存體存取,因為儲存體記錄會顯示用來存取資料的身分識別。

重要

此功能有下列限制

  • 功能支援透過 Azure Machine Learning CLI 和 Python SDK V2 提交的實驗,但不支援透過 ML 工作室。
  • 使用者身分識別和計算受控識別不能用於相同作業內的驗證。
  • 針對管線作業,我們建議在將在一個計算上執行的個別步驟層級設定使用者身分識別,而不是在根管線層級執行。 (雖然根管線和步驟層級都支援身分識別設定,但如果兩者都已設定,則步驟層級設定會優先。不過,對於包含管線元件的管線,必須在將執行的個別步驟上設定身分識別。在根管線或管線元件層級設定的身分識別將無法運作。因此,我們建議在個別步驟層級設定身分識別,以方便起見。)

下列步驟概述如何從 CLI 針對計算叢集上的定型作業,使用使用者身分識別來設定資料存取。

  1. 將儲存體資源的存取權授與使用者身分識別。 例如,授與您想要使用的特定儲存體的 StorageBlobReader 存取權,或是授與 Azure Data Lake Gen 2 儲存體中特定資料夾或檔案的 ACL 型權限。

  2. 建立 Azure Machine Learning 資料存放區,而不需儲存體帳戶的快取認證。 如果資料存放區有快取的認證,例如儲存體帳戶金鑰,則會使用這些認證,而不是使用者身分識別。

  3. 提交定型作業,並且將 identity 屬性設定為 type: user_identity,如下列作業規格中所示。 在定型作業期間,儲存體的驗證會透過提交作業的使用者身分識別進行。

    注意

    如果未指定 identity 屬性且資料存放區沒有快取的認證,則計算受控識別會成為後援選項。

    command: |
    echo "--census-csv: ${{inputs.census_csv}}"
    python hello-census.py --census-csv ${{inputs.census_csv}}
    code: src
    inputs:
    census_csv:
        type: uri_file 
        path: azureml://datastores/mydata/paths/census.csv
    environment: azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest
    compute: azureml:cpu-cluster
    identity:
    type: user_identity
    

下列步驟概述如何從 Python SDK 針對計算叢集上的定型作業,使用使用者身分識別來設定資料存取。

  1. 如以上針對 CLI 所述,授與資料存取並建立資料存放區。

  2. 提交定型作業,並將 identity 參數設定為 azure.ai.ml.UserIdentityConfiguration。 此參數設定可讓作業代表提交作業的使用者存取資料。

    from azure.ai.ml import command
    from azure.ai.ml.entities import Data, UriReference
    from azure.ai.ml import Input
    from azure.ai.ml.constants import AssetTypes
    from azure.ai.ml import UserIdentityConfiguration
    
    # Specify the data location
    my_job_inputs = {
        "input_data": Input(type=AssetTypes.URI_FILE, path="<path-to-my-data>")
    }
    
    # Define the job
    job = command(
        code="<my-local-code-location>", 
        command="python <my-script>.py --input_data ${{inputs.input_data}}",
        inputs=my_job_inputs,
        environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:9",
        compute="<my-compute-cluster-name>",
        identity= UserIdentityConfiguration() 
    )
    # submit the command
    returned_job = ml_client.jobs.create_or_update(job)
    

重要

在啟用使用者身分識別驗證的作業提交期間,程式碼快照集會受到總和檢查碼驗證的竄改保護。 如果您有現有的管線元件,而且想要使用它們搭配啟用使用者身分識別的驗證,您可能需要重新上傳它們。 否則,作業可能會在總和檢查碼驗證期間失敗。

使用虛擬網路

根據預設,Azure Machine Learning 無法與位於防火牆後方或虛擬網路中的儲存體帳戶進行通訊。

您可以將儲存體帳戶設定為只允許從特定虛擬網路內進行存取。 此設定需要額外的步驟,以確保資料不會在網路之外洩漏。 這種行為與認證型資料存取相同。 如需詳細資訊,請參閱如何防止資料外流

如果您的儲存體帳戶具有虛擬網路設定,這表示需要哪些身分識別類型和權限存取權。 例如,針對資料預覽和資料設定檔,虛擬網路設定會決定用來驗證資料存取的身分識別類型。

  • 在只允許特定 IP 和子網路存取儲存體的情況下,Azure Machine Learning 會使用工作區 MSI 來完成資料預覽和設定檔。

  • 如果您的儲存體是 ADLS Gen 2 或 Blob 且具有虛擬網路設定,客戶可以根據建立期間定義的資料存放區設定,使用使用者身分識別或工作區 MSI。

  • 如果虛擬網路設定為 [允許受信任服務清單上的 Azure 服務存取此儲存體帳戶],則使用工作區 MSI。

案例:沒有管理使用者的 Azure Container Registry

停用 ACR 的管理使用者後,Azure Machine Learning 會使用受控識別來組建並提取 Docker 映像。 在停用管理使用者的情況下,設定 Azure Machine Learning 使用 ACR 時,有兩個工作流程:

  • 允許 Azure Machine Learning 建立 ACR 執行個體,然後停用管理使用者。
  • 在已停用管理使用者的情況下,取用現有的 ACR。

具有自動建立 ACR 執行個體的 Azure Machine Learning

  1. 建立新的 Azure Machine Learning 工作區。

  2. 執行一個需要 Azure Container Registry 的動作。 例如,教學課程:定型您的第一個模型

  3. 取得叢集建立的 ACR 名稱。

    適用於:Azure CLI ml 延伸模組 v2 (目前)

    az ml workspace show -w <my workspace> \
    -g <my resource group>
    --query containerRegistry
    

    此命令會傳回類似下列文字的值。 您只需要文字的最後部分,也就是 ACR 執行個體名稱:

    /subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
    
  4. 更新 ACR 以停用管理使用者:

    az acr update --name <ACR instance name> --admin-enabled false
    

自備 ACR

如果訂用帳戶原則不允許 ACR 管理使用者,您應該先建立不具有管理使用者的 ACR,然後將 ACR 與工作區產生關聯。 此外,如果您現有的 ACR 已停用管理使用者,則可以將 ACR 附加至工作區。

從 Azure CLI 建立 ACR 而不設定 --admin-enabled 引數,或從 Azure 入口網站建立,而不啟用管理使用者。 然後,在建立 Azure Machine Learning 工作區時,指定 ACR 的 Azure 資源識別碼。 下列範例會示範如何建立使用現有的 ACR 的新 Azure Machine Learning 工作區:

提示

若要取得 --container-registry 參數的值,請使用 az acr show 命令來顯示 ACR 的資訊。 id 欄位 ACR 的資源識別碼。

適用於:Azure CLI ml 延伸模組 v2 (目前)

az ml workspace create -w <workspace name> \
-g <workspace resource group> \
-l <region> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

建立具有受控識別的計算,以存取 Docker 映像來定型

若要存取工作區 ACR,請建立機器學習計算叢集並啟用系統指派的受控識別。 在建立計算時,您可以從 Azure 入口網站或工作室啟用身分識別,或從 Azure CLI 使用下列命令來啟用。 如需詳細資訊,請參閱對計算叢集使用受控識別

適用於:Azure CLI ml 延伸模組 v2 (目前)

az ml compute create --name cpu-cluster --type <cluster name>  --identity-type systemassigned

工作區 ACR 的 ACRPull 角色會自動授與受控識別,以允許提取 Docker 映像來定型。

注意

在建立工作區 ACR 之前,如果您先建立計算,則必須手動指派 ACRPull 角色。

使用 Docker 映像來推斷

如先前所述設定不具有管理使用者的 ACR 之後,您不需要 Azure Kubernetes Service (AKS) 中的系統管理金鑰,就可以存取 Docker 映像來推斷。 當您建立 AKS 或將 AKS 附加至工作區時,工作區 ACR 的 ACRPull 存取權會自動指派給叢集的服務主體。

注意

如果您自備 AKS 叢集,叢集必須已啟用服務主體,而不是受控識別。

案例:使用私人 Azure Container Registry

Azure Machine Learning 使用的 Docker 基礎映像,預設來自 Microsoft 管理的公用存放庫。 然後會根據這些映像,建立定型或推斷環境。 如需詳細資訊,請參閱什麼是 ML 環境?

若要使用企業內部的自訂基礎映像,您可以使用受控識別來存取私人 ACR。 有兩個使用案例:

  • 使用基礎映像依原樣定型。
  • 以自訂映像為基礎,建立 Azure Machine Learning 受控映像。

將 Docker 基礎映像提取至機器學習計算叢集來依原樣定型

如先前所述,建立機器學習計算叢集並啟用系統指派的受控識別。 然後,決定受控識別的主體識別碼。

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

az ml compute show --name <cluster name> -w <workspace> -g <resource group>

您可以選擇更新計算叢集,以指派使用者指派的受控識別:

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

az ml compute update --name <cluster name> --user-assigned-identities <my-identity-id>

若要允許計算叢集提取基礎映像,請將私人 ACR 的 ACRPull 角色授與受控服務識別

適用於:Azure CLI ml 延伸模組 v2 (目前)

az role assignment create --assignee <principal ID> \
--role acrpull \
--scope "/subscriptions/<subscription ID>/resourceGroups/<private ACR resource group>/providers/Microsoft.ContainerRegistry/registries/<private ACR name>"

最後,建立環境,並在環境 YAML 檔案中指定基礎映像位置。

適用於:Azure CLI ml 延伸模組 v2 (目前)

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.
az ml environment create --file <yaml file>

您限在可在定型作業中使用環境。

將 Azure Machine Learning 受控環境加入私人 ACR 的基礎映像中來定型或推斷

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

在此情況下,Azure Machine Learning 服務根據您從私人 ACR 提供的基礎映像,建立定型或推斷環境。 因為是在工作區 ACR 上使用 ACR 工作進行映像組建工作,您必須執行更多步驟以允許存取。

  1. 建立使用者指派的受控識別,並將私人 ACR 的 ACRPull 存取權授與身分識別。

  2. 將上一個步驟中所述使用者指派的受控識別上的受控識別操作員角色授與工作區受控識別。 此角色允許工作區將使用者指派的受控識別指派給 ACR 工作,以建立受控環境。

    1. 針對工作區系統指派的受控識別,取得其主體識別碼:

      適用於:Azure CLI ml 延伸模組 v2 (目前)

      az ml workspace show -w <workspace name> -g <resource group> --query identityPrincipalId
      
    2. 授與受控識別操作員角色:

      az role assignment create --assignee <principal ID> --role managedidentityoperator --scope <user-assigned managed identity resource ID>
      

      使用者指派的受控識別資源識別碼是使用者所指派身分識別的 Azure 資源識別碼,格式為 /subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned managed identity name>

  3. 使用 az ml connection 命令,在工作區連線中,指定使用者指派的受控識別的外部 ACR 和用戶端識別碼。 此命令接受提供連線資訊的 YAML 檔案。 下列範例示範指定受控識別的格式。 以您的受控識別值,取代 client_idresource_id 值:

    適用於:Azure CLI ml 延伸模組 v2 (目前)

    name: test_ws_conn_cr_managed
    type: container_registry
    target: https://test-feed.com
    credentials:
      type: managed_identity
      client_id: client_id
      resource_id: resource_id
    

    下列命令示範如何使用 YAML 檔案與工作區建立連線。 將 <yaml file><workspace name><resource group> 取代為您設定的值:

    az ml connection create --file <yml file> --resource-group <resource group> --workspace-name <workspace>
    
  4. 完成設定之後,您就可以在建立定型或推斷的環境時,使用私人 ACR 中的基礎映像。 下列程式碼片段示範如何在環境定義中指定基礎映像 ACR 和映像名稱:

    適用於Python SDK azure-ai-ml v2 (目前)

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: private-acr-example
    image: <acr url>/pytorch/pytorch:latest
    description: Environment created from private ACR.
    

下一步