Udostępnij za pośrednictwem


Konfigurowanie uwierzytelniania między usługą Azure Machine Learning i innymi usługami

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)

Usługa Azure Machine Learning jest oparta na wielu usługach platformy Azure. Istnieje wiele sposobów uwierzytelniania między usługą Azure Machine Learning a usługami, na których polega.

  • Obszar roboczy usługi Azure Machine Learning używa tożsamości zarządzanej do komunikowania się z innymi usługami. Domyślnie jest to tożsamość zarządzana przypisana przez system. Zamiast tego można użyć tożsamości zarządzanej przypisanej przez użytkownika.
  • Usługa Azure Machine Learning używa usługi Azure Container Registry (ACR) do przechowywania obrazów platformy Docker używanych do trenowania i wdrażania modeli. Jeśli zezwolisz usłudze Azure Machine Learning na automatyczne tworzenie usługi ACR, włączy konto administratora.
  • Klaster obliczeniowy usługi Azure Machine Learning używa tożsamości zarządzanej do pobierania informacji o połączeniu magazynów danych z usługi Azure Key Vault i ściągania obrazów platformy Docker z usługi ACR. Można również skonfigurować dostęp oparty na tożsamościach do magazynów danych, które zamiast tego będą używać tożsamości zarządzanej klastra obliczeniowego.
  • Dostęp do danych może odbywać się wzdłuż wielu ścieżek w zależności od usługi magazynu danych i konfiguracji. Na przykład uwierzytelnianie w magazynie danych może używać klucza konta, tokenu, podmiotu zabezpieczeń, tożsamości zarządzanej lub tożsamości użytkownika.
  • Zarządzane punkty końcowe online mogą używać tożsamości zarządzanej do uzyskiwania dostępu do zasobów platformy Azure podczas wnioskowania. Aby uzyskać więcej informacji, zobacz Uzyskiwanie dostępu do zasobów platformy Azure z punktu końcowego online.

Wymagania wstępne

Przed wykonaniem kroków opisanych w tym artykule upewnij się, że masz następujące wymagania wstępne:

  • Aby przypisać role, identyfikator logowania dla subskrypcji platformy Azure musi mieć rolę Operator tożsamości zarządzanej lub inną rolę, która przyznaje wymagane akcje (takie jak Właściciel).

  • Musisz zapoznać się z tworzeniem tożsamości zarządzanych i pracy z nimi.

Typy tożsamości obszaru roboczego

Obszar roboczy usługi Azure Machine Learning używa tożsamości zarządzanej do komunikowania się z innymi usługami. W przypadku usługi Azure Machine Learning jest obsługiwanych wiele typów tożsamości.

Typ tożsamości zarządzanej Tworzenie przypisania roli Purpose
Przypisane przez system (SAI) Zarządzane przez firmę Microsoft Cykl życia związany z zasobem; użycie pojedynczego zasobu; proste, aby rozpocząć pracę
Przypisana przez system+przypisana przez użytkownika (SAI+UAI) Zarządzane przez Ciebie Niezależny cykl życia tożsamości przypisanej przez użytkownika, użycie wielu zasobów, kontroluje najmniej uprzywilejowany dostęp. Uzyskiwanie dostępu do danych w zadaniach szkoleniowych.

Po utworzeniu obszaru roboczego z typem tożsamości SAI można go zaktualizować do SAI+UAI, ale nie z powrotem z SAI+UAI do SAI. Do tego samego obszaru roboczego można przypisać wiele tożsamości przypisanych przez użytkownika.

Usługa Azure Container Registry i typy tożsamości

Ta tabela zawiera listę macierzy obsługi podczas uwierzytelniania w usłudze Azure Container Registry w zależności od metody uwierzytelniania i konfiguracji dostępu do sieci publicznej usługi Azure Container Registry.

