Dela via


Konfigurera autentisering för Azure Machine Learning-resurser och arbetsflöden med SDK v1

GÄLLER FÖR: Python SDK azureml v1

Lär dig hur du konfigurerar autentisering till din Azure Machine Learning-arbetsyta. Autentisering till din Azure Machine Learning-arbetsyta baseras på Microsoft Entra-ID för det mesta. I allmänhet finns det fyra autentiseringsarbetsflöden som du kan använda när du ansluter till arbetsytan:

  • Interaktiv: Du använder ditt konto i Microsoft Entra-ID för att antingen autentisera direkt eller för att hämta en token som används för autentisering. Interaktiv autentisering används under experimentering och iterativ utveckling. Med interaktiv autentisering kan du styra åtkomsten till resurser (till exempel en webbtjänst) per användare.

  • Tjänstens huvudnamn: Du skapar ett konto för tjänstens huvudnamn i Microsoft Entra-ID och använder det för att autentisera eller hämta en token. Ett huvudnamn för tjänsten används när du behöver en automatiserad process för att autentisera till tjänsten utan att användaren behöver interagera. Till exempel ett skript för kontinuerlig integrering och distribution som tränar och testar en modell varje gång träningskoden ändras.

  • Azure CLI-session: Du använder en aktiv Azure CLI-session för att autentisera. Azure CLI-autentisering används under experimentering och iterativ utveckling, eller när du behöver en automatiserad process för att autentisera till tjänsten med hjälp av en förautentiserad session. Du kan logga in på Azure via Azure CLI på din lokala arbetsstation, utan att lagra autentiseringsuppgifter i Python-kod eller uppmana användaren att autentisera. På samma sätt kan du återanvända samma skript som en del av pipelines för kontinuerlig integrering och distribution, samtidigt som du autentiserar Azure CLI med en identitet för tjänstens huvudnamn.

  • Hanterad identitet: När du använder Azure Machine Learning SDK på en virtuell Azure-dator kan du använda en hanterad identitet för Azure. Det här arbetsflödet gör att den virtuella datorn kan ansluta till arbetsytan med hjälp av den hanterade identiteten, utan att lagra autentiseringsuppgifter i Python-kod eller uppmana användaren att autentisera. Azure Machine Learning-beräkningskluster och beräkningsinstanser kan också konfigureras för att använda en hanterad identitet för att komma åt arbetsytan när du tränar modeller.

Oavsett vilket autentiseringsarbetsflöde som används används rollbaserad åtkomstkontroll i Azure (Azure RBAC) för att begränsa den åtkomstnivå (auktorisering) som tillåts till resurserna. En administratörs- eller automatiseringsprocess kan till exempel ha åtkomst till att skapa en beräkningsinstans, men inte använda den, medan en dataexpert kan använda den, men inte ta bort eller skapa den. Mer information finns i Hantera åtkomst till Azure Machine Learning-arbetsyta.

Villkorsstyrd åtkomst i Microsoft Entra kan användas för att ytterligare kontrollera eller begränsa åtkomsten till arbetsytan för varje autentiseringsarbetsflöde. En administratör kan till exempel endast tillåta åtkomst till arbetsytor från hanterade enheter.

Förutsättningar

Microsoft Entra ID

Alla autentiseringsarbetsflöden för din arbetsyta förlitar sig på Microsoft Entra-ID. Om du vill att användarna ska autentisera med enskilda konton måste de ha konton i ditt Microsoft Entra-ID. Om du vill använda tjänstens huvudnamn måste de finnas i ditt Microsoft Entra-ID. Hanterade identiteter är också en funktion i Microsoft Entra-ID.

Mer information om Microsoft Entra-ID finns i Vad är Microsoft Entra-autentisering.

När du har skapat Microsoft Entra-kontona kan du läsa Hantera åtkomst till Azure Machine Learning-arbetsytan för information om hur du ger dem åtkomst till arbetsytan och andra åtgärder i Azure Machine Learning.

Konfigurera ett huvudnamn för tjänsten

