Delen via


Verificatie instellen voor Azure Machine Learning-resources en -werkstromen met SDK v1

VAN TOEPASSING OP: Python SDK azureml v1

Meer informatie over het instellen van verificatie voor uw Azure Machine Learning-werkruimte. 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. Azure CLI-verificatie wordt gebruikt tijdens experimenten en iteratieve ontwikkeling, of wanneer u een geautomatiseerd proces nodig hebt om te verifiëren bij de service met behulp van een vooraf geverifieerde sessie. 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 op een virtuele Azure-machine gebruikt, 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 en rekeninstanties kunnen ook worden geconfigureerd om een beheerde identiteit te gebruiken 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.

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 of met een Azure Machine Learning-rekencluster of 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. Wijs de volgende rol toe. Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.

    Instelling Weergegeven als
    Role De rol die u wilt toewijzen.
    Toegang toewijzen aan Beheerde identiteit
    Leden De beheerde identiteit die u eerder hebt gemaakt

    Pagina Roltoewijzing toevoegen in Azure Portal.

Beheerde identiteit met rekencluster

Zie Beheerde identiteit instellen voor rekenclusters voor meer informatie.

Interactieve verificatie gebruiken

Belangrijk

Interactieve verificatie maakt gebruik van uw browser en vereist cookies (inclusief cookies van derden). Als u cookies hebt uitgeschakeld, krijgt u mogelijk een foutmelding zoals 'we kunnen u niet aanmelden'. Deze fout kan ook optreden als u Meervoudige Verificatie van Microsoft Entra hebt ingeschakeld.

De meeste voorbeelden in de documentatie en voorbeelden maken gebruik van interactieve verificatie. Wanneer u bijvoorbeeld de SDK gebruikt, zijn er twee functie-aanroepen die u automatisch vragen met een verificatiestroom op basis van een gebruikersinterface:

  • Als u de from_config() functie aanroept, wordt de prompt weergegeven.

    from azureml.core import Workspace
    ws = Workspace.from_config()
    

    De functie from_config() zoekt naar een JSON-bestand met de verbindingsgegevens van de werkruimte.

  • Als u de Workspace constructor gebruikt om abonnements-, resourcegroep- en werkruimtegegevens op te geven, wordt ook om interactieve verificatie gevraagd.

    ws = Workspace(subscription_id="your-sub-id",
                  resource_group="your-resource-group-id",
                  workspace_name="your-workspace-name"
                  )
    

Tip

Als u toegang hebt tot meerdere tenants, moet u mogelijk de klasse importeren en expliciet definiëren welke tenant u wilt gebruiken. Als u de constructor aanroept InteractiveLoginAuthentication , wordt u ook gevraagd u aan te melden, vergelijkbaar met de bovenstaande aanroepen.

from azureml.core.authentication import InteractiveLoginAuthentication
interactive_auth = InteractiveLoginAuthentication(tenant_id="your-tenant-id")

Wanneer u de Azure CLI gebruikt, wordt de az login opdracht gebruikt om de CLI-sessie te verifiëren. Zie Aan de slag met Azure CLI voor meer informatie.

Tip

Als u de SDK gebruikt vanuit een omgeving waarin u eerder interactief hebt geverifieerd met behulp van de Azure CLI, kunt u de AzureCliAuthentication klasse gebruiken om te verifiëren bij de werkruimte met behulp van de referenties die in de cache van de CLI zijn opgeslagen:

from azureml.core.authentication import AzureCliAuthentication
cli_auth = AzureCliAuthentication()
ws = Workspace(subscription_id="your-sub-id",
               resource_group="your-resource-group-id",
               workspace_name="your-workspace-name",
               auth=cli_auth
               )

Verificatie van service-principal gebruiken

Als u zich wilt verifiëren bij uw werkruimte vanuit de SDK met behulp van een service-principal, gebruikt u de ServicePrincipalAuthentication klasseconstructor. Gebruik de waarden die u hebt gekregen bij het maken van de serviceprovider als de parameters. De tenant_id parameter wordt van bovenaf tenantId toegewezen, service_principal_id wordt toegewezen aan clientIden service_principal_password wordt toegewezen aan clientSecret.

from azureml.core.authentication import ServicePrincipalAuthentication

sp = ServicePrincipalAuthentication(tenant_id="your-tenant-id", # tenantID
                                    service_principal_id="your-client-id", # clientId
                                    service_principal_password="your-client-secret") # clientSecret

De sp variabele bevat nu een verificatieobject dat u rechtstreeks in de SDK gebruikt. Over het algemeen is het een goed idee om de id's/geheimen op te slaan die hierboven worden gebruikt in omgevingsvariabelen, zoals wordt weergegeven in de volgende code. Opslaan in omgevingsvariabelen voorkomt dat de gegevens per ongeluk worden ingecheckt in een GitHub-opslagplaats.

import os

sp = ServicePrincipalAuthentication(tenant_id=os.environ['AML_TENANT_ID'],
                                    service_principal_id=os.environ['AML_PRINCIPAL_ID'],
                                    service_principal_password=os.environ['AML_PRINCIPAL_PASS'])

Voor geautomatiseerde werkstromen die worden uitgevoerd in Python en de SDK voornamelijk gebruiken, kunt u dit object in de meeste gevallen gebruiken voor uw verificatie. De volgende code wordt geverifieerd bij uw werkruimte met behulp van het verificatieobject dat u hebt gemaakt.

from azureml.core import Workspace

ws = Workspace.get(name="ml-example",
                   auth=sp,
                   subscription_id="your-sub-id",
                   resource_group="your-rg-name")
ws.get_details()

Verificatie van beheerde identiteit gebruiken

Gebruik MsiAuthentication de klasse om te verifiëren bij de werkruimte vanaf een VM, rekencluster of rekenproces dat is geconfigureerd met een beheerde identiteit. In het volgende voorbeeld ziet u hoe u deze klasse gebruikt om te verifiëren bij een werkruimte:

from azureml.core.authentication import MsiAuthentication

msi_auth = MsiAuthentication()

ws = Workspace(subscription_id="your-sub-id",
                resource_group="your-resource-group-id",
                workspace_name="your-workspace-name",
                auth=msi_auth
                )

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