Metoda uwierzytelniania Dostęp do
sieci publicznej jest wyłączony
Włączono dostęp do sieci publicznej usługi Azure Container Registry
Administrator
Tożsamość zarządzana przypisana przez system obszaru roboczego
Tożsamość
zarządzana przypisana przez użytkownika obszaru roboczego z rolą ACRPull przypisaną do tożsamości

Tożsamość zarządzana przypisana przez użytkownika

Obszar roboczy

Tożsamość zarządzaną przypisaną przez użytkownika można dodać podczas tworzenia obszaru roboczego usługi Azure Machine Learning z poziomu witryny Azure Portal. Podczas tworzenia obszaru roboczego wykonaj następujące czynności:

  1. Na stronie Podstawowe wybierz konto usługi Azure Storage, usługę Azure Container Registry i usługę Azure Key Vault, której chcesz używać z obszarem roboczym.
  2. Na stronie Tożsamość wybierz pozycję Tożsamość przypisana przez użytkownika, a następnie wybierz tożsamość zarządzaną do użycia.

Następujące przypisania ról RBAC platformy Azure są wymagane w tożsamości zarządzanej przypisanej przez użytkownika do obszaru roboczego usługi Azure Machine Learning w celu uzyskania dostępu do danych w zasobach skojarzonych z obszarem roboczym.

Zasób Uprawnienie
Obszar roboczy usługi Azure Machine Learning Współautor
Azure Storage Współautor (płaszczyzna sterowania) i współautor danych obiektu blob usługi Storage (płaszczyzna danych, opcjonalnie, aby włączyć podgląd danych w usłudze Azure Machine Learning Studio)
Azure Key Vault (w przypadku korzystania z modelu uprawnień RBAC) Współautor (płaszczyzna sterowania) + Administrator usługi Key Vault (płaszczyzna danych)
Azure Key Vault (w przypadku korzystania z modelu uprawnień zasad dostępu) Współautor i wszystkie uprawnienia zasad dostępu oprócz operacji przeczyszczania
Azure Container Registry Współautor
Azure Application Insights Współautor

Aby zautomatyzować tworzenie przypisań ról w tożsamości zarządzanej przypisanej przez użytkownika, możesz użyć tego szablonu usługi ARM.

Napiwek

W przypadku obszaru roboczego z kluczami zarządzanymi przez klienta na potrzeby szyfrowania można przekazać tożsamość zarządzaną przypisaną przez użytkownika do uwierzytelniania z magazynu do usługi Key Vault. user-assigned-identity-for-cmk-encryption Użyj parametrów (CLI) lub user_assigned_identity_for_cmk_encryption (SDK), aby przekazać tożsamość zarządzaną. Ta tożsamość zarządzana może być taka sama lub inna niż tożsamość zarządzana przypisana przez użytkownika podstawowego obszaru roboczego.

Aby utworzyć obszar roboczy z wieloma tożsamościami przypisanymi przez użytkownika, użyj jednej z następujących metod:

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)

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

Gdzie zawartość workspace_creation_with_multiple_UAIs.yml jest następująca:

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>

Aby zaktualizować tożsamości przypisane przez użytkownika dla obszaru roboczego, obejmuje dodanie nowego lub usunięcie istniejących, użyj jednej z następujących metod:

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)

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

Gdzie zawartość workspace_update_with_multiple_UAIs.yml jest następująca:

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>

Napiwek

Aby dodać nowy interfejs użytkownika, możesz określić nowy identyfikator interfejsu użytkownika w sekcji user_assigned_identities oprócz istniejących interfejsów użytkownika, wymagane jest przekazanie wszystkich istniejących identyfikatorów interfejsu użytkownika.
Aby usunąć co najmniej jeden istniejący interfejs użytkownika, można umieścić identyfikatory interfejsu użytkownika, które należy zachować w sekcji user_assigned_identities, pozostałe identyfikatory interfejsu użytkownika zostaną usunięte.

Dodawanie tożsamości zarządzanej przypisanej przez użytkownika do obszaru roboczego oprócz tożsamości przypisanej przez system