Om du vill använda tjänstens huvudnamn (SP) måste du först skapa SP. Ge den sedan åtkomst till din arbetsyta. Som tidigare nämnts används rollbaserad åtkomstkontroll i Azure (Azure RBAC) för att styra åtkomsten, så du måste också bestämma vilken åtkomst som ska beviljas SP.

Viktigt!

När du använder ett huvudnamn för tjänsten beviljar du den lägsta åtkomst som krävs för den uppgift som den används för. Du skulle till exempel inte bevilja en ägare eller deltagare åtkomst till tjänstens huvudnamn om allt det används för är att läsa åtkomsttoken för en webbdistribution.

Anledningen till att bevilja minst åtkomst är att tjänstens huvudnamn använder ett lösenord för att autentisera och att lösenordet kan lagras som en del av ett automationsskript. Om lösenordet läcker minimeras den skadliga användningen av SP om du har den minsta åtkomst som krävs för en viss uppgift.

Du bör regelbundet rotera hemligheter som lösenordet för tjänstens huvudnamn.

Det enklaste sättet att skapa ett SP och bevilja åtkomst till din arbetsyta är att använda Azure CLI. Använd följande steg för att skapa ett huvudnamn för tjänsten och ge den åtkomst till din arbetsyta:

Kommentar

Du måste vara administratör för prenumerationen för att kunna utföra alla dessa steg.

  1. Autentisera till din Azure-prenumeration:

    az login
    

    Om CLI kan öppna din standardwebbläsare så sker det och en inloggningssida läses in. Annars måste du öppna en webbläsare och följa anvisningarna på kommandoraden. Anvisningarna omfattar att bläddra till https://aka.ms/devicelogin och ange en auktoriseringskod.

    Om du har flera Azure-prenumerationer kan du använda az account set -s <subscription name or ID> kommandot för att ange prenumerationen. Mer information finns i Använda flera Azure-prenumerationer.

    Andra metoder för autentisering finns i Logga in med Azure CLI.

  2. Skapa tjänstens huvudnamn. I följande exempel skapas en SP med namnet ml-auth :

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

    Parametern --json-auth är tillgänglig i Azure CLI-versioner >= 2.51.0. Versioner före den här användningen --sdk-auth.

    Utdata kommer att vara en JSON som liknar följande. Anteckna fälten clientId, clientSecretoch tenantId eftersom du behöver dem för andra steg i den här artikeln.

    {
        "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. Hämta information om tjänstens huvudnamn med hjälp av värdet clientId som returnerades i föregående steg:

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

    Följande JSON är ett förenklat exempel på utdata från kommandot. Anteckna fältet objectId eftersom du behöver dess värde för nästa steg.

    {
        "accountEnabled": "True",
        "addIns": [],
        "appDisplayName": "ml-auth",
        ...
        ...
        ...
        "objectId": "your-sp-object-id",
        "objectType": "ServicePrincipal"
    }
    
  4. Om du vill bevilja åtkomst till arbetsytan och andra resurser som används av Azure Machine Learning använder du informationen i följande artiklar:

    Viktigt!

    Med ägaråtkomst kan tjänstens huvudnamn utföra praktiskt taget alla åtgärder på din arbetsyta. Det används i det här dokumentet för att visa hur du beviljar åtkomst. i en produktionsmiljö rekommenderar Microsoft att tjänstens huvudnamn beviljas den minsta åtkomst som krävs för att utföra den roll som du avser att utföra den. Information om hur du skapar en anpassad roll med den åtkomst som behövs för ditt scenario finns i Hantera åtkomst till Azure Machine Learning-arbetsytan.

Konfigurera en hanterad identitet

Viktigt!

Hanterad identitet stöds endast när du använder Azure Machine Learning SDK från en virtuell Azure-dator eller med ett Azure Machine Learning-beräkningskluster eller en beräkningsinstans.

Hanterad identitet med en virtuell dator

  1. Aktivera en systemtilldelad hanterad identitet för Azure-resurser på den virtuella datorn.

  2. Från Azure Portal väljer du din arbetsyta och sedan Åtkomstkontroll (IAM)..

  3. Välj Lägg till, Lägg till rolltilldelning för att öppna sidan Lägg till rolltilldelning.

  4. Tilldela följande roll. Läs mer om att tilldela roller i Tilldela Azure-roller via Azure Portal.

    Inställning Värde
    Roll Den roll som du vill tilldela.
    Tilldela åtkomst till Hanterad identitet
    Medlemmar Den hanterade identitet som du skapade tidigare

    Lägg till rolltilldelningssida i Azure Portal.

Hanterad identitet med beräkningskluster

Mer information finns i Konfigurera hanterad identitet för beräkningskluster.

Använda interaktiv autentisering

Viktigt!

Interaktiv autentisering använder webbläsaren och kräver cookies (inklusive cookies från tredje part). Om du har inaktiverat cookies kan du få ett felmeddelande som "det gick inte att logga in dig". Det här felet kan också inträffa om du har aktiverat Microsoft Entra multifaktorautentisering.

De flesta exempel i dokumentationen och exemplen använder interaktiv autentisering. När du till exempel använder SDK:t finns det två funktionsanrop som automatiskt uppmanar dig med ett användargränssnittsbaserat autentiseringsflöde:

  • Om du from_config() anropar funktionen utfärdas uppmaningen.

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

    Funktionen from_config() söker efter en JSON-fil som innehåller din anslutningsinformation för arbetsytan.

  • Workspace Om du använder konstruktorn för att tillhandahålla information om prenumerationer, resursgrupper och arbetsytor uppmanas även interaktiv autentisering.

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

Dricks

Om du har åtkomst till flera klienter kan du behöva importera klassen och uttryckligen definiera vilken klientorganisation du riktar in dig på. Om du anropar konstruktorn för InteractiveLoginAuthentication uppmanas du också att logga in liknande anropen ovan.

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

När du använder Azure CLI används kommandot för att autentisera az login CLI-sessionen. Mer information finns i Kom igång med Azure CLI.

Dricks

Om du använder SDK:et från en miljö där du tidigare har autentiserats interaktivt med hjälp av Azure CLI kan du använda klassen för att autentisera AzureCliAuthentication till arbetsytan med hjälp av de autentiseringsuppgifter som cachelagras av CLI:

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
               )

