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

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, VisualStudioCodeCredentialAzureCliCredentialManagedIdentityCredentialSharedTokenCacheCredential) AzurePowerShellCredentialzase 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.

  1. 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.

  2. 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 clientIdsi pole a tenantId 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"
    }
    
  3. 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"
    }
    
  4. 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

  1. Povolte spravovanou identitu přiřazenou systémem pro prostředky Azure na virtuálním počítači.

  2. Na webu Azure Portal vyberte svůj pracovní prostor a pak vyberte Řízení přístupu (IAM).

  3. Výběrem možnosti Přidat, Přidat přiřazení role otevřete stránku Přidat přiřazení role.

  4. 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:

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.

  1. Vyhledejte podnikové aplikace ve vyhledávacím poli v horní části portálu a vyberte položku podnikové aplikace.

    Snímek obrazovky s vyhledávacím polem webu Azure Portal s hledáním

  2. 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é.

    Snímek obrazovky s hledáním podnikových aplikací bez odpovídajících výsledků

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

  4. 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.

Další kroky