W niektórych scenariuszach może być konieczne użycie tożsamości zarządzanej przypisanej przez użytkownika oprócz domyślnej tożsamości obszaru roboczego przypisanego przez system. Aby dodać tożsamość zarządzaną przypisaną przez użytkownika bez zmiany istniejącej tożsamości obszaru roboczego, wykonaj następujące kroki:

  1. Utwórz tożsamość zarządzaną przypisaną przez użytkownika. Zapisz identyfikator utworzonej tożsamości zarządzanej.

  2. Aby dołączyć tożsamość zarządzaną do obszaru roboczego, potrzebny jest plik YAML określający tożsamość. Poniżej przedstawiono przykład zawartości pliku YAML. Zastąp wartości <TENANT_ID>, <RESOURCE_GROUP>i <USER_MANAGED_ID> wartościami.

    identity:
        type: system_assigned,user_assigned
        tenant_id: <TENANT_ID>
        user_assigned_identities:
            '/subscriptions/<SUBSCRIPTION_ID/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER_MANAGED_ID>':
            {}
    
  3. Użyj polecenia interfejsu wiersza polecenia az ml workspace update platformy Azure, aby zaktualizować obszar roboczy. Określ plik YAML z poprzedniego kroku przy użyciu parametru --file . W poniższym przykładzie pokazano, jak wygląda to polecenie:

    az ml workspace update --resource-group <RESOURCE_GROUP> --name <WORKSPACE_NAME> --file <YAML_FILE_NAME>.yaml
    

Klaster obliczeniowy

Uwaga

Klastry obliczeniowe usługi Azure Machine Learning obsługują tylko jedną tożsamość przypisaną przez system lub wiele tożsamości przypisanych przez użytkownika, a nie jednocześnie.

Domyślna tożsamość zarządzana to tożsamość zarządzana przypisana przez system lub pierwsza tożsamość zarządzana przypisana przez użytkownika.

Podczas uruchamiania istnieją dwie aplikacje tożsamości:

  1. System używa tożsamości do konfigurowania instalacji magazynu użytkownika, rejestru kontenerów i magazynów danych.

    • W takim przypadku system będzie używać tożsamości domyślnej zarządzanej.
  2. Tożsamość jest stosowana do uzyskiwania dostępu do zasobów z poziomu kodu dla przesłanego zadania:

    • W takim przypadku podaj client_id odpowiadającą tożsamości zarządzanej, której chcesz użyć do pobrania poświadczeń.
    • Alternatywnie pobierz identyfikator klienta tożsamości przypisanej przez użytkownika za pomocą zmiennej środowiskowej DEFAULT_IDENTITY_CLIENT_ID .

    Aby na przykład pobrać token dla magazynu danych z tożsamością domyślną zarządzaną:

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

Aby skonfigurować klaster obliczeniowy z tożsamością zarządzaną, użyj jednej z następujących metod:

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)

az ml compute create -f create-cluster.yml

Gdzie zawartość create-cluster.yml jest następująca:

$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"

Dla porównania poniższy przykład pochodzi z pliku YAML, który tworzy klaster korzystający z tożsamości zarządzanej przypisanej przez system:

$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

Jeśli masz istniejący klaster obliczeniowy, możesz zmienić tożsamość zarządzaną przez użytkownika i zarządzaną przez system. W poniższych przykładach pokazano, jak zmienić konfigurację:

Tożsamość zarządzana przypisana przez użytkownika

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"

Tożsamość zarządzana przypisana przez system

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

Magazyn danych

Podczas tworzenia magazynu danych korzystającego z dostępu do danych opartych na tożsamości twoje konto platformy Azure (token Microsoft Entra) jest używane do potwierdzenia, że masz uprawnienia dostępu do usługi magazynu. W scenariuszu dostępu do danych opartych na tożsamości nie są zapisywane żadne poświadczenia uwierzytelniania. Tylko informacje o koncie magazynu są przechowywane w magazynie danych.

