Verificatie instellen voor Azure Machine Learning-resources en -werkstromen

VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

Meer informatie over het instellen van verificatie voor uw Azure Machine Learning-werkruimte vanuit de Azure CLI of Azure Machine Learning SDK v2. Verificatie voor uw Azure Machine Learning-werkruimte is voor de meeste dingen gebaseerd op Microsoft Entra-id . Over het algemeen zijn er vier verificatiewerkstromen die u kunt gebruiken bij het maken van verbinding met de werkruimte:

  • Interactief: U gebruikt uw account in Microsoft Entra ID om rechtstreeks te verifiëren of om een token op te halen dat wordt gebruikt voor verificatie. Interactieve verificatie wordt gebruikt tijdens experimenten en iteratieve ontwikkeling. Met interactieve verificatie kunt u de toegang tot resources (zoals een webservice) per gebruiker beheren.

  • Service-principal: u maakt een service-principal-account in Microsoft Entra-id en gebruikt deze om een token te verifiëren of op te halen. Een service-principal wordt gebruikt wanneer u een geautomatiseerd proces nodig hebt om te verifiëren bij de service zonder tussenkomst van de gebruiker. Een script voor continue integratie en implementatie waarmee een model wordt getraind en getest telkens wanneer de trainingscode wordt gewijzigd.

  • Azure CLI-sessie: u gebruikt een actieve Azure CLI-sessie om te verifiëren. De Azure CLI-extensie voor Machine Learning (de ml extensie of CLI v2) is een opdrachtregelprogramma voor het werken met Azure Machine Learning. U kunt zich aanmelden bij Azure via de Azure CLI op uw lokale werkstation, zonder referenties op te slaan in Python-code of de gebruiker te vragen zich te verifiëren. Op dezelfde manier kunt u dezelfde scripts hergebruiken als onderdeel van pijplijnen voor continue integratie en implementatie, terwijl u de Azure CLI kunt verifiëren met een service-principal-identiteit.

  • Beheerde identiteit: Wanneer u de Azure Machine Learning SDK v2 gebruikt op een rekenproces of op een virtuele Azure-machine, kunt u een beheerde identiteit voor Azure gebruiken. Met deze werkstroom kan de VIRTUELE machine verbinding maken met de werkruimte met behulp van de beheerde identiteit, zonder referenties op te slaan in Python-code of de gebruiker te vragen zich te verifiëren. Azure Machine Learning-rekenclusters kunnen ook worden geconfigureerd voor het gebruik van een beheerde identiteit voor toegang tot de werkruimte bij het trainen van modellen.

Ongeacht de gebruikte verificatiewerkstroom wordt op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) gebruikt om het toegangsniveau (autorisatie) te bepalen dat is toegestaan voor de resources. Een beheerder of automatiseringsproces kan bijvoorbeeld toegang hebben tot het maken van een rekenproces, maar niet gebruiken, terwijl een data scientist het kan gebruiken, maar niet verwijderen of maken. Zie Toegang tot azure Machine Learning-werkruimte beheren voor meer informatie.

Voorwaardelijke toegang van Microsoft Entra kan worden gebruikt om de toegang tot de werkruimte voor elke verificatiewerkstroom verder te beheren of te beperken. Een beheerder kan bijvoorbeeld alleen toegang tot werkruimten toestaan vanaf beheerde apparaten.

Vereisten

Microsoft Entra ID

Alle verificatiewerkstromen voor uw werkruimte zijn afhankelijk van Microsoft Entra-id. Als u wilt dat gebruikers zich verifiëren met behulp van afzonderlijke accounts, moeten ze accounts hebben in uw Microsoft Entra-id. Als u service-principals wilt gebruiken, moeten deze bestaan in uw Microsoft Entra-id. Beheerde identiteiten zijn ook een functie van Microsoft Entra-id.

Zie Wat is Microsoft Entra-verificatie voor meer informatie over Microsoft Entra-id.

Zodra u de Microsoft Entra-accounts hebt gemaakt, raadpleegt u Toegang tot de Azure Machine Learning-werkruimte beheren voor informatie over het verlenen van toegang tot de werkruimte en andere bewerkingen in Azure Machine Learning.

Interactieve verificatie gebruiken

VAN TOEPASSING OP: Python SDK azure-ai-ml v2 (actueel)

Interactieve verificatie maakt gebruik van het Azure Identity-pakket voor Python. De meeste voorbeelden gebruiken DefaultAzureCredential om toegang te krijgen tot uw referenties. Wanneer een token nodig is, wordt er één aangevraagd met meerdere identiteiten (EnvironmentCredential, ManagedIdentityCredential, VisualStudioCodeCredentialSharedTokenCacheCredential, , AzureCliCredential) AzurePowerShellCredentialop zijn beurt, en stopt het wanneer een token wordt verstrekt. Zie voor meer informatie de verwijzing naar de klasse DefaultAzureCredential .

