Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DOTYCZY:
Rozszerzenie Azure CLI ml w wersji 2 (bieżąca)
Python SDK azure-ai-ml v2 (bieżąca)
Usługa Azure Machine Learning składa się z wielu usług platformy Azure. Wiele metod obsługuje uwierzytelnianie między usługą Azure Machine Learning i 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 ta tożsamość jest tożsamością zarządzaną przypisaną 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 korzystają z 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
Obszar roboczy usługi Azure Machine Learning. Aby uzyskać instrukcje dotyczące tworzenia przestrzeni roboczej, zobacz Create the workspace.
Azure CLI i rozszerzenie
mllub Azure Machine Learning Python SDK v2:Aby zainstalować Azure CLI oraz rozszerzenie
ml, zobacz Zainstaluj i skonfiguruj CLI (v2).Przykłady w tym artykule zakładają, że używasz powłoki Bash lub innej kompatybilnej powłoki. Na przykład możesz użyć powłoki w systemie Linux lub Windows Subsystem for Linux.
Aby przypisać role, logowanie do 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.
Rodzaje 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. Usługa Azure Machine Learning obsługuje wiele typów tożsamości.
| Typ tożsamości zarządzanej | Tworzenie przydziału roli | Przeznaczenie |
|---|---|---|
| Przypisane przez system (SAI) | Zarządzane przez firmę Microsoft | Cykl życia związany z zasobem; użycie pojedynczego zasobu; proste, aby rozpocząć pracę |
| Przypisany przez system+przypisany 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żesz zaktualizować go do sai+UAI. Nie można zaktualizować obszaru roboczego z "SAI+UAI" do "SAI". Do tego samego obszaru roboczego można przypisać wiele tożsamości przypisanych przez użytkownika.
Tożsamość zarządzana przypisana użytkownikowi
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:
- 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.
- 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 | Pozwolenie |
|---|---|
| Obszar roboczy usługi Azure Machine Learning | Współpracownik |
| 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ółpracownik |
| Azure Application Insights | Współpracownik |
Aby zautomatyzować tworzenie przypisań ról w tożsamości zarządzanej przypisanej przez użytkownika, można użyć tego szablonu usługi ARM.
Wskazówka
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. Użyj parametrów user-assigned-identity-for-cmk-encryption (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:
Azure CLI ml extension v2 (current)
az ml workspace create -f workspace_creation_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>
Poniższy przykład przedstawia zawartość 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>
Aby zaktualizować tożsamości przypisane przez użytkownika dla obszaru roboczego, w tym dodanie nowego lub usunięcie istniejących, użyj jednej z następujących metod:
DOTYCZY:
Azure CLI ml extension v2 (current)
az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>
Poniższy przykład przedstawia zawartość 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>
Wskazówka
Aby dodać nowy interfejs użytkownika, określ nowy identyfikator interfejsu użytkownika w user_assigned_identities sekcji wraz z istniejącymi interfejsami użytkownika. Musisz przekazać wszystkie istniejące identyfikatory UAI.
Aby usunąć jeden lub więcej istniejących identyfikatorów użytkownika, dodaj identyfikatory, które chcesz zachować, w sekcji user_assigned_identities. Identyfikatory UAI, które nie są uwzględniane, są usuwane.
Dodaj do obszaru roboczego zarządzaną tożsamość przypisaną przez użytkownika, 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:
Utwórz przypisaną przez użytkownika zarządzaną tożsamość. Zachowaj identyfikator dla utworzonej przez ciebie tożsamości zarządzanej.
Aby dołączyć tożsamość zarządzaną do obszaru roboczego, utwórz plik YAML określający tożsamość. Poniższy przykład przedstawia zawartość pliku YAML. Zastąp symbole zastępcze
<TENANT_ID>,<RESOURCE_GROUP>i<USER_MANAGED_ID>swoimi 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>': {}Użyj polecenia Azure CLI
az ml workspace updatedo aktualizacji obszaru roboczego. 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
Izolacja danych w ramach wspólnych zasobów
Jeśli wiele obszarów roboczych współużytkuje te same skojarzone zasoby (konto magazynu, magazyn kluczy lub rejestr kontenerów), włącz izolację danych, aby zapobiec konfliktom nazewnictwa i zapewnić, że każdy obszar roboczy będzie mógł uzyskiwać dostęp tylko do własnych danych. Flaga enableDataIsolation umożliwia skonfigurowanie sposobu przechowywania artefaktów obszaru roboczego i uzyskiwania do ich dostępu w zasobach udostępnionych.
Ważne
Opcję izolacji danych można ustawić tylko podczas tworzenia obszaru roboczego. Nie można go włączyć ani wyłączyć po utworzeniu obszaru roboczego.
Efekty włączania izolacji danych
Po włączeniu izolacji danych obszar roboczy stosuje następujące konfiguracje:
| Zasób | Zachowanie |
|---|---|
| Konto magazynu | Nazwy kontenerów są poprzedzone identyfikatorem GUID obszaru roboczego (na przykład {workspaceGUID}-azureml-blobstore). Tożsamość zarządzana obszaru roboczego otrzymuje przydział roli w płaszczyźnie danych z warunkiem kontroli dostępu opartej na atrybutach (ABAC) platformy Azure, który ogranicza dostęp tylko do konkretnych kontenerów tego obszaru roboczego. |
| Skrzynka kluczy | Nazwy wpisów tajnych są poprzedzone identyfikatorem GUID obszaru roboczego, aby odizolować wpisy tajne między obszarami roboczymi współdzielącymi ten sam magazyn kluczy. |
| Rejestr kontenerów | Nazwy obrazów platformy Docker są poprzedzone identyfikatorem GUID obszaru roboczego w celu odizolowania obrazów między obszarami roboczymi współdzielącymi ten sam rejestr. |
Domyślne zachowanie według rodzaju obszaru roboczego
Wartość domyślna izolacji danych zależy od rodzaju obszaru roboczego:
| Rodzaj obszaru roboczego | Domyślna izolacja danych |
|---|---|
hub |
Włączona |
project |
Włączone (dziedziczone z centrum) |
default |
Disabled |
Kiedy włączyć izolację danych
Włącz izolację danych, gdy:
- Wiele obszarów roboczych udostępnia to samo konto magazynowe, magazyn kluczy lub rejestr kontenerów.
- Należy zapobiec konfliktom nazewnictwa artefaktów (takich jak obrazy platformy Docker lub wpisy tajne) utworzonych przy użyciu tej samej nazwy między obszarami roboczymi
- Wymagana jest ściślejsza kontrola dostępu, aby zapewnić, że tożsamości robocze mogą uzyskiwać dostęp tylko do własnych danych.
W przypadku obszarów roboczych centrum i projektu izolacja danych jest domyślnie włączona do obsługi udostępnionego modelu zasobów. Aby uzyskać więcej informacji, zobacz Co to jest obszar roboczy centrum usługi Azure Machine Learning?
Włączanie izolacji danych podczas tworzenia obszaru roboczego
DOTYCZY:
Azure CLI ml extension v2 (current)
az ml workspace create --name <WORKSPACE_NAME> \
--resource-group <RESOURCE_GROUP> \
--enable-data-isolation
Alternatywnie określ izolację danych w pliku konfiguracji YAML:
$schema: https://azuremlschemas.azureedge.net/latest/workspace.schema.json
name: my-workspace
location: eastus
enable_data_isolation: true
storage_account: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT>
key_vault: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT>
container_registry: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ContainerRegistry/registries/<CONTAINER_REGISTRY>
Następnie utwórz obszar roboczy:
az ml workspace create --file workspace.yml --resource-group <RESOURCE_GROUP>
Klaster obliczeniowy
Uwaga / Notatka
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.
W trakcie działania, tożsamość ma dwa zastosowania:
System używa tożsamości do konfigurowania instalacji magazynu użytkownika, rejestru kontenerów i magazynów danych.
- W takim przypadku system używa domyślnej tożsamości zarządzanej.
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:
Azure CLI ml extension v2 (current)
az ml compute create -f create-cluster.yml
Poniższy przykład przedstawia zawartość 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"
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 przełączać się między tożsamością zarządzaną przez użytkownika i tożsamością 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
Obliczenia klastra Kubernetes
Uwaga / Notatka
Klastry Kubernetes usługi Azure Machine Learning obsługują tylko jedną tożsamość przypisaną przez system lub jedną tożsamość przypisaną przez użytkownika, a nie obie te tożsamości 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 działania tożsamość posiada dwie aplikacje:
System używa tożsamości do konfigurowania instalacji magazynu użytkownika, rejestru kontenerów i magazynów danych.
- W takim przypadku system używa domyślnej tożsamości zarządzanej.
Tożsamość jest stosowana do uzyskiwania dostępu do zasobów z poziomu kodu dla przesłanego zadania:
- W przypadku obliczeń klastra Kubernetes należy podać obiekt ManagedIdentityCredential bez żadnych client_id.
Aby na przykład pobrać token dla magazynu danych z tożsamością domyślną zarządzaną:
credential = ManagedIdentityCredential() token = credential.get_token('https://storage.azure.com/')
Aby skonfigurować środowisko obliczeniowe klastra Kubernetes, upewnij się, że ma wdrożone w nim rozszerzenie AML i postępuj zgodnie z dokumentacją dotyczącą dołączania zasobów obliczeniowych klastra Kubernetes do obszaru roboczego usługi AML.
Ważne
Do celów szkoleniowych (zadania Machine Learning) użyj tożsamości przypisanej do klastra obliczeniowego Kubernetes. Jednak w przypadku wnioskowania (zarządzane punkty końcowe online) użyj tożsamości przypisanej do punktu końcowego. Aby uzyskać więcej informacji, zobacz Jak uzyskać dostęp do zasobów platformy Azure z punktu końcowego online.
Magazyn danych
Podczas tworzenia magazynu danych korzystającego z dostępu do danych opartych na tożsamościach należy użyć konta platformy Azure (tokenu Microsoft Entra), aby potwierdzić, że masz uprawnienia dostępu do usługi magazynu. W scenariuszu dostępu do danych opartych na tożsamościach nie zapisujesz żadnych poświadczeń uwierzytelniania. Informacje o koncie magazynu są przechowywane tylko w magazynie danych.
W przeciwieństwie do tego, magazyny danych korzystające z uwierzytelniania opartego na poświadczeniach przechowują informacje o połączeniu w pamięci podręcznej, takie 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ą pobierać te poświadczenia, co może stanowić problem z zabezpieczeniami 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.
Dostęp do danych opartych na tożsamościach można zastosować w usłudze Azure Machine Learning w dwóch scenariuszach. 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
Za pomocą dostępu opartego na tożsamościach można użyć kontroli dostępu opartej na rolach (RBAC), aby ograniczyć, które tożsamości, takie jak użytkownicy lub zasoby obliczeniowe, mogą uzyskać dostęp do danych.
Uzyskiwanie dostępu do usług magazynu
Możesz nawiązać połączenie z usługami magazynu z użyciem dostępu do danych opartego na tożsamości 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 / Notatka
Poświadczenia przechowywane za pomocą uwierzytelniania opartego na poświadczeniach obejmują identyfikatory subskrypcji, tokeny sygnatury dostępu współdzielonego (SAS), klucz dostępu do magazynu i informacje o jednostce usługi, takie jak identyfikatory klientów i identyfikatory dzierżawy.
Aby bezpiecznie połączyć się z usługą magazynowania na platformie Azure, wymagane jest, aby usługa Azure Machine Learning miała uprawnienia do dostępu do odpowiedniego magazynu danych.
Ostrzeżenie
Dostęp między dzierżawami do kont magazynu nie jest obsługiwany. Jeśli twój scenariusz wymaga dostępu między dzierżawami, skontaktuj się z zespołem 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
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
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 użyj tożsamości zarządzanej zasobów obliczeniowych na potrzeby uwierzytelniania dostępu do danych. Dostęp do danych można uzyskać tylko z wystąpienia obliczeniowego lub klastra obliczeniowego uczenia maszynowego wykonującego zadanie szkoleniowe. Korzystając z tego podejścia, administrator przyznaje wystąpieniu obliczeniowemu lub tożsamości zarządzanej klastra obliczeniowego uprawnienia Czytelnika danych obiektu blob usługi Storage. Indywidualni analitycy danych nie muszą mieć dostępu.
Aby włączyć uwierzytelnianie przy użyciu tożsamości zarządzanej przez obliczenia:
Tworzenie zasobów obliczeniowych z włączoną tożsamością zarządzaną. Zobacz sekcję klaster obliczeniowy lub w sekcji Przypisywanie tożsamości zarządzanej.
Ważne
Jeśli skonfigurujesz wystąpienie obliczeniowe do wyłączenia w przypadku bezczynności, nie zostanie ono zamknięte z powodu braku aktywności, chyba że tożsamość zarządzana posiada dostęp współautorski 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 zarządzanej tożsamości obliczeniowej przynajmniej roli Czytelnik danych Blob na koncie magazynu.
Utwórz dowolne magazyny danych z włączonym uwierzytelnianiem opartym na tożsamości. Zobacz Tworzenie magazynów danych.
Uwaga / Notatka
Nazwa utworzonej zarządzanej tożsamości systemowej dla wystąpienia obliczeniowego lub klastra ma format /workspace-name/computes/compute-name w koncie Microsoft Entra.
Po włączeniu uwierzytelniania opartego na tożsamości, zarządzana tożsamość obliczeniowa jest domyślnie używana podczas uzyskiwania dostępu do danych w zadaniach 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 (RBAC) dla magazynu Azure, zobacz Kontrola dostępu oparta na rolach.
Uzyskiwanie dostępu do danych dotyczących zadań szkoleniowych w klastrach obliczeniowych przy użyciu tożsamości użytkownika
DOTYCZY:
Azure CLI ml extension v2 (current)
Podczas trenowania na klastrach obliczeniowych usługi Azure Machine Learning można uwierzytelnić się do magazynu przy użyciu tokenu Microsoft Entra użytkownika.
Ten tryb uwierzytelniania umożliwia:
- Skonfiguruj szczegółowe uprawnienia, gdzie różni użytkownicy obszaru roboczego mogą uzyskiwać dostęp do różnych kont przechowywania lub folderów w obrębie kont przechowywania.
- Zezwól naukowcom danych na ponowne wykorzystanie istniejących uprawnień w systemach przechowywania danych.
- 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:
- Eksperymenty przesyłane za pośrednictwem interfejsu wiersza polecenia usługi Azure Machine Learning i zestawu PYTHON SDK w wersji 2 obsługują tę funkcję, ale program ML Studio nie.
- Nie można używać tożsamości użytkownika i obliczeniowej tożsamości zarządzanej do uwierzytelniania w tym samym zadaniu.
- W przypadku zadań potokowych ustaw tożsamość użytkownika na poziomie poszczególnych kroków, które są wykonywane na jednostce obliczeniowej, a nie na poziomie głównego potoku. Ustawienie tożsamości jest obsługiwane zarówno na poziomie potoku głównego, jak i na poziomie kroku, ale ustawienie poziomu kroku ma pierwszeństwo, jeśli oba ustawienia są ustawione. Jednak w przypadku potoków z komponentami, tożsamość musi być skonfigurowana dla poszczególnych kroków wykonywanych w procesie. Tożsamość ustawiona na poziomie potoku źródłowego lub składnika potoku nie funkcjonuje. W związku z tym ustaw tożsamość na poziomie poszczególnych kroków dla uproszczenia.
Aby skonfigurować dostęp do danych przy użyciu tożsamości użytkownika na potrzeby zadań szkoleniowych w klastrach obliczeniowych z poziomu interfejsu wiersza polecenia, wykonaj następujące kroki:
Udziel tożsamości użytkownika dostępu do zasobów pamięci masowej. 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.
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.
Prześlij zadanie szkoleniowe z właściwością tożsamość 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 / Notatka
Jeśli nie określisz właściwości tożsamości, a magazyn danych nie ma buforowanych poświadczeń, system używa obliczeniowej zarządzanej tożsamości jako rezerwowego.
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
Aby skonfigurować dostęp do danych przy użyciu tożsamości użytkownika na potrzeby zadań szkoleniowych w klastrach obliczeniowych z zestawu Python SDK, wykonaj następujące kroki:
Udostępnij dostęp do danych i utwórz magazyn danych, jak wcześniej opisano dla CLI.
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
Po przesłaniu zadania z uwierzytelnianiem przy użyciu tożsamości użytkownika weryfikacja sumy kontrolnej chroni migawki kodu przed manipulowaniem. Jeśli posiadasz istniejące składniki potoku i zamierzasz używać ich z uwierzytelnianiem przy użyciu tożsamości użytkownika, może zajść konieczność ich ponownego przesłania. W przeciwnym razie zadanie może zakończyć się niepowodzeniem podczas sprawdzania poprawności sumy kontrolnej.
Praca z sieciami wirtualnymi
Domyślnie Azure Machine Learning nie może komunikować się z kontem magazynowym, 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 twoje konto magazynu ma ustawienia sieci wirtualnej, te ustawienia określają wymagany typ tożsamości i uprawnienia dostępu. Na przykład w przypadku wersji zapoznawczej 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 zarządzanej obszaru roboczego (MSI) do wykonywania podglądów i profilowania danych.
Jeśli magazyn jest usługą ADLS Gen 2 lub obiektem BLOB i ma ustawienia sieci wirtualnej, możesz użyć tożsamości użytkownika lub MSI obszaru roboczego w zależności od ustawień magazynu danych zdefiniowanych podczas tworzenia.
Jeśli ustawienie sieci wirtualnej to Zezwalaj usługom platformy Azure z listy zaufanych usług na dostęp do tego konta magazynu, zostanie użyta MSI 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 w trakcie konfigurowania usługi Azure Machine Learning do korzystania z usługi ACR z wyłączonym użytkownikiem admina.
- Zezwól usłudze Azure Machine Learning na utworzenie wystąpienia ACR, a następnie wyłącz użytkownika administratora.
- Przynieś istniejącą ACR z użytkownikiem administracyjnym, który jest już wyłączony.
Usługa Azure Machine Learning z automatycznie utworzonym wystąpieniem usługi ACR
Utwórz nowy obszar roboczy usługi Azure Machine Learning.
Wykonaj akcję, która wymaga usługi Azure Container Registry. Zobacz na przykład Samouczek: trenowanie pierwszego modelu.
Pobierz nazwę usługi ACR utworzonej przez klaster.
DOTYCZY:
Azure CLI ml extension v2 (current)az ml workspace show --name <my workspace name> \ --resource-group <my resource group> \ --subscription <my subscription id> \ --query container_registryTo 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>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 zasady subskrypcji nie zezwalają na użytkownika administratora usługi ACR, najpierw utwórz usługę ACR bez użytkownika administratora, a następnie skojarz ją z obszarem roboczym.
Utwórz usługę ACR z poziomu interfejsu wiersza polecenia platformy Azure bez ustawiania argumentu --admin-enabled lub w witrynie Azure Portal bez włączania użytkownika administratora. Podczas tworzenia obszaru roboczego usługi Azure Machine Learning określ identyfikator zasobu Azure dla usługi Azure Container Registry (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:
Azure CLI ml extension v2 (current)
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>
Wskazówka
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:
Azure CLI ml extension v2 (current)
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 portalu Azure lub programie Studio podczas tworzenia usługi obliczeniowej, lub z poziomu interfejsu wiersza polecenia platformy Azure przy użyciu następującego polecenia. Aby uzyskać więcej informacji, zobacz używanie tożsamości zarządzanej z klastrami obliczeniowymi.
DOTYCZY:
Azure CLI ml extension v2 (current)
az ml compute create --name cpu-cluster --type <cluster name> --identity-type systemassigned
Tożsamość zarządzana automatycznie pobiera rolę ACRPull w obszarze roboczym usługi ACR, aby umożliwić ściąganie obrazów platformy Docker na potrzeby trenowania.
Uwaga / Notatka
Jeśli utworzysz zasób obliczeniowy przed istnieniem obszaru roboczego ACR, 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 automatycznie uzyskuje dostęp ACRPull do obszaru roboczego usługi ACR.
Uwaga / Notatka
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 obrazów bazowych Docker z publicznego repozytorium, którymi zarządza firma Microsoft. 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 bazowego wewnętrznego dla Twojego przedsiębiorstwa, użyj tożsamości zarządzanych, aby uzyskać dostęp do prywatnego konta ACR.
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:
Azure CLI ml extension v2 (current)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:
Azure CLI ml extension v2 (current)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ść usługi zarządzanej (dla obszaru roboczego lub obliczeniowego) rolę ACRPull w prywatnej usłudze ACR
DOTYCZY:
Azure CLI ml extension v2 (current)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>"Utwórz środowisko i określ lokalizację obrazu podstawowego w pliku YAML środowiska. Poniższy plik YAML przedstawia sposób definiowania środowiska, które odwołuje się do prywatnego rejestru ACR. Zastąp ciąg
<acr-url>adresem URL prywatnego rekordu ACR, na przykładmyregistry.azurecr.io. Zastąp ciąg<image-path>ścieżką do obrazu w prywatnym rejestrze ACR, na przykładpytorch/pytorch:latest:$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json name: docker-image-example image: <acr-url>/<image-path>:latest description: Environment created from a Docker image.Poniższe polecenie pokazuje, jak utworzyć środowisko na podstawie pliku YAML. Zastąp
<yaml file>ścieżką do pliku YAML.az ml environment create --file <yaml file>Teraz możesz używać środowiska w zadaniu szkoleniowym.
Powiązane artykuły
- Dowiedz się więcej o zabezpieczeniach przedsiębiorstwa w usłudze Azure Machine Learning.
- Dowiedz się więcej o administrowanie danymi.
- Dowiedz się więcej o tożsamościach zarządzanych w klastrze obliczeniowym.