Z kolei magazyny danych korzystające z informacji o połączeniu pamięci podręcznej uwierzytelniania opartego na poświadczeniach, takich jak klucz konta magazynu lub token SAS, w magazynie kluczy skojarzonym z obszarem roboczym. Takie podejście ma ograniczenie, że inni użytkownicy obszaru roboczego z wystarczającymi uprawnieniami mogą pobrać te poświadczenia, co może być problemem zabezpieczeń dla niektórych organizacji.

Aby uzyskać więcej informacji na temat sposobu uwierzytelniania dostępu do danych, zobacz artykuł Administracja danymi. Aby uzyskać informacje na temat konfigurowania dostępu opartego na tożsamościach do danych, zobacz Tworzenie magazynów danych.

Istnieją dwa scenariusze, w których można zastosować dostęp do danych opartych na tożsamościach w usłudze Azure Machine Learning. Te scenariusze są dobrym rozwiązaniem w przypadku dostępu opartego na tożsamościach podczas pracy z poufnymi danymi i wymagają bardziej szczegółowego zarządzania dostępem do danych:

  • Uzyskiwanie dostępu do usług magazynu
  • Trenowanie modeli uczenia maszynowego

Dostęp oparty na tożsamości umożliwia korzystanie z kontroli dostępu opartej na rolach (RBAC) w celu ograniczenia tożsamości, takich jak użytkownicy lub zasoby obliczeniowe, mają dostęp do danych.

Uzyskiwanie dostępu do usług magazynu

Możesz nawiązać połączenie z usługami magazynu za pośrednictwem dostępu opartego na tożsamościach za pomocą magazynów danych usługi Azure Machine Learning.

W przypadku korzystania z dostępu do danych opartych na tożsamości usługa Azure Machine Learning wyświetla monit o podanie tokenu usługi Microsoft Entra na potrzeby uwierzytelniania dostępu do danych zamiast przechowywania poświadczeń w magazynie danych. Takie podejście umożliwia zarządzanie dostępem do danych na poziomie magazynu i przechowywanie poświadczeń poufnych.

To samo zachowanie ma zastosowanie w przypadku interaktywnej pracy z danymi za pośrednictwem notesu Jupyter Notebook na komputerze lokalnym lub wystąpieniu obliczeniowym.

Uwaga

Poświadczenia przechowywane za pośrednictwem uwierzytelniania opartego na poświadczeniach obejmują identyfikatory subskrypcji, tokeny sygnatury dostępu współdzielonego (SAS) oraz informacje o kluczu dostępu do magazynu i jednostce usługi, takie jak identyfikatory klientów i identyfikatory dzierżawy.

Aby zapewnić bezpieczne połączenie z usługą magazynu na platformie Azure, usługa Azure Machine Learning wymaga uprawnień dostępu do odpowiedniego magazynu danych.

Ostrzeżenie

Dostęp między dzierżawami do kont magazynu nie jest obsługiwany. Jeśli w twoim scenariuszu wymagany jest dostęp między dzierżawami, skontaktuj się z aliasem zespołu pomocy technicznej ds. danych usługi Azure Machine Learning, amldatasupport@microsoft.com aby uzyskać pomoc dotyczącą niestandardowego rozwiązania kodu.

Dostęp do danych oparty na tożsamości obsługuje połączenia tylko z następującymi usługami magazynu.

  • Azure Blob Storage
  • Usługa Azure Data Lake Storage 1. generacji
  • Usługa Azure Data Lake Storage 2. generacji

Aby uzyskać dostęp do tych usług magazynu, musisz mieć co najmniej dostęp czytelnika danych obiektu blob usługi Storage do konta magazynu. Tylko właściciele kont magazynu mogą zmienić poziom dostępu za pośrednictwem witryny Azure Portal.

Uzyskiwanie dostępu do danych na potrzeby zadań szkoleniowych dotyczących obliczeń przy użyciu tożsamości zarządzanej