Hier volgt een voorbeeld van het gebruik DefaultAzureCredential van verificatie. Als het gebruik DefaultAzureCredential van verificatie mislukt, wordt in plaats daarvan een terugval van verificatie via uw webbrowser gebruikt.

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()

Nadat het referentieobject is gemaakt, wordt de MLClient-klasse gebruikt om verbinding te maken met de werkruimte. De volgende code gebruikt bijvoorbeeld de from_config() methode om verbindingsgegevens te laden:

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)

Een service-principal configureren

Als u een service-principal (SP) wilt gebruiken, moet u eerst de SP maken. Geef deze vervolgens toegang tot uw werkruimte. Zoals eerder vermeld, wordt op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) gebruikt om de toegang te beheren, dus u moet ook bepalen welke toegang de SP moet verlenen.

Belangrijk

Wanneer u een service-principal gebruikt, verleent u deze de minimale toegang die is vereist voor de taak waarvoor deze wordt gebruikt. U verleent bijvoorbeeld geen eigenaar of inzender van een service-principal als alleen het toegangstoken voor een webimplementatie wordt gelezen.

De reden voor het verlenen van de minste toegang is dat een service-principal een wachtwoord gebruikt om te verifiëren en het wachtwoord kan worden opgeslagen als onderdeel van een automatiseringsscript. Als het wachtwoord wordt gelekt, wordt het kwaadwillende gebruik van de SP geminimaliseerd als de minimale toegang is vereist voor een specifieke taak.

De eenvoudigste manier om een SP te maken en toegang te verlenen tot uw werkruimte is met behulp van de Azure CLI. Voer de volgende stappen uit om een service-principal te maken en deze toegang te verlenen tot uw werkruimte:

Notitie

U moet een beheerder van het abonnement zijn om al deze stappen uit te voeren.

  1. Verifiëren bij uw Azure-abonnement:

    az login
    

    Als de CLI uw standaardbrowser kan openen, gebeurt dat ook en wordt er een aanmeldingspagina gedownload. Anders moet u een browser openen en de aanwijzingen op de opdrachtregel volgen. Dit omvat het bladeren naar https://aka.ms/devicelogin en het invoeren van een autorisatiecode.

    Als u meerdere Azure-abonnementen hebt, kunt u de az account set -s <subscription name or ID> opdracht gebruiken om het abonnement in te stellen. Zie Meerdere Azure-abonnementen gebruiken voor meer informatie.

    Zie Aanmelden met Azure CLI voor andere verificatiemethoden.

  2. Maak de service-principal. In het volgende voorbeeld wordt een SP met de naam ml-auth gemaakt:

    az ad sp create-for-rbac --json-auth --name ml-auth --role Contributor --scopes /subscriptions/<subscription id>
    

    De parameter --json-auth is beschikbaar in Azure CLI-versies >= 2.51.0. Versies vóór dit gebruik --sdk-auth.

    De uitvoer is een JSON die vergelijkbaar is met de volgende. Noteer de clientIdvelden en clientSecrettenantId velden, omdat u deze nodig hebt voor andere stappen in dit artikel.

    {
        "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. Haal de details voor de service-principal op met behulp van de clientId waarde die in de vorige stap is geretourneerd:

    az ad sp show --id your-client-id
    

    De volgende JSON is een vereenvoudigd voorbeeld van de uitvoer van de opdracht. Noteer het objectId veld, omdat u de waarde voor de volgende stap nodig hebt.

    {
        "accountEnabled": "True",
        "addIns": [],
        "appDisplayName": "ml-auth",
        ...
        ...
        ...
        "objectId": "your-sp-object-id",
        "objectType": "ServicePrincipal"
    }
    
  4. Als u toegang wilt verlenen tot de werkruimte en andere resources die worden gebruikt door Azure Machine Learning, gebruikt u de informatie in de volgende artikelen:

    Belangrijk

    Met eigenaarstoegang kan de service-principal vrijwel elke bewerking uitvoeren in uw werkruimte. Het wordt in dit document gebruikt om te laten zien hoe u toegang verleent; In een productieomgeving raadt Microsoft aan de service-principal de minimale toegang te verlenen die nodig is om de rol uit te voeren waarvoor u deze wilt uitvoeren. Zie Toegang tot de Azure Machine Learning-werkruimte beheren voor informatie over het maken van een aangepaste rol met de toegang die nodig is voor uw scenario.

Een beheerde identiteit configureren

Belangrijk

Beheerde identiteit wordt alleen ondersteund wanneer u de Azure Machine Learning SDK van een virtuele Azure-machine, een Azure Machine Learning-rekencluster of een rekenproces gebruikt.

Beheerde identiteit met een VIRTUELE machine

  1. Schakel een door het systeem toegewezen beheerde identiteit in voor Azure-resources op de VM.

  2. Selecteer uw werkruimte in Azure Portal en selecteer vervolgens Toegangsbeheer (IAM).

  3. Selecteer Toevoegen, Roltoewijzing toevoegen om de pagina Roltoewijzing toevoegen te openen.

  4. Selecteer de rol die u wilt toewijzen aan de beheerde identiteit. Bijvoorbeeld Lezer. Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.

Beheerde identiteit met rekencluster

Zie Beheerde identiteit instellen voor rekenclusters voor meer informatie.

Beheerde identiteit met rekenproces

Zie Beheerde identiteit instellen voor rekenproces voor meer informatie.

Verificatie van service-principal gebruiken

VAN TOEPASSING OP: Python SDK azure-ai-ml v2 (actueel)

Verificatie met een service-principal maakt gebruik van het Azure Identity-pakket voor Python. De DefaultAzureCredential klasse zoekt naar de volgende omgevingsvariabelen en gebruikt de waarden bij het verifiëren als de service-principal:

  • AZURE_CLIENT_ID - De client-id die is geretourneerd toen u de service-principal maakte.
  • AZURE_TENANT_ID - De tenant-id die is geretourneerd toen u de service-principal maakte.
  • AZURE_CLIENT_SECRET - Het wachtwoord/de referentie die is gegenereerd voor de service-principal.

Tip

Overweeg tijdens de ontwikkeling het python-dotenv-pakket te gebruiken om deze omgevingsvariabelen in te stellen. Python-dotenv laadt omgevingsvariabelen uit .env bestanden. Het standaardbestand .gitignore voor Python sluit automatisch bestanden uit .env , zodat ze tijdens de ontwikkeling niet moeten worden ingecheckt bij gitHub-opslagplaatsen.

In het volgende voorbeeld ziet u hoe u python-dotenv gebruikt om de omgevingsvariabelen uit een .env bestand te laden en vervolgens DefaultAzureCredential het referentieobject te maken:

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")

Nadat het referentieobject is gemaakt, wordt de MLClient-klasse gebruikt om verbinding te maken met de werkruimte. De volgende code gebruikt bijvoorbeeld de from_config() methode om verbindingsgegevens te laden:

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)

