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í k pracovnímu prostoru Azure Machine Učení 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á, když potřebujete automatizovaný proces k ověření 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 Učení (mlrozšíření nebo CLI v2) je nástroj příkazového řádku pro práci se službou Azure Machine Učení. 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 Učení 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 Učení 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 nepoužívá ji, zatímco ho datový vědec může použít, ale ne odstranit nebo vytvořit. Další informace najdete v tématu Správa přístupu k pracovnímu prostoru Azure Machine Učení.

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.

Jakmile vytvoříte účty Microsoft Entra, přečtěte si téma Správa přístupu k pracovnímu prostoru Učení Azure, kde najdete informace o tom, jak jim udělit přístup k pracovnímu prostoru a dalším operacím na Učení Azure Machine.

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ásleduje příklad 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 spustit výchozí prohlížeč, udělá 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 bude JSON podobný následujícímu. Poznamenejte clientIdsi pole a poleclientSecrettenantId, protože je budete potřebovat 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 Učení, 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 Učení.

Konfigurace spravované identity

Důležité

Spravovaná identita se podporuje jenom při použití sady Azure Machine Učení SDK z virtuálního počítače Azure, počítače Azure Učení výpočetního clusteru 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í AZURE Machine Učení REST API. 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í. Pokud chcete pro pracovní prostory Azure Machine Učení používat podmíněný přístup, přiřaďte zásady podmíněného přístupu aplikaci s názvem Azure Machine Učení. ID aplikace je 0736f41a-0425-bdb5-1563eff02385.

Další kroky