Niektóre scenariusze uczenia maszynowego obejmują pracę z danymi prywatnymi. W takich przypadkach analitycy danych mogą nie mieć bezpośredniego dostępu do danych jako użytkownicy firmy Microsoft Entra. W tym scenariuszu tożsamość zarządzana obliczeniowa może służyć do uwierzytelniania dostępu do danych. W tym scenariuszu dostęp do danych można uzyskać tylko z wystąpienia obliczeniowego lub klastra obliczeniowego uczenia maszynowego wykonującego zadanie szkoleniowe. Dzięki temu administrator udziela uprawnień do wystąpienia obliczeniowego lub tożsamości zarządzanej klastra obliczeniowego Magazynu danych obiektu blob usługi Blob w magazynie. Indywidualni analitycy danych nie muszą mieć dostępu.

Aby włączyć uwierzytelnianie przy użyciu tożsamości zarządzanej obliczeniowej:

  • Tworzenie zasobów obliczeniowych z włączoną tożsamością zarządzaną. Zobacz sekcję klaster obliczeniowy lub w sekcji Assign managed identity (Przypisywanie tożsamości zarządzanej).

    Ważne

    Jeśli wystąpienie obliczeniowe jest również skonfigurowane do zamykania bezczynności, wystąpienie obliczeniowe nie zostanie zamknięte z powodu braku aktywności, chyba że tożsamość zarządzana ma dostęp współautora do obszaru roboczego usługi Azure Machine Learning. Aby uzyskać więcej informacji na temat przypisywania uprawnień, zobacz Zarządzanie dostępem do obszarów roboczych usługi Azure Machine Learning.

  • Udziel tożsamości zarządzanej obliczeniowej co najmniej roli Czytelnik danych obiektu blob usługi Storage na koncie magazynu.

  • Utwórz wszystkie magazyny danych z włączonym uwierzytelnianiem opartym na tożsamościach. Zobacz Tworzenie magazynów danych.

Uwaga

Nazwa utworzonej tożsamości zarządzanej systemu dla wystąpienia obliczeniowego lub klastra będzie mieć format /workspace-name/computes/compute-name w identyfikatorze firmy Microsoft Entra.

Po włączeniu uwierzytelniania opartego na tożsamości tożsamość zarządzana jest domyślnie używana podczas uzyskiwania dostępu do danych w ramach zadań szkoleniowych. Opcjonalnie możesz uwierzytelnić się przy użyciu tożsamości użytkownika, wykonując kroki opisane w następnej sekcji.

Aby uzyskać informacje na temat konfigurowania kontroli dostępu opartej na rolach platformy Azure dla magazynu, zobacz Kontrola dostępu oparta na rolach.

Uzyskiwanie dostępu do danych na potrzeby zadań szkoleniowych w klastrach obliczeniowych przy użyciu tożsamości użytkownika

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)

Podczas trenowania w klastrach obliczeniowych usługi Azure Machine Learning można uwierzytelnić się w magazynie przy użyciu tokenu microsoft Entra użytkownika.

Ten tryb uwierzytelniania umożliwia:

  • Skonfiguruj szczegółowe uprawnienia, w których różni użytkownicy obszaru roboczego mogą mieć dostęp do różnych kont magazynu lub folderów w ramach kont magazynu.
  • Zezwłań analitykom danych ponowne używanie istniejących uprawnień w systemach magazynowania.
  • Przeprowadź inspekcję dostępu do magazynu, ponieważ dzienniki magazynu pokazują, które tożsamości były używane do uzyskiwania dostępu do danych.

Ważne

Ta funkcja ma następujące ograniczenia

  • Funkcja jest obsługiwana w przypadku eksperymentów przesyłanych za pośrednictwem interfejsu wiersza polecenia usługi Azure Machine Learning i zestawu PYTHON SDK w wersji 2, ale nie za pośrednictwem programu ML Studio.
  • Tożsamości użytkownika i tożsamości zarządzanej obliczeniowej nie można używać do uwierzytelniania w ramach tego samego zadania.
  • W przypadku zadań potoku zalecamy ustawienie tożsamości użytkownika na poziomie poszczególnych kroków, które będą wykonywane na obliczeniach, a nie na poziomie potoku głównego. ( Ustawienie tożsamości jest obsługiwane zarówno na poziomie potoku głównego, jak i na poziomie kroku, ustawienie poziomu kroku ma pierwszeństwo, jeśli oba zostały ustawione. Jednak w przypadku potoków zawierających składniki potoku tożsamość musi być ustawiona na poszczególne kroki, które zostaną wykonane. Tożsamość ustawiona na poziomie głównego potoku lub składnika potoku nie będzie działać. W związku z tym zalecamy ustawienie tożsamości na poziomie poszczególnych kroków dla uproszczenia.

W poniższych krokach opisano sposób konfigurowania dostępu do danych przy użyciu tożsamości użytkownika na potrzeby zadań szkoleniowych w klastrach obliczeniowych z poziomu interfejsu wiersza polecenia.

  1. Udziel tożsamości użytkownika dostępu do zasobów magazynu. Na przykład przyznaj usłudze StorageBlobReader dostęp do określonego konta magazynu, którego chcesz użyć lub przyznaj uprawnienie oparte na listach ACL do określonych folderów lub plików w magazynie usługi Azure Data Lake Gen 2.

  2. Utwórz magazyn danych usługi Azure Machine Learning bez buforowanych poświadczeń dla konta magazynu. Jeśli magazyn danych ma buforowane poświadczenia, takie jak klucz konta magazynu, te poświadczenia są używane zamiast tożsamości użytkownika.

  3. Prześlij zadanie szkoleniowe z tożsamością właściwości ustawioną na typ: user_identity, jak pokazano w poniższej specyfikacji zadania. Podczas zadania szkoleniowego uwierzytelnianie w magazynie odbywa się za pośrednictwem tożsamości użytkownika, który przesyła zadanie.

    Uwaga

    Jeśli właściwość tożsamości pozostanie nieokreślona, a magazyn danych nie ma buforowanych poświadczeń, tożsamość zarządzana obliczeniowa stanie się opcją rezerwową.

    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
    

W poniższych krokach opisano sposób konfigurowania dostępu do danych przy użyciu tożsamości użytkownika na potrzeby zadań szkoleniowych w klastrach obliczeniowych z zestawu SDK języka Python.

  1. Udzielanie dostępu do danych i tworzenie magazynu danych zgodnie z powyższym opisem dla interfejsu wiersza polecenia.

  2. Prześlij zadanie szkoleniowe z parametrem tożsamości ustawionym na azure.ai.ml.UserIdentityConfiguration. To ustawienie parametru umożliwia zadaniu uzyskiwanie dostępu do danych w imieniu użytkownika przesyłającego zadanie.

    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)
    

Ważne

Podczas przesyłania zadania z uwierzytelnianiem z włączoną tożsamością użytkownika migawki kodu są chronione przed manipulowaniem przez walidację sumy kontrolnej. Jeśli masz istniejące składniki potoku i zamierzasz ich używać z uwierzytelnianiem z włączoną tożsamością użytkownika, może być konieczne ich ponowne przekazanie. W przeciwnym razie zadanie może zakończyć się niepowodzeniem podczas walidacji sumy kontrolnej.

Praca z sieciami wirtualnymi

Domyślnie usługa Azure Machine Learning nie może komunikować się z kontem magazynu, które znajduje się za zaporą lub w sieci wirtualnej.

Konta magazynu można skonfigurować tak, aby zezwalały na dostęp tylko z określonych sieci wirtualnych. Ta konfiguracja wymaga dodatkowych kroków, aby upewnić się, że dane nie wyciekają poza sieć. To zachowanie jest takie samo w przypadku dostępu do danych opartych na poświadczeniach. Aby uzyskać więcej informacji, zobacz Jak zapobiegać eksfiltracji danych.