De service-principal kan ook worden gebruikt om te verifiëren bij de Azure Machine Learning REST API. U gebruikt de microsoft Entra ID-clientreferentiestoekenningsstroom, waarmee service-naar-service-aanroepen voor headless verificatie in geautomatiseerde werkstromen mogelijk zijn.

Belangrijk

Als u momenteel Azure Active Directory Authentication Library (ADAL) gebruikt om referenties op te halen, raden we u aan om te migreren naar de Microsoft Authentication Library (MSAL). De ADAL-ondersteuning is beëindigd op 30 juni 2022.

Zie de volgende artikelen voor informatie en voorbeelden over verificatie met MSAL:

Verificatie van beheerde identiteit gebruiken

VAN TOEPASSING OP: Python SDK azure-ai-ml v2 (actueel)

Verificatie met een beheerde identiteit maakt gebruik van het Azure Identity-pakket voor Python. Gebruik DefaultAzureCredential de klasse om te verifiëren bij de werkruimte vanaf een VM of rekencluster dat is geconfigureerd met een beheerde identiteit. Deze klasse detecteert automatisch of een beheerde identiteit wordt gebruikt en gebruikt de beheerde identiteit om te verifiëren bij Azure-services.

In het volgende voorbeeld ziet u hoe u de DefaultAzureCredential klasse gebruikt om het referentieobject te maken en vervolgens de MLClient klasse gebruikt om verbinding te maken met de werkruimte:

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)

Voorwaardelijke toegang gebruiken

Als beheerder kunt u beleid voor voorwaardelijke toegang van Microsoft Entra afdwingen voor gebruikers die zich aanmelden bij de werkruimte. U kunt bijvoorbeeld tweeledige verificatie vereisen of aanmelden alleen toestaan vanaf beheerde apparaten. Als u voorwaardelijke toegang wilt gebruiken voor Azure Machine Learning-werkruimten, wijst u het beleid voor voorwaardelijke toegang toe aan de app met de naam Azure Machine Learning. De app-id is 0736f41a-0425-bdb5-1563eff02385.

Volgende stappen