Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 (aktuální)
Python SDK azure-ai-ml v2 (aktuální)
Služba Azure Machine Learning se skládá z několika jiných služeb Azure. Více metod podporuje ověřování mezi Službou Azure Machine Learning a službami, na které spoléhá.
- Pracovní prostor Azure Machine Learning používá spravovanou identitu ke komunikaci s jinými službami. Ve výchozím nastavení je tato identita spravovanou identitou přiřazenou systémem. Místo toho můžete použít spravovanou identitu přiřazenou uživatelem.
- Azure Machine Learning používá Azure Container Registry (ACR) k ukládání imagí Dockeru používaných k trénování a nasazování modelů. Pokud službě Azure Machine Learning povolíte automatické vytváření ACR, povolí účet správce.
- Výpočetní cluster Azure Machine Learning používá spravovanou identitu k načtení informací o připojení pro úložiště dat ze služby Azure Key Vault a k načtení imagí Dockeru z ACR. Můžete také nakonfigurovat přístup založený na identitě k úložišti dat, který používá spravovanou identitu výpočetního clusteru.
- Přístup k datům může probíhat v různých cestách v závislosti na službě úložiště dat a vaší konfiguraci. Například ověřování v úložišti dat může používat klíč účtu, token, objekt zabezpečení, spravovanou identitu nebo identitu uživatele.
- Spravované online koncové body můžou při odvozování používat spravovanou identitu pro přístup k prostředkům Azure. Další informace najdete v tématu Přístup k prostředkům Azure z online koncového bodu.
Požadavky
Pracovní prostor služby Azure Machine Learning. Pokyny k vytvoření pracovního prostoru najdete v tématu Vytvoření pracovního prostoru.
Azure CLI a rozšíření
mlnebo Azure Machine Learning Python SDK v2:Pokud chcete nainstalovat Azure CLI a
mlrozšíření, přečtěte si téma Instalace a nastavení rozhraní příkazového řádku (v2).Příklady v tomto článku předpokládají, že používáte prostředí Bash nebo kompatibilní prostředí. Například můžete použít příkazový terminál v systému Linux nebo Windows Subsystem for Linux.
Pokud chcete přiřadit role, musí mít uživatelský účet s předplatným Azure roli operátora spravované identity nebo jinou roli, která umožňuje požadované akce (například vlastníka).
Musíte být obeznámeni s vytvářením a prací se spravovanými identitami.
Role RBAC podle scénáře
V závislosti na vašem scénáři potřebujete konkrétní role Azure RBAC:
| Scenario | Požadované role |
|---|---|
| Pracovní prostor s identitou přiřazenou uživatelem | Přispěvatel v pracovním prostoru, Přispěvatel dat Storage Blob v úložišti, Správce Key Vaultu nebo zásady přístupu v Key Vaultu, Přispěvatel v ACR |
| Výpočetní cluster s přístupem k úložišti | Čtenář dat objektů blob služby Storage (minimálně) v účtu úložiště |
| Přístup k datům založeným na identitě | Čtenář dat objektů blob služby Storage ve službě Azure Blob Storage, Azure Data Lake Storage Gen1 nebo Gen2 |
| Načítání obrázků z ACR | ACRPull v kontejnerovém registru |
| Soukromý přístup k ACR | ACRPull na privátním registru kontejneru |
Další informace o přiřazování rolí najdete v tématu Správa přístupu k pracovním prostorům Azure Machine Learning.
Volba metody ověřování
Následující tabulka shrnuje, kdy použít každý přístup ověřování:
| Scenario | Doporučená identita | Alternativa |
|---|---|---|
| Pracovní prostor s přístupem k úložišti, Key Vault a ACR | Spravovaná identita přiřazená systémem | Spravovaná identita přiřazená uživatelem |
| Výpočetní cluster v trénovacích úlohách | Spravovaná identita služby Compute | Identita uživatele (prostřednictvím konfigurace úlohy) |
| Provádění inference v clusteru Kubernetes | Spravovaná identita pro koncový bod | Systémem přiřazená identita |
| Interaktivní přístup k datům (poznámkové bloky, studio) | Identita uživatele | Spravovaná identita pracovního prostoru |
| Azure Container Registry bez uživatele správce | Spravovaná identita přiřazená systémem | Spravovaná identita přiřazená uživatelem |
| Více pracovních prostorů sdílejících prostředky | Spravovaná identita přiřazená uživatelem s izolací dat | Identita přiřazená systémem (nedoporučuje se) |
Omezení
Před konfigurací ověřování mějte na paměti tato omezení:
- Změny typu identity: Po vytvoření pracovního prostoru s identitami přiřazenými systémem i uživatelem (SAI+UAI) jej nemůžete změnit zpět na pouze přiřazené systémem (SAI).
- Přístup mezi tenanty: Přístup mezi tenanty k účtům úložiště se nepodporuje. Pokud váš scénář vyžaduje přístup mezi tenanty, vytvořte žádost o podporu Azure pro pomoc s vlastním řešením kódu.
- Identita výpočetního clusteru: Výpočetní clustery Azure Machine Learning podporují pouze jednu identitu přiřazenou systémem nebo více identit přiřazených uživatelem, nikoli současně.
- Identita clusteru Kubernetes: Clustery Azure Machine Learning podporují pouze jednu identitu přiřazenou systémem nebo jednu identitu přiřazenou uživatelem, nikoli obě současně.
- Neměnnost identity koncového bodu: Identita online koncového bodu je neměnná. Můžete ji přidružit k identitě přiřazené systémem (výchozí) nebo k identitě přiřazené uživatelem během vytváření, ale po vytvoření koncového bodu ji nemůžete změnit.
- Časování izolace dat: Možnost izolace dat můžete nastavit pouze při vytváření pracovního prostoru. Po vytvoření pracovního prostoru ho nemůžete povolit ani zakázat.
Ověření nastavení
Po konfiguraci spravovaných identit ověřte, že vaše nastavení funguje správně.
PLATÍ PRO:
Aktuální verze v2 rozšíření Azure CLI ml
# Verify workspace identity
az ml workspace show --name <workspace-name> --resource-group <resource-group> --query identity
Očekávaný výstup: Objekt JSON zobrazující typ identity (SystemAssigned, UserAssigned nebo SystemAssigned,UserAssigned) a ID hlavních objektů.
# Verify compute cluster identity
az ml compute show --name <compute-name> --resource-group <resource-group> --workspace-name <workspace-name> --query identity
Očekávaný výstup: Objekt JSON zobrazující konfiguraci spravované identity pro výpočetní cluster.
Typy identit pracovního prostoru
Pracovní prostor Azure Machine Learning používá spravovanou identitu ke komunikaci s jinými službami. Azure Machine Learning podporuje více typů identit.
| Typ spravované identity | Vytvoření role a její přiřazení | Účel |
|---|---|---|
| Přiřazené systémem (SAI) | Spravuje ho Microsoft | Životní cyklus svázaný s prostředkem; použití jednoho zdroje; Snadné zahájení práce |
| Systémem-přiřazené + uživatelem-přiřazené (SAI+UAI) | Spravováno vámi | Nezávislý životní cyklus pro uživatelsky přiřazenou identitu; použití více zdrojů; zajišťuje přístup s nejmenšími privilegii; přístup k datům v rámci tréninkových úloh. |
Po vytvoření pracovního prostoru s typem identity SAI ho můžete aktualizovat na SAI+UAI. Pracovní prostor nemůžete aktualizovat ze sai+UAI na SAI. Ke stejnému pracovnímu prostoru můžete přiřadit více identit přiřazených uživatelem.
Spravovaná identita přiřazená uživatelem
Pracovní prostor
Spravovanou identitu přiřazenou uživatelem můžete přidat při vytváření pracovního prostoru Azure Machine Learning z webu Azure Portal. Při vytváření pracovního prostoru postupujte následovně:
- Na stránce Základy vyberte účet služby Azure Storage, Azure Container Registry a Azure Key Vault, které chcete použít s pracovním prostorem.
- Na stránce Identita vyberte identitu přiřazenou uživatelem a pak vyberte spravovanou identitu, která se má použít.
Pro přístup k datům přidruženým k prostředkům přidruženým k pracovnímu prostoru Azure Machine Learning se vyžadují následující přiřazení rolí Azure RBAC pro vaši spravovanou identitu přiřazenou uživatelem.
| Prostředek | Oprávnění |
|---|---|
| Pracovní prostor služby Azure Machine Learning | Přispěvatel |
| Azure Storage | Přispěvatel (řídicí rovina) + Přispěvatel dat v objektech blob služby Storage (rovina dat, volitelná, povolení náhledu dat v studio Azure Machine Learning) |
| Azure Key Vault (při použití modelu oprávnění RBAC) | Přispěvatel (řídicí rovina) + Správce služby Key Vault (rovina dat) |
| Azure Key Vault (při použití modelu oprávnění zásad přístupu) | Přispěvatel + všechna oprávnění zásad přístupu kromě operací vymazání |
| Azure Container Registry | Přispěvatel |
| Azure Application Insights | Přispěvatel |
Pro automatizované vytváření přiřazení rolí u spravované identity přiřazené uživatelem můžete použít tuto šablonu ARM.
Návod
Pro pracovní prostor s klíči spravovanými zákazníkem pro šifrování můžete předat uživatelsky přiřazenou spravovanou identitu pro ověření z úložiště do služby Key Vault.
user-assigned-identity-for-cmk-encryption K předání spravované identity použijte parametry (CLI) nebo user_assigned_identity_for_cmk_encryption (SDK). Tato spravovaná identita může být stejná nebo jiná jako spravovaná identita přiřazená primárním uživatelem pracovního prostoru.
Vyhledání ID prostředku spravované identity přiřazené uživatelem
Při konfiguraci uživatelsky přidělené spravované identity (UAI) potřebujete jeho ID prostředku. K jeho nalezení použijte jednu z následujících metod:
Azure Portal: Přejděte k prostředku spravované identity, v nabídce vlevo vyberte Vlastnosti a zkopírujte hodnotu ID prostředku .
Azure CLI: Spusťte následující příkaz:
az identity show --name <identity-name> --resource-group <resource-group> --query id --output tsv
ID prostředku se řídí tímto formátem:
/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>
Pokud chcete vytvořit pracovní prostor s více identitami přiřazenými uživatelem, použijte jednu z následujících metod:
PLATÍ PRO:
Aktuální verze v2 rozšíření Azure CLI ml
az ml workspace create -f workspace_creation_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>
Následující příklad ukazuje obsah workspace_creation_with_multiple_UAIs.yml:
location: <region name>
identity:
type: user_assigned
user_assigned_identities:
# Format: /subscriptions/<sub-id>/resourceGroups/<rg>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<name>
'<UAI resource ID 1>': {}
'<UAI resource ID 2>': {}
storage_account: <storage account 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>
Pokud chcete aktualizovat identity přiřazené uživatelem pro pracovní prostor, včetně přidání nové nebo odstranění existujících identit, použijte jednu z následujících metod:
PLATÍ PRO:
Aktuální verze v2 rozšíření Azure CLI ml
az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>
Následující příklad ukazuje obsah workspace_update_with_multiple_UAIs.yml:
identity:
type: user_assigned
user_assigned_identities:
# Format: /subscriptions/<sub-id>/resourceGroups/<rg>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<name>
'<UAI resource ID 1>': {}
'<UAI resource ID 2>': {}
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>
Návod
Pokud chcete přidat nové UAI, zadejte nové ID UAI do části user_assigned_identities spolu s existujícími UAI. Musíte předat všechna existující ID UAI.
Pokud chcete odstranit jednu nebo více existujících identifikátorů UAI, přidejte identifikátory UAI, které chcete zachovat v user_assigned_identities části. Identifikátory UAI, které nezahrnujete, se odstraní.
Přidejte uživatelem přiřazenou spravovanou identitu do pracovního prostoru kromě systémem přiřazené identity.
V některých scénářích možná budete muset kromě výchozí identity pracovního prostoru přiřazené systémem použít spravovanou identitu přiřazenou uživatelem. Pokud chcete přidat spravovanou identitu přiřazenou uživatelem beze změny stávající identity pracovního prostoru, postupujte takto:
Vytvořte spravovanou identitu přiřazenou uživatelem. Uložte ID pro spravovanou identitu, kterou vytvoříte.
Pokud chcete ke svému pracovnímu prostoru připojit spravovanou identitu, vytvořte soubor YAML, který určuje identitu. Následující příklad ukazuje obsah souboru YAML. Nahraďte zástupné symboly
<TENANT_ID>,<RESOURCE_GROUP>a<USER_MANAGED_ID>svými hodnotami.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>': {}K aktualizaci pracovního prostoru použijte příkaz Azure CLI
az ml workspace update. Pomocí parametru--filezadejte soubor YAML z předchozího kroku. Následující příklad ukazuje, jak tento příkaz vypadá:az ml workspace update --resource-group <RESOURCE_GROUP> --name <WORKSPACE_NAME> --file <YAML_FILE_NAME>.yaml
Izolace dat pro sdílené prostředky
Pokud více pracovních prostorů sdílí stejné přidružené prostředky (účet úložiště, trezor klíčů nebo registr kontejnerů), povolte izolaci dat, abyste zabránili konfliktům názvů a zajistili, že každý pracovní prostor bude mít přístup jenom k vlastním datům. Příznak enableDataIsolation konfiguruje způsob ukládání artefaktů pracovního prostoru a přístup ke sdíleným prostředkům.
Důležité
Možnost izolace dat můžete nastavit pouze při vytváření pracovního prostoru. Po vytvoření pracovního prostoru ho nemůžete povolit ani zakázat.
Účinky povolení izolace dat
Když povolíte izolaci dat, pracovní prostor použije následující konfigurace:
| Prostředek | Chování |
|---|---|
| Účet úložiště | Názvy kontejnerů mají předponu GUID pracovního prostoru (například {workspaceGUID}-azureml-blobstore). Spravovaná identita pracovního prostoru obdrží přiřazení role pro datovou rovinu s podmínkou řízení přístupu na základě atributů Azure (ABAC), která omezuje přístup pouze ke specifickým kontejnerům pracovního prostoru. |
| Trezor klíčů | Názvy tajných kódů mají předponu GUID pracovního prostoru pro izolaci tajných kódů mezi pracovními prostory, které sdílejí stejný trezor klíčů. |
| Registr kontejnerů | Názvy obrazů Dockeru mají předponu s UUID pracovního prostoru, aby se izolovaly obrazy mezi pracovními prostory, které sdílejí stejný registr. |
Výchozí chování podle typu pracovního prostoru
Azure Machine Learning podporuje různé druhy pracovních prostorů pro různé organizační vzory:
- default: Samostatný pracovní prostor pro jednotlivé projekty nebo týmy. Tento typ pracovního prostoru je standardním typem pracovního prostoru.
- Hub: Centrální pracovní prostor, který spravuje sdílené prostředky, zásady a připojení pro více souvisejících projektů. Další informace najdete v tématu Pracovní prostory centra.
- projekt: Odlehčený pracovní prostor, který dědí prostředky a nastavení z pracovního prostoru nadřazeného centra.
Výchozí hodnota izolace dat závisí na typu pracovního prostoru:
| Druh pracovního prostoru | Výchozí nastavení izolace dat |
|---|---|
hub |
Enabled |
project |
Povoleno (zděděno z centra) |
default |
Disabled |
Kdy povolit izolaci dat
Povolit izolaci dat v případech:
- Více pracovních prostorů sdílí stejný účet úložiště, trezor klíčů nebo registr kontejnerů.
- Potřebujete zabránit konfliktům pojmenování artefaktů (například imagí Dockeru nebo tajných kódů) vytvořených se stejným názvem napříč pracovními prostory.
- Vyžadujete přísnější řízení přístupu, abyste zajistili, že identity pracovních prostorů budou mít přístup jenom k vlastním datům.
V případě pracovních prostorů pro centra a projekty povolte izolaci dat ve výchozím nastavení tak, aby podporovala model sdílených prostředků. Další informace najdete v tématu Co je pracovní prostor centra Azure Machine Learning?
Povolení izolace dat při vytváření pracovního prostoru
PLATÍ PRO:
Aktuální verze v2 rozšíření Azure CLI ml
az ml workspace create --name <WORKSPACE_NAME> \
--resource-group <RESOURCE_GROUP> \
--enable-data-isolation
Případně můžete zadat izolaci dat v konfiguračním souboru 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>
Pak vytvořte pracovní prostor:
az ml workspace create --file workspace.yml --resource-group <RESOURCE_GROUP>
Výpočetní klastr
Poznámka:
Výpočetní clustery Azure Machine Learning podporují pouze jednu identitu přiřazenou systémem nebo více identit přiřazených uživatelem, ne obě současně.
Výchozí spravovaná identita je spravovaná identita přiřazená systémem nebo první spravovaná identita přiřazená uživatelem.
Během spuštění má identita dvě aplikace:
Systém používá identitu k nastavení připojení úložiště uživatele, registru kontejnerů a úložišť dat.
- V tomto případě systém používá výchozí spravovanou identitu.
Identitu použijete pro přístup k prostředkům v rámci kódu odeslané úlohy.
- V tomto případě zadejte client_id odpovídající spravované identitě, kterou chcete použít k načtení přihlašovacích údajů.
- Případně získejte ID klienta identity přiřazené uživatelem prostřednictvím proměnné prostředí DEFAULT_IDENTITY_CLIENT_ID.
Pokud například chcete získat token pro úložiště dat s výchozí spravovanou identitou:
import os from azure.identity import ManagedIdentityCredential client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID') credential = ManagedIdentityCredential(client_id=client_id) token = credential.get_token('https://storage.azure.com/')Očekávaný výsledek: Vrátí přístupový token pro Azure Storage. Pokud
DEFAULT_IDENTITY_CLIENT_IDnení nastaven, volání selže s chybou proměnné prostředí.Referenční informace: ManagedIdentityCredential
Ke konfiguraci výpočetního clusteru se spravovanou identitou použijte jednu z následujících metod:
PLATÍ PRO:
Aktuální verze v2 rozšíření Azure CLI ml
az ml compute create -f create-cluster.yml
Následující příklad ukazuje obsah 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"
Následující příklad je z souboru YAML, který vytvoří cluster, který používá spravovanou identitu přiřazenou systémem:
$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
Pokud máte existující výpočetní cluster, můžete přepínat mezi uživatelsky spravovanou a systémem spravovanou identitou. Následující příklady ukazují, jak změnit konfiguraci:
Spravovaná identita přiřazená uživatelem
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"
Spravovaná identita přiřazená systémem
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
Výpočetní prostředky clusteru Kubernetes
Poznámka:
Clustery Kubernetes služby Azure Machine Learning podporují pouze jednu identitu přiřazenou systémem nebo jednu identitu přiřazenou uživatelem, ne obě současně.
Výchozí spravovaná identita je spravovaná identita přiřazená systémem nebo první spravovaná identita přiřazená uživatelem.
Během spuštění má identita dvě aplikace:
Systém používá identitu k nastavení připojení úložiště uživatele, registru kontejnerů a úložišť dat.
- V tomto případě systém používá výchozí spravovanou identitu.
Identitu použijete pro přístup k prostředkům v rámci kódu odeslané úlohy.
- V případě výpočetních prostředků clusteru Kubernetes by měl být objekt ManagedIdentityCredential poskytnut bez jakýchkoli client_id.
Pokud například chcete získat token pro úložiště dat s výchozí spravovanou identitou:
from azure.identity import ManagedIdentityCredential credential = ManagedIdentityCredential() token = credential.get_token('https://storage.azure.com/')Očekávaný výsledek: Vrátí přístupový token pro Azure Storage. Na rozdíl od výpočetních clusterů nezadávejte
client_idpro clustery Kubernetes.Referenční informace: ManagedIdentityCredential
Pokud chcete nakonfigurovat výpočetní prostředky clusteru Kubernetes, ujistěte se, že je v něm nasazené potřebné rozšíření AML , a postupujte podle dokumentace k připojení výpočetních prostředků clusteru Kubernetes k pracovnímu prostoru AML.
Důležité
Pro účely trénování (úlohy Machine Learning) použijte identitu přiřazenou výpočetním prostředkům clusteru Kubernetes. Pro odvozování (spravované online koncové body) ale použijte identitu přiřazenou ke koncovému bodu. Další informace najdete v tématu Přístup k prostředkům Azure z online koncového bodu.
Úložiště dat
Když vytvoříte úložiště dat, které používá přístup k datům založeným na identitě, použijete svůj účet Azure (token Microsoft Entra), abyste potvrdili, že máte oprávnění pro přístup ke službě úložiště. Ve scénáři přístupu k datům založeným na identitě neukládáte přihlašovací údaje pro ověřování. Informace o účtu úložiště ukládáte pouze do datového úložiště.
Naopak, úložiště dat, která používají ověřování založené na přihlašovacích údajích, ukládají informace o připojení, jako je klíč účtu úložiště nebo token SAS, v trezoru klíčů přidruženém k pracovnímu prostoru. Tento přístup má omezení, že ostatní uživatelé pracovního prostoru s dostatečnými oprávněními mohou tyto přihlašovací údaje načíst, což může být pro některé organizace problém se zabezpečením.
Další informace o ověřování přístupu k datům najdete v článku Správa dat. Informace o konfiguraci přístupu na základě identity k datům najdete v tématu Vytváření úložišť dat.
Přístup k datům založeným na identitách ve službě Azure Machine Learning můžete použít ve dvou scénářích. Tyto scénáře jsou vhodné pro přístup založený na identitě, když pracujete s důvěrnými daty a potřebujete podrobnější správu přístupu k datům:
- Přístup ke službám úložiště
- Trénování modelů strojového učení
Pomocí přístupu na základě identity můžete pomocí řízení přístupu na základě role (RBAC) omezit, které identity, jako jsou uživatelé nebo výpočetní prostředky, mají k datům přístup.
Přístup ke službám úložiště
Ke službám úložiště se můžete připojit pomocí přístupu k datům založeným na identitách pomocí úložišť dat služby Azure Machine Learning.
Když používáte přístup k datům založeným na identitě, Azure Machine Learning vás vyzve k ověření přístupu k datům kvůli tokenu Microsoft Entra místo toho, aby vaše přihlašovací údaje uchovávali v úložišti dat. Tento přístup umožňuje správu přístupu k datům na úrovni úložiště a uchovává přihlašovací údaje jako důvěrné.
Stejné chování platí, když pracujete s daty interaktivně prostřednictvím poznámkového bloku Jupyter na místním počítači nebo výpočetní instanci.
Poznámka:
Přihlašovací údaje uložené prostřednictvím ověřování na základě přihlašovacích údajů zahrnují ID předplatného, tokeny sdíleného přístupového podpisu (SAS), přístupový klíč úložiště a informace instančního objektu, jako jsou ID klienta a ID tenanta.
Aby se služba Azure Machine Learning bezpečně připojila ke službě Storage, vyžaduje, abyste měli oprávnění pro přístup k odpovídajícímu úložišti dat.
Varování
Přístup mezi tenanty k účtům úložiště se nepodporuje. Pokud váš scénář vyžaduje přístup mezi tenanty, vytvořte žádost o podporu Azure pro pomoc s vlastním řešením kódu.
Přístup k datům založeným na identitě podporuje připojení pouze k následujícím službám úložiště.
- Azure Blob Storage
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
Pokud chcete získat přístup k těmto službám úložiště, musíte mít alespoň přístup čtenáře dat objektů blob služby Storage k účtu úložiště. Úroveň přístupu můžou změnit jenom vlastníci účtu úložiště prostřednictvím webu Azure Portal.
Přístup k datům pro trénovací úlohy na výpočetních prostředcích pomocí spravované identity
Některé scénáře strojového učení zahrnují práci s privátními daty. V takových případech nemusí mít datoví vědci přímý přístup k datům jako uživatelé Microsoft Entra. V tomto scénáři použijte spravovanou identitu výpočetních prostředků pro ověřování přístupu k datům. K datům můžete přistupovat pouze z výpočetní instance nebo výpočetního clusteru strojového učení, který spouští trénovací úlohu. Pomocí tohoto přístupu správce udělí výpočetní instanci nebo výpočetnímu clusteru řízené identity oprávnění čtenáře dat objektů blob služby Storage. Jednotliví datoví vědci nemusí mít udělený přístup.
Povolení ověřování pomocí spravované identity výpočtového prostředí:
Vytvořte výpočetní instanci se spravovanou identitou povolenou. Podívejte se na oddíl výpočetního clusteru nebo na výpočetní instanci v části Přiřadit spravovanou identitu .
Důležité
Pokud nakonfigurujete výpočetní instanci pro vypnutí nečinnosti, výpočetní instance se nevypne kvůli nečinnosti, pokud spravovaná identita nemá přístup přispěvatele k pracovnímu prostoru Azure Machine Learning. Další informace o přidělování oprávnění najdete v tématu Správa přístupu k pracovním prostorům Azure Machine Learning.
Udělte výpočetní spravované identitě alespoň roli Čtenář dat objektů blob služby Storage v účtu úložiště.
Vytvořte jakékoli úložiště dat s povoleným ověřováním na základě identity. Viz Vytváření úložišť dat.
Poznámka:
Název vytvořené systémové spravované identity pro výpočetní instanci nebo cluster je ve formátu /workspace-name/computes/compute-name vašeho ID Microsoft Entra.
Jakmile povolíte ověřování založené na identitě, výpočetní spravovaná identita se ve výchozím nastavení používá při přístupu k datům v rámci trénovacích úloh. Volitelně můžete provést ověření pomocí identity uživatele pomocí postupu popsaného v další části.
Informace o konfiguraci Azure RBAC pro úložiště najdete v tématu Řízení přístupu na základě role.
Přístup k datům pro trénovací úlohy ve výpočetních clusterech pomocí identity uživatele
PLATÍ PRO:
Aktuální verze v2 rozšíření Azure CLI ml
Při tréninku na výpočetních clusterech Azure Machine Learning se můžete ověřit do úložiště pomocí tokenu uživatele Microsoft Entra.
Tento režim ověřování umožňuje:
- Nastavte jemně odstupňovaná oprávnění, kde mají různí uživatelé pracovního prostoru přístup k různým účtům úložiště nebo složkám v rámci účtů úložiště.
- Umožňuje datovým vědcům opakovaně používat stávající oprávnění v systémech úložiště.
- Auditovat přístup k úložišti, protože protokoly úložiště ukazují, které identity byly použity pro přístup k datům.
Důležité
Tato funkce má následující omezení:
- Experimenty odeslané prostřednictvím azure Machine Learning CLI a sady Python SDK V2 tuto funkci podporují, ale ML Studio tuto funkci nepodporuje.
- Nemůžete použít identitu uživatele a spravovanou identitu výpočetních prostředků k ověřování v téže úloze.
- U úloh kanálu nastavte identitu uživatele na úrovni jednotlivých kroků, která se spouští na výpočetních prostředcích, a ne na úrovni kořenového kanálu. I když je nastavení identity podporováno jak na úrovni root pipeline, tak na úrovni kroku, přednost má nastavení na úrovni kroku, pokud jsou obě nastavení aktivována. U potrubí obsahujících součásti potrubí je však třeba nastavit identitu na jednotlivé kroky, které se spustí. Identita nastavená na úrovni kořenového kanálu nebo součásti kanálu nefunguje. Proto pro zjednodušení nastavte identitu na úrovni jednotlivých kroků.
Pokud chcete nastavit přístup k datům pomocí identity uživatele pro trénovací úlohy výpočetních clusterů z rozhraní příkazového řádku, postupujte takto:
Udělte identitě uživatele přístup k prostředkům úložiště. Například udělte StorageBlobReader přístup ke konkrétnímu účtu úložiště, který chcete použít, nebo udělte oprávnění založenému na seznamu ACL konkrétním složkám nebo souborům v úložišti Azure Data Lake Gen2.
Vytvořte úložiště dat Služby Azure Machine Learning bez přihlašovacích údajů uložených v mezipaměti pro účet úložiště. Pokud má úložiště dat přihlašovací údaje uložené v mezipaměti, například klíč účtu úložiště, použijí se tyto přihlašovací údaje místo identity uživatele.
Odešlete trénovací úlohu s vlastností identity nastavenou na typ: user_identity, jak je znázorněno v následující specifikaci úlohy. Během trénovací úlohy se ověřování k úložišti provede prostřednictvím identity uživatele, který úlohu odešle.
Poznámka:
Pokud nezadáte vlastnost identity a úložiště dat nemá přihlašovací údaje uložené v mezipaměti, použije systém jako záložní spravovanou identitu výpočetních prostředků.
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
Pokud chcete nastavit přístup k datům pomocí identity uživatele pro trénovací úlohy ve výpočetních clusterech ze sady Python SDK, postupujte takto:
Udělte přístup k datům a vytvořte úložiště dat, jak je popsáno výše pro rozhraní příkazového řádku.
Odešlete trénovací úlohu s parametrem identity nastaveným na azure.ai.ml.UserIdentityConfiguration. Toto nastavení parametru umožňuje úloze přístup k datům jménem uživatele, který úlohu odesílá.
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)
Důležité
Když odešlete úlohu s ověřováním pomocí identity uživatele, ověření kontrolního součtu chrání snímky kódu před manipulací. Pokud máte existující komponenty potrubí a zamýšlíte je používat s ověřováním pomocí identity uživatele, budete je možná muset znovu nahrát. Jinak může úloha při ověřování kontrolního součtu selhat.
Práce s virtuálními sítěmi
Azure Machine Learning ve výchozím nastavení nemůže komunikovat s účtem úložiště, který je za bránou firewall nebo ve virtuální síti.
Účty úložiště můžete nakonfigurovat tak, aby umožňovaly přístup pouze z konkrétních virtuálních sítí. Tato konfigurace vyžaduje další kroky, aby se zajistilo, že data neproniknou mimo síť. Toto chování je stejné pro přístup k datům založeným na přihlašovacích údajích. Další informace naleznete v tématu Jak zabránit exfiltraci dat.
Pokud má váš účet úložiště nastavení virtuální sítě, tato nastavení určují, jaký typ identity a přístup k oprávněním je potřeba. Například pro náhled dat a profil dat určují nastavení virtuální sítě, jaký typ identity se používá k ověření přístupu k datům.
Ve scénářích, kdy k úložišti mají přístup jenom určité IP adresy a podsítě, azure Machine Learning používá MSI pracovního prostoru k provádění náhledů dat a profilů.
Pokud je úložiště ADLS Gen2 nebo Blob a má nastavení virtuální sítě, můžete použít buď identitu uživatele, nebo MSI pracovního prostoru v závislosti na nastavení úložiště dat definovaných během vytváření.
Pokud je nastavení virtuální sítě Povolit službám Azure na seznamu důvěryhodných služeb přístup k tomuto účtu úložiště, použije se pracovní prostor MSI.
Scénář: Azure Container Registry bez uživatele správce
Když zakážete uživatele správce pro ACR, Azure Machine Learning používá spravovanou identitu k sestavení a stahování Docker obrazů. Při konfiguraci služby Azure Machine Learning pro použití služby ACR se zakázaným uživatelem správce existují dva pracovní postupy:
- Povolte službě Azure Machine Learning vytvoření instance ACR a pak zakažte uživatele s rolí správce.
- Doručte existující ACR s uživatelem správce, který je již deaktivovaný.
Azure Machine Learning s automaticky vytvořenou instancí ACR
Vytvořte nový pracovní prostor Azure Machine Learning.
Proveďte akci, která vyžaduje službu Azure Container Registry. Podívejte se například na kurz: Trénování prvního modelu.
Získejte název ACR vytvořeného clusterem.
PLATÍ PRO:
Aktuální verze v2 rozšíření Azure CLI mlaz ml workspace show --name <my workspace name> \ --resource-group <my resource group> \ --subscription <my subscription id> \ --query container_registryTento příkaz vrátí hodnotu podobnou následujícímu textu. Chcete jenom poslední část textu, což je název instance ACR:
/subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>Aktualizujte ACR k deaktivaci uživatele správce.
az acr update --name <ACR instance name> --admin-enabled false
Přineste si vlastní ACR
Pokud zásady předplatného nepovolují administrativní práva uživatele ACR, nejprve vytvořte ACR bez těchto práv, a poté ho připojte k pracovnímu prostoru.
Vytvořte ACR z Azure CLI bez nastavení argumentu --admin-enabled nebo z Azure portálu bez povolení uživatele správce. Při vytváření pracovního prostoru Azure Machine Learning zadejte ID prostředku Azure služby ACR. Následující příklad ukazuje vytvoření nového pracovního prostoru služby Azure Machine Learning, který používá existující službu ACR:
PLATÍ PRO:
Aktuální verze v2 rozšíření Azure CLI ml
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>
Návod
Pokud chcete získat hodnotu parametru --container-registry , použijte příkaz az acr show k zobrazení informací pro službu ACR. Pole id obsahuje ID prostředku pro vaše ACR.
Pokud už máte službu ACR se zakázaným uživatelem správce, můžete ji připojit k pracovnímu prostoru aktualizací. Následující příklad ukazuje aktualizaci pracovního prostoru Azure Machine Learning tak, aby používal existující službu ACR:
PLATÍ PRO:
Aktuální verze v2 rozšíření Azure CLI ml
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>
Vytvoření výpočetních prostředků se spravovanou identitou pro přístup k obrazům Dockeru pro školení
Pokud chcete získat přístup k pracovnímu prostoru ACR, vytvořte výpočetní cluster strojového učení s povolenou spravovanou identitou přiřazenou systémem. Identitu můžete povolit z webu Azure Portal nebo Studia při vytváření výpočetních prostředků nebo z Azure CLI pomocí následujícího příkazu. Další informace najdete v tématu Použití spravované identity s výpočetními clustery.
PLATÍ PRO:
Aktuální verze v2 rozšíření Azure CLI ml
az ml compute create --name cpu-cluster --type <cluster name> --identity-type systemassigned
Spravovaná identita automaticky získá roli ACRPull v pracovním prostoru ACR, aby mohla stahovat obrazy Dockeru pro trénování.
Poznámka:
Pokud nejprve vytvoříte výpočetní prostředí, než existuje pracovní prostor ACR, musíte přiřadit roli ACRPull ručně.
Použití imagí Dockeru k odvozování
Jakmile nakonfigurujete ACR bez uživatele správce, jak je popsáno výše, budete mít přístup k imagím Dockeru pro odvozování bez klíčů správce ze služby Azure Kubernetes Service (AKS). Když vytvoříte nebo připojíte AKS k pracovnímu prostoru, služební principal clusteru automaticky získá oprávnění ACRPull k ACR daného pracovního prostoru.
Poznámka:
Pokud používáte vlastní cluster AKS, musí mít cluster povolenu aplikaci služby namísto spravované identity.
Scénář: Použití privátní služby Azure Container Registry
Azure Machine Learning ve výchozím nastavení používá základní image Dockeru z veřejného úložiště, které spravuje Microsoft. Na těchto obrázcích sestaví vaše trénovací nebo odvozovací prostředí. Další informace najdete v tématu Co jsou prostředí ML?
Pokud chcete pro společnost použít vlastní interní základní image, použijte spravované identity pro přístup k soukromé službě ACR.
Vytvořte výpočetní cluster strojového učení s povolenou spravovanou identitou přiřazenou systémem, jak je popsáno výše. Pak určete hlavní ID spravované identity.
PLATÍ PRO:
Aktuální verze v2 rozšíření Azure CLI mlaz ml compute show --name <cluster name> -n <workspace> -g <resource group>Volitelně můžete výpočetní cluster aktualizovat tak, aby přiřadil spravovanou identitu přiřazenou uživatelem:
PLATÍ PRO:
Aktuální verze v2 rozšíření Azure CLI mlaz ml compute update --name <cluster name> --user-assigned-identities <my-identity-id>Pokud chcete výpočetnímu clusteru umožnit stahovat základní obrazy, udělte identitě spravované služby (pro pracovní prostor nebo výpočetní prostředky) roli ACRPull v soukromém ACR.
PLATÍ PRO:
Aktuální verze v2 rozšíření Azure CLI mlaz role assignment create --assignee <principal ID> \ --role acrpull \ --scope "/subscriptions/<subscription ID>/resourceGroups/<private ACR resource group>/providers/Microsoft.ContainerRegistry/registries/<private ACR name>"Vytvořte prostředí a zadejte umístění základní image v souboru YAML prostředí. Následující soubor YAML ukazuje, jak definovat prostředí, které odkazuje na privátní ACR. Nahraďte
<acr-url>s adresou URL vašeho soukromého ACR, napříkladmyregistry.azurecr.io. Nahraďte<image-path>cestou k vašemu obrazu v privátním ACR, napříkladpytorch/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.Následující příkaz ukazuje, jak vytvořit prostředí ze souboru YAML. Nahraďte
<yaml file>cestou k vašemu YAML souboru:az ml environment create --file <yaml file>Prostředí teď můžete použít v trénovací úloze.
Řešení problémů
Tato část řeší běžné problémy při konfiguraci ověřování založeného na identitě.
Identita nemá oprávnění pro přístup k úložišti
Příznak: Při pokusu o přístup k datům z Azure Storage se zobrazí chyba 403 Zakázáno.
Příčina: Spravovaná identita nemá v účtu úložiště požadovanou roli Azure RBAC.
Řešení: Přiřaďte spravované identitě příslušnou roli:
# Assign Storage Blob Data Reader role
az role assignment create \
--assignee <principal-id> \
--role "Storage Blob Data Reader" \
--scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>
Nahraďte <principal-id> ID objektu spravované identity ze sekce Ověření nastavení.
Selhání při načítání tokenu ve výcvikovém úkolu
Příznak: ManagedIdentityCredential se nepodaří získat token kvůli chybě proměnné prostředí.
Příčina: DEFAULT_IDENTITY_CLIENT_ID Proměnná prostředí není nastavená nebo výpočetní cluster nemá nakonfigurovanou spravovanou identitu.
Řešení:
- Ověřte, že výpočetní cluster má povolenou spravovanou identitu. Viz Výpočetní cluster.
- V kódu načtěte ID klienta z prostředí:
import os
from azure.identity import ManagedIdentityCredential
client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
if not client_id:
raise ValueError("DEFAULT_IDENTITY_CLIENT_ID environment variable not set. Verify compute has managed identity enabled.")
credential = ManagedIdentityCredential(client_id=client_id)
Brána firewall úložiště blokuje přístup
Příznak: Chyby odepření přístupu, pokud má účet úložiště povolená pravidla brány firewall.
Příčina: Pracovní prostor nebo spravovaná identita výpočetních prostředků nemají přístup k úložišti přes bránu firewall.
Řešení: Nakonfigurujte účet úložiště tak, aby umožňoval přístup z důvěryhodných služeb Azure:
- Na webu Azure Portal přejděte do svého účtu úložiště.
- Zvolte možnost Sítě>Brány firewall a virtuální sítě.
- V části Výjimky vyberte Povolit službám Azure v seznamu důvěryhodných služeb přístup k tomuto účtu úložiště.
Další informace najdete v tématu Práce s virtuálními sítěmi.
Stahování image z ACR selhává
Příznak: Tréninkové úlohy nedokážou načíst Docker image ze služby Azure Container Registry.
Příčina: Spravovaná identita výpočetních prostředků nemá v registru kontejneru roli ACRPull.
Řešení: Přiřaďte roli ACRPull:
az role assignment create \
--assignee <principal-id> \
--role acrpull \
--scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ContainerRegistry/registries/<registry-name>
Poznámka:
Pokud vytvoříte výpočetní cluster dříve, než bude existovat ACR pro pracovní prostor, musíte ručně přiřadit roli ACRPull.
Ověření identity uživatele v úkolu selže
Příznak: Úlohy, které používají identitu uživatele pro přístup k datům, selžou během ověřování kontrolního součtu.
Příčina: Komponenty kanálu je potřeba znovu nahrát po jejich vytvoření, a to ještě před povolením ověření identity uživatelů.
Řešení: Znovu nahrajte součásti potrubí pro regeneraci kontrolních součtů:
az ml component create --file <component-yaml> --resource-group <resource-group> --workspace-name <workspace-name>
Další řešení potíží s přístupem k datům najdete v tématu Řešení chyb přístupu k datům.