Jeśli konto magazynu ma ustawienia sieci wirtualnej, określa to, jakiego typu tożsamości i dostępu do uprawnień są potrzebne. Na przykład w przypadku podglądu danych i profilu danych ustawienia sieci wirtualnej określają, jakiego typu tożsamość jest używana do uwierzytelniania dostępu do danych.

  • W scenariuszach, w których tylko niektóre adresy IP i podsieci mogą uzyskiwać dostęp do magazynu, usługa Azure Machine Learning używa tożsamości usługi Zarządzanej obszaru roboczego do wykonywania podglądów danych i profilów.

  • Jeśli magazyn jest usługą ADLS Gen 2 lub obiektem blob i ma ustawienia sieci wirtualnej, klienci mogą używać tożsamości użytkownika lub tożsamości obszaru roboczego usługi zarządzanej w zależności od ustawień magazynu danych zdefiniowanych podczas tworzenia.

  • Jeśli ustawienie sieci wirtualnej to "Zezwalaj usługom platformy Azure na liście zaufanych usług na dostęp do tego konta magazynu", zostanie użyta tożsamość usługi zarządzanej obszaru roboczego.

Scenariusz: Usługa Azure Container Registry bez użytkownika administratora

Po wyłączeniu administratora usługi ACR usługa Azure Machine Learning używa tożsamości zarządzanej do kompilowania i ściągania obrazów platformy Docker. Istnieją dwa przepływy pracy podczas konfigurowania usługi Azure Machine Learning do korzystania z usługi ACR z wyłączoną przez administratora:

  • Zezwól usłudze Azure Machine Learning na utworzenie wystąpienia usługi ACR, a następnie wyłączenie użytkownika administratora.
  • Przełącz istniejącą usługę ACR z już wyłączonym administratorem.

Usługa Azure Machine Learning z automatycznie utworzonym wystąpieniem usługi ACR

  1. Utwórz nowy obszar roboczy usługi Azure Machine Learning.

  2. Wykonaj akcję, która wymaga usługi Azure Container Registry. Na przykład samouczek: trenowanie pierwszego modelu.

  3. Pobierz nazwę usługi ACR utworzonej przez klaster.

    DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)

    az ml workspace show --name <my workspace name> \
    --resource-group <my resource group> \
    --subscription <my subscription id> \
    --query container_registry
    

    To polecenie zwraca wartość podobną do poniższego tekstu. Potrzebujesz tylko ostatniej części tekstu, czyli nazwy wystąpienia usługi ACR:

    /subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
    
  4. Zaktualizuj usługę ACR, aby wyłączyć użytkownika administratora:

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

Korzystanie z własnego usługi ACR

Jeśli administrator usługi ACR jest niedozwolony przez zasady subskrypcji, należy najpierw utworzyć usługę ACR bez użytkownika administratora, a następnie skojarzyć ją z obszarem roboczym. Utwórz usługę ACR z poziomu interfejsu wiersza polecenia platformy Azure bez ustawiania --admin-enabled argumentu lub z witryny Azure Portal bez włączania użytkownika administratora. Następnie podczas tworzenia obszaru roboczego usługi Azure Machine Learning określ identyfikator zasobu platformy Azure usługi ACR. W poniższym przykładzie pokazano tworzenie nowego obszaru roboczego usługi Azure Machine Learning korzystającego z istniejącego usługi ACR:

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)

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

Napiwek

Aby uzyskać wartość parametru --container-registry , użyj polecenia az acr show , aby wyświetlić informacje dla usługi ACR. Pole id zawiera identyfikator zasobu dla usługi ACR.

Ponadto jeśli masz już istniejącą usługę ACR z wyłączonym administratorem, możesz dołączyć ją do obszaru roboczego, aktualizując go. W poniższym przykładzie pokazano aktualizowanie obszaru roboczego usługi Azure Machine Learning w celu korzystania z istniejącego usługi ACR:

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)

az ml workspace update --update-dependent-resources \
--name <workspace name> \
--resource-group <workspace resource group> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

Tworzenie zasobów obliczeniowych przy użyciu tożsamości zarządzanej w celu uzyskiwania dostępu do obrazów platformy Docker na potrzeby trenowania