Använda autentisering med tjänstens huvudnamn

Om du vill autentisera till din arbetsyta från SDK använder du klasskonstruktorn med hjälp av ett huvudnamn för ServicePrincipalAuthentication tjänsten. Använd de värden du fick när du skapade tjänstleverantören som parametrar. Parametern tenant_id mappar till tenantId ovan, service_principal_id mappar till clientIdoch service_principal_password mappar till 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

Variabeln sp innehåller nu ett autentiseringsobjekt som du använder direkt i SDK:et. I allmänhet är det en bra idé att lagra de ID:er/hemligheter som används ovan i miljövariabler som visas i följande kod. Lagring i miljövariabler förhindrar att informationen av misstag checkas in på en GitHub-lagringsplats.

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'])

För automatiserade arbetsflöden som körs i Python och främst använder SDK kan du använda det här objektet som det är i de flesta fall för din autentisering. Följande kod autentiseras till din arbetsyta med hjälp av det autentiseringsobjekt som du skapade.

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

Använda hanterad identitetsautentisering

Använd klassen för att autentisera till arbetsytan från en virtuell dator, beräkningskluster eller beräkningsinstans som har konfigurerats med en hanterad identitet MsiAuthentication . I följande exempel visas hur du använder den här klassen för att autentisera till en arbetsyta:

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
                )

Använda villkorsstyrd åtkomst

Som administratör kan du tillämpa principer för villkorsstyrd åtkomst i Microsoft Entra för användare som loggar in på arbetsytan. Du kan till exempel kräva tvåfaktorautentisering eller endast tillåta inloggning från hanterade enheter. Om du vill använda villkorlig åtkomst för Azure Machine Learning-arbetsytor specifikt tilldelar du principen för villkorsstyrd åtkomst till appen med namnet Azure Machine Learning. App-ID:t är 0736f41a-0425-bdb5-1563eff02385.

Nästa steg