Nastavení ověřování pro prostředky a pracovní postupy služby Azure Machine Learning
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)
Zjistěte, jak nastavit ověřování pro váš pracovní prostor Azure Machine Learning z Azure CLI nebo sady Azure Machine Learning SDK verze 2. Ověřování v pracovním prostoru Azure Machine Learning je založené na ID Microsoft Entra pro většinu věcí. Obecně platí, že existují čtyři pracovní postupy ověřování, které můžete použít při připojování k pracovnímu prostoru:
Interaktivní: K přímému ověření nebo získání tokenu, který se používá k ověřování, použijete svůj účet v Microsoft Entra ID. Interaktivní ověřování se používá při experimentování a iterativním vývoji. Interaktivní ověřování umožňuje řídit přístup k prostředkům (například webové službě) na základě jednotlivých uživatelů.
Instanční objekt: V ID Microsoft Entra vytvoříte účet instančního objektu a použijete ho k ověření nebo získání tokenu. Instanční objekt se používá k ověření automatizovaného procesu ve službě bez nutnosti zásahu uživatele. Například skript kontinuální integrace a nasazení, který trénuje a testuje model při každé změně trénovacího kódu.
Relace Azure CLI: K ověření použijete aktivní relaci Azure CLI. Rozšíření Azure CLI pro Machine Learning (
ml
rozšíření nebo CLI v2) je nástroj příkazového řádku pro práci se službou Azure Machine Learning. K Azure se můžete přihlásit pomocí Azure CLI na místní pracovní stanici, aniž byste museli ukládat přihlašovací údaje v kódu Pythonu nebo vyzvat uživatele k ověření. Podobně můžete použít stejné skripty jako součást kanálů kontinuální integrace a nasazení a zároveň ověřovat Azure CLI pomocí identity instančního objektu.Spravovaná identita: Při použití sady Azure Machine Learning SDK v2 ve výpočetní instanci nebo na virtuálním počítači Azure můžete použít spravovanou identitu pro Azure. Tento pracovní postup umožňuje virtuálnímu počítači připojit se k pracovnímu prostoru pomocí spravované identity bez uložení přihlašovacích údajů v kódu Pythonu nebo výzvy k ověření uživatele. Výpočetní clustery Azure Machine Learning je také možné nakonfigurovat tak, aby používaly spravovanou identitu pro přístup k pracovnímu prostoru při trénování modelů.
Bez ohledu na použitý pracovní postup ověřování se řízení přístupu na základě role v Azure (Azure RBAC) používá k určení rozsahu úrovně přístupu (autorizace) povolených pro prostředky. Například proces správy nebo automatizace může mít přístup k vytvoření výpočetní instance, ale nemusí ji používat. I když ho datový vědec může použít, ale nemůže ho odstranit ani vytvořit. Další informace najdete v tématu Správa přístupu k pracovnímu prostoru Azure Machine Learning.
Podmíněný přístup Microsoft Entra lze použít k dalšímu řízení nebo omezení přístupu k pracovnímu prostoru pro každý pracovní postup ověřování. Správce může například povolit přístup k pracovnímu prostoru jenom ze spravovaných zařízení.
Požadavky
Vytvořte pracovní prostor Azure Machine Learning.
Nakonfigurujte vývojové prostředí nebo použijte výpočetní instanci služby Azure Machine Learning a nainstalujte sadu Azure Machine Learning SDK v2.
Nainstalujte rozhraní příkazového řádku Azure CLI.
Microsoft Entra ID
Všechny pracovní postupy ověřování pro váš pracovní prostor závisí na ID Microsoft Entra. Pokud chcete, aby se uživatelé ověřovali pomocí jednotlivých účtů, musí mít účty ve vašem ID Microsoft Entra. Pokud chcete použít instanční objekty, musí existovat ve vašem ID Microsoft Entra. Spravované identity jsou také funkcí Microsoft Entra ID.
Další informace o Microsoft Entra ID naleznete v tématu Co je ověřování Microsoft Entra.
Po vytvoření účtů Microsoft Entra najdete v tématu Správa přístupu k pracovnímu prostoru Azure Machine Learning informace o udělení přístupu k pracovnímu prostoru a dalším operacím ve službě Azure Machine Learning.
Použití interaktivního ověřování
PLATÍ PRO: Python SDK azure-ai-ml v2 (aktuální)
Interaktivní ověřování používá balíček Azure Identity pro Python. Většina příkladů používá DefaultAzureCredential
přístup k vašim přihlašovacím údajům. Když je token potřeba, vyžádá si jeden pomocí více identit (EnvironmentCredential
, VisualStudioCodeCredential
AzureCliCredential
ManagedIdentityCredential
SharedTokenCacheCredential
) AzurePowerShellCredential
zase zastavení, když jeden poskytuje token. Další informace naleznete v tématu DefaultAzureCredential třídy reference.
Následující kód je příkladem použití DefaultAzureCredential
k ověření. Pokud se ověřování nepovede DefaultAzureCredential
, použije se místo toho náhradní ověřování ve webovém prohlížeči.
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential
try:
credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")
except Exception as ex:
# Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work
# This will open a browser page for
credential = InteractiveBrowserCredential()
Po vytvoření objektu přihlašovacích údajů se třída MLClient použije k připojení k pracovnímu prostoru. Následující kód například používá metodu from_config()
k načtení informací o připojení:
from azure.ai.ml import MLClient
try:
ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
# NOTE: Update following workspace information to contain
# your subscription ID, resource group name, and workspace name
client_config = {
"subscription_id": "<SUBSCRIPTION_ID>",
"resource_group": "<RESOURCE_GROUP>",
"workspace_name": "<AZUREML_WORKSPACE_NAME>",
}
# write and reload from config file
import json, os
config_path = "../.azureml/config.json"
os.makedirs(os.path.dirname(config_path), exist_ok=True)
with open(config_path, "w") as fo:
fo.write(json.dumps(client_config))
ml_client = MLClient.from_config(credential=credential, path=config_path)
print(ml_client)
Konfigurace instančního objektu
Pokud chcete použít instanční objekt (SP), musíte nejprve vytvořit sp. Pak mu udělte přístup k vašemu pracovnímu prostoru. Jak už bylo zmíněno dříve, k řízení přístupu se používá řízení přístupu na základě role v Azure (Azure RBAC), takže musíte také rozhodnout, jaký přístup chcete udělit sp.
Důležité
Při použití instančního objektu mu udělte minimální přístup potřebný pro úlohu , pro které se používá. Například byste neudělili přístup vlastníka instančního objektu nebo přispěvatele, pokud se používá pro čtení přístupového tokenu pro nasazení webu.
Důvodem pro udělení nejnižšího přístupu je, že instanční objekt používá k ověření heslo a heslo může být uloženo jako součást automatizačního skriptu. Pokud dojde k úniku hesla, minimální přístup potřebný pro konkrétní úlohy minimalizuje škodlivé použití sp.
Nejjednodušší způsob, jak vytvořit sp a udělit přístup k pracovnímu prostoru, je pomocí Azure CLI. Pokud chcete vytvořit instanční objekt a udělit mu přístup k vašemu pracovnímu prostoru, postupujte následovně:
Poznámka:
Abyste mohli provést všechny tyto kroky, musíte být správcem předplatného.
Ověřte se ve svém předplatném Azure:
az login
Pokud rozhraní příkazového řádku může otevřít výchozí prohlížeč, provede to a načte přihlašovací stránku. Jinak musíte otevřít prohlížeč a postupovat podle pokynů na příkazovém řádku. Pokyny zahrnují procházení https://aka.ms/devicelogin a zadávání autorizačního kódu.
Pokud máte více předplatných Azure, můžete k nastavení předplatného použít
az account set -s <subscription name or ID>
příkaz. Další informace najdete v tématu Použití několika předplatných Azure.Další metody ověřování najdete v tématu Přihlášení pomocí Azure CLI.
Vytvořte instanční objekt. V následujícím příkladu se vytvoří sp s názvem ml-auth :
az ad sp create-for-rbac --json-auth --name ml-auth --role Contributor --scopes /subscriptions/<subscription id>
--json-auth
Parametr je k dispozici ve verzích >Azure CLI = 2.51.0. Verze před tímto použitím--sdk-auth
.Výstup je dokument JSON podobný následujícímu. Poznamenejte
clientId
si pole atenantId
poleclientSecret
, protože je potřebujete pro další kroky v tomto článku.{ "clientId": "your-client-id", "clientSecret": "your-client-secret", "subscriptionId": "your-sub-id", "tenantId": "your-tenant-id", "activeDirectoryEndpointUrl": "https://login.microsoftonline.com", "resourceManagerEndpointUrl": "https://management.azure.com", "activeDirectoryGraphResourceId": "https://graph.windows.net", "sqlManagementEndpointUrl": "https://management.core.windows.net:5555", "galleryEndpointUrl": "https://gallery.azure.com/", "managementEndpointUrl": "https://management.core.windows.net" }
Načtěte podrobnosti pro instanční objekt pomocí
clientId
hodnoty vrácené v předchozím kroku:az ad sp show --id your-client-id
Následující JSON je zjednodušený příklad výstupu z příkazu. Poznamenejte si
objectId
pole, protože budete potřebovat jeho hodnotu pro další krok.{ "accountEnabled": "True", "addIns": [], "appDisplayName": "ml-auth", ... ... ... "objectId": "your-sp-object-id", "objectType": "ServicePrincipal" }
Pokud chcete udělit přístup k pracovnímu prostoru a dalším prostředkům používaným službou Azure Machine Learning, použijte informace v následujících článcích:
Důležité
Přístup vlastníka umožňuje instančnímu objektu provádět prakticky jakoukoli operaci ve vašem pracovním prostoru. Používá se v tomto dokumentu k předvedení způsobu udělení přístupu; v produkčním prostředí Microsoft doporučuje udělit instančnímu objektu minimální přístup potřebný k provedení role, pro kterou ji máte v úmyslu. Informace o vytvoření vlastní role s přístupem potřebným pro váš scénář najdete v tématu Správa přístupu k pracovnímu prostoru Azure Machine Learning.
Konfigurace spravované identity
Důležité
Spravovaná identita se podporuje jenom při použití sady Azure Machine Learning SDK z virtuálního počítače Azure, výpočetního clusteru Azure Machine Learning nebo výpočetní instance.
Spravovaná identita s využitím virtuálního počítače
Povolte spravovanou identitu přiřazenou systémem pro prostředky Azure na virtuálním počítači.
Na webu Azure Portal vyberte svůj pracovní prostor a pak vyberte Řízení přístupu (IAM).
Výběrem možnosti Přidat, Přidat přiřazení role otevřete stránku Přidat přiřazení role.
Vyberte roli, kterou chcete přiřadit spravovanou identitu. Například Čtenář. Podrobný postup najdete v tématu Přiřazování rolí Azure s využitím webu Azure Portal.
Spravovaná identita s využitím výpočetního clusteru
Další informace najdete v tématu Nastavení spravované identity pro výpočetní cluster.
Spravovaná identita s výpočetní instancí
Další informace najdete v tématu Nastavení spravované identity pro výpočetní instanci.
Použití ověřování instančního objektu
PLATÍ PRO: Python SDK azure-ai-ml v2 (aktuální)
Ověřování pomocí instančního objektu používá balíček Azure Identity pro Python. Třída DefaultAzureCredential
hledá následující proměnné prostředí a používá hodnoty při ověřování jako instanční objekt:
AZURE_CLIENT_ID
– ID klienta vrácené při vytváření instančního objektu.AZURE_TENANT_ID
– ID tenanta vrácené při vytváření instančního objektu.AZURE_CLIENT_SECRET
– Heslo nebo přihlašovací údaje vygenerované pro instanční objekt.
Tip
Během vývoje zvažte použití balíčku python-dotenv k nastavení těchto proměnných prostředí. Python-dotenv načítá proměnné prostředí ze .env
souborů. Standardní .gitignore
soubor pythonu automaticky vyloučí .env
soubory, takže by se během vývoje neměly v úložištích GitHubu vrátit se změnami.
Následující příklad ukazuje použití python-dotenv k načtení proměnných prostředí ze .env
souboru a následné použití DefaultAzureCredential
k vytvoření objektu pověření:
from dotenv import load_dotenv
if ( os.environ['ENVIRONMENT'] == 'development'):
print("Loading environment variables from .env file")
load_dotenv(".env")
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")
Po vytvoření objektu přihlašovacích údajů se třída MLClient použije k připojení k pracovnímu prostoru. Následující kód například používá metodu from_config()
k načtení informací o připojení:
try:
ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
# NOTE: Update following workspace information to contain
# your subscription ID, resource group name, and workspace name
client_config = {
"subscription_id": "<SUBSCRIPTION_ID>",
"resource_group": "<RESOURCE_GROUP>",
"workspace_name": "<AZUREML_WORKSPACE_NAME>",
}
# write and reload from config file
import json, os
config_path = "../.azureml/config.json"
os.makedirs(os.path.dirname(config_path), exist_ok=True)
with open(config_path, "w") as fo:
fo.write(json.dumps(client_config))
ml_client = MLClient.from_config(credential=credential, path=config_path)
print(ml_client)
Instanční objekt se dá použít také k ověření v rozhraní REST API služby Azure Machine Learning. Používáte tok udělení přihlašovacích údajů klienta Microsoft Entra ID, který umožňuje volání typu služba-služba bezobslužné ověřování v automatizovaných pracovních postupech.
Důležité
Pokud k získání přihlašovacích údajů aktuálně používáte Azure Active Directory Authentication Library (ADAL), doporučujeme migrovat do knihovny MICROSOFT Authentication Library (MSAL). Podpora knihovny ADAL skončila 30. června 2022.
Informace a ukázky týkající se ověřování v knihovně MSAL najdete v následujících článcích:
- JavaScript – Jak migrovat javascriptovou aplikaci z ADAL.js na MSAL.js
- Node.js – Jak migrovat aplikaci Node.js z knihovny Microsoft Authentication Library do knihovny MSAL.
- Python – Průvodce migrací knihovny Microsoft Authentication Library do KNIHOVNY MSAL pro Python
Použití ověřování spravované identity
PLATÍ PRO: Python SDK azure-ai-ml v2 (aktuální)
Ověřování pomocí spravované identity používá balíček Azure Identity pro Python. Pokud se chcete ověřit v pracovním prostoru z virtuálního počítače nebo výpočetního clusteru, který je nakonfigurovaný pomocí spravované identity, použijte DefaultAzureCredential
třídu. Tato třída automaticky rozpozná, jestli se používá spravovaná identita, a používá spravovanou identitu k ověření ve službách Azure.
Následující příklad ukazuje použití DefaultAzureCredential
třídy k vytvoření objektu přihlašovacích údajů a potom pomocí MLClient
třídy pro připojení k pracovnímu prostoru:
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")
try:
ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
# NOTE: Update following workspace information to contain
# your subscription ID, resource group name, and workspace name
client_config = {
"subscription_id": "<SUBSCRIPTION_ID>",
"resource_group": "<RESOURCE_GROUP>",
"workspace_name": "<AZUREML_WORKSPACE_NAME>",
}
# write and reload from config file
import json, os
config_path = "../.azureml/config.json"
os.makedirs(os.path.dirname(config_path), exist_ok=True)
with open(config_path, "w") as fo:
fo.write(json.dumps(client_config))
ml_client = MLClient.from_config(credential=credential, path=config_path)
print(ml_client)
Použití podmíněného přístupu
Jako správce můžete vynutit zásady podmíněného přístupu Microsoft Entra pro uživatele, kteří se přihlašující k pracovnímu prostoru. Můžete například vyžadovat dvoufaktorové ověřování nebo povolit přihlášení jenom ze spravovaných zařízení. Toto jsou ID aplikací, která se mají použít pro podmíněný přístup:
ID aplikace | Název | Poznámka: |
---|---|---|
d7304df8-741f-47d3-9bc2-df0e24e2071f | Webová aplikace Azure Machine Learning Workbench | Studio Azure Machine Learning |
cb2ff863-7f30-4ced-ab89-a00194bcf6d9 | Aplikace Azure AI Studio | Azure AI Studio |
Kontrola instančního objektu
Před přidáním zásad podmíněného přístupu ověřte, že je ID aplikace uvedené v části Podnikové aplikace na webu Azure Portal:
Důležité
Chcete-li provést kroky v této části, musíte mít Microsoft Entra ID P2. Další informace najdete v tématu Licencování Microsoft Entra.
Vyhledejte podnikové aplikace ve vyhledávacím poli v horní části portálu a vyberte položku podnikové aplikace.
V podnikových aplikacích pomocí pole Hledat podle názvu aplikace nebo ID objektu vyhledejte položku, kterou chcete použít s podmíněným přístupem. Pokud se zobrazí položka, instanční objekt pro ID aplikace již existuje. Přeskočte zbývající kroky v této části a přejděte do části Přidat podmíněný přístup .
Důležité
Jediným filtrem by mělo být ID aplikace začínající. Odeberte všechny ostatní filtry, které mohou být přítomné.
Pokud se nezobrazí žádná položka, pomocí následující rutiny Azure PowerShellu vytvořte instanční objekt pro ID aplikace:
New-AzAdServicePrincipal -ApplicationId "application-ID"
Například
New-AzADServicePrincipal -ApplicationId "d7304df8-741f-47d3-9bc2-df0e24e2071f"
.Po vytvoření instančního objektu se vraťte do podnikových aplikací a ověřte, že teď můžete najít ID aplikace. Seznam ID najdete v části Použití podmíněného přístupu .
Přidání podmíněného přístupu
Pokud chcete použít podmíněný přístup, přiřaďte k ID aplikace zásady podmíněného přístupu. Pokud se aplikace nezobrazuje v podmíněném přístupu, postupujte podle kroků v části Kontrola instančního objektu.