Aby uzyskać dostęp do obszaru roboczego usługi ACR, utwórz klaster obliczeniowy uczenia maszynowego z włączoną tożsamością zarządzaną przypisaną przez system. Tożsamość można włączyć w witrynie Azure Portal lub programie Studio podczas tworzenia zasobów obliczeniowych lub z poziomu interfejsu wiersza polecenia platformy Azure, korzystając z poniższego polecenia. Aby uzyskać więcej informacji, zobacz używanie tożsamości zarządzanej z klastrami obliczeniowymi.

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)

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

Tożsamość zarządzana jest automatycznie udzielana roli ACRPull w obszarze roboczym usługi ACR w celu włączenia ściągania obrazów platformy Docker na potrzeby trenowania.

Uwaga

Jeśli najpierw tworzysz obliczenia, przed utworzeniem usługi ACR obszaru roboczego musisz ręcznie przypisać rolę ACRPull.

Używanie obrazów platformy Docker do wnioskowania

Po skonfigurowaniu usługi ACR bez użytkownika administratora zgodnie z wcześniejszym opisem możesz uzyskać dostęp do obrazów platformy Docker w celu wnioskowania bez kluczy administratora z usługi Azure Kubernetes Service (AKS). Podczas tworzenia lub dołączania usługi AKS do obszaru roboczego jednostka usługi klastra jest automatycznie przypisywana do usługi ACRPull dostępu do obszaru roboczego usługi ACR.

Uwaga

Jeśli korzystasz z własnego klastra usługi AKS, klaster musi mieć włączoną jednostkę usługi zamiast tożsamości zarządzanej.

Scenariusz: korzystanie z prywatnej usługi Azure Container Registry

Domyślnie usługa Azure Machine Learning używa podstawowych obrazów platformy Docker pochodzących z repozytorium publicznego zarządzanego przez firmę Microsoft. Następnie tworzy środowisko trenowania lub wnioskowania na tych obrazach. Aby uzyskać więcej informacji, zobacz Co to są środowiska uczenia maszynowego?.

Aby użyć niestandardowego obrazu podstawowego w przedsiębiorstwie, możesz użyć tożsamości zarządzanych, aby uzyskać dostęp do prywatnego usługi ACR. Istnieją dwa przypadki użycia:

  • Użyj obrazu podstawowego do trenowania w następujący sposób.
  • Tworzenie obrazu zarządzanego usługi Azure Machine Learning przy użyciu obrazu niestandardowego jako podstawy.

Ściąganie obrazu podstawowego platformy Docker do klastra obliczeniowego uczenia maszynowego w celu trenowania

Utwórz klaster obliczeniowy uczenia maszynowego z włączoną tożsamością zarządzaną przypisaną przez system zgodnie z wcześniejszym opisem. Następnie określ identyfikator podmiotu zabezpieczeń tożsamości zarządzanej.

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)

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

Opcjonalnie możesz zaktualizować klaster obliczeniowy, aby przypisać tożsamość zarządzaną przypisaną przez użytkownika:

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)

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

Aby zezwolić klastrowi obliczeniowemu na ściąganie obrazów podstawowych, przyznaj tożsamości usługi zarządzanej rolę ACRPull w prywatnej usłudze ACR

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)

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>"

Na koniec utwórz środowisko i określ lokalizację obrazu podstawowego w pliku YAML środowiska.

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)

$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>

Teraz możesz używać środowiska w zadaniu szkoleniowym.

Tworzenie środowiska zarządzanego usługi Azure Machine Learning w obraz podstawowy z prywatnego usługi ACR na potrzeby trenowania lub wnioskowania

Uwaga

Nawiązywanie połączenia z prywatnym usługą ACR przy użyciu tożsamości zarządzanej przypisanej przez użytkownika nie jest obecnie obsługiwane. Klucz administratora jest jedynym typem uwierzytelniania obsługiwanym dla prywatnego usługi ACR.

Następne kroki