Dela via


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

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

Lär dig konfigurera autentisering till din Azure Machine Learning-arbetsyta från Azure CLI eller Azure Machine Learning SDK v2. Autentisering till din Azure Mašinsko učenje-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 för att autentisera en automatiserad process 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-tillägget för Mašinsko učenje (mltillägget eller CLI v2) är ett kommandoradsverktyg för att arbeta med Azure Mašinsko učenje. 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 Mašinsko učenje SDK v2 på en beräkningsinstans eller 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 Mašinsko učenje beräkningskluster 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. En dataexpert kan använda den, men inte ta bort eller skapa den. Mer information finns i Hantera åtkomst till Azure Mašinsko učenje-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 Mašinsko učenje-arbetsyta för information om hur du ger dem åtkomst till arbetsytan och andra åtgärder i Azure Mašinsko učenje.

Använda interaktiv autentisering

GÄLLER FÖR: Python SDK azure-ai-ml v2 (aktuell)

Interaktiv autentisering använder Azure Identity-paketet för Python. De flesta exempel används DefaultAzureCredential för att komma åt dina autentiseringsuppgifter. När en token behövs begär den en med flera identiteter (EnvironmentCredential, , ManagedIdentityCredential, SharedTokenCacheCredentialVisualStudioCodeCredential, AzureCliCredential, AzurePowerShellCredential) i sin tur och stoppar när en ger en token. Mer information finns i klassreferensen DefaultAzureCredential .

Följande kod är ett exempel på hur du använder DefaultAzureCredential för att autentisera. Om autentiseringen misslyckas DefaultAzureCredential används i stället en återställning av autentisering via webbläsaren.

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

När autentiseringsobjektet har skapats används KLASSEN MLClient för att ansluta till arbetsytan. Följande kod använder from_config() till exempel metoden för att läsa in anslutningsinformation:

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)

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.

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 gör den det och läser in en inloggningssida. 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 är ett JSON-dokument som liknar följande. Anteckna fälten clientId, clientSecretoch tenantId när 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 Mašinsko učenje 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 Mašinsko učenje arbetsyta.

Konfigurera en hanterad identitet

Viktigt!

Hanterad identitet stöds endast när du använder Azure Mašinsko učenje SDK från en virtuell Azure-dator, ett Azure Mašinsko učenje beräkningskluster eller 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-portalen väljer du din arbetsyta och väljer sedan Åtkomstkontroll (IAM).

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

  4. Välj den roll som du vill tilldela den hanterade identiteten. Till exempel Läsare. Läs mer om att tilldela roller i Tilldela Azure-roller via Azure Portal.

Hanterad identitet med beräkningskluster

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

Hanterad identitet med beräkningsinstans

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

Använda autentisering med tjänstens huvudnamn

GÄLLER FÖR: Python SDK azure-ai-ml v2 (aktuell)

Autentisering med tjänstens huvudnamn använder Azure Identity-paketet för Python. Klassen DefaultAzureCredential söker efter följande miljövariabler och använder värdena när de autentiseras som tjänstens huvudnamn:

  • AZURE_CLIENT_ID – Klient-ID:t returnerades när du skapade tjänstens huvudnamn.
  • AZURE_TENANT_ID – Klientorganisations-ID:t returnerades när du skapade tjänstens huvudnamn.
  • AZURE_CLIENT_SECRET – Lösenordet/autentiseringsuppgifterna som genererats för tjänstens huvudnamn.

Dricks

Under utvecklingen bör du överväga att använda python-dotenv-paketet för att ange dessa miljövariabler. Python-dotenv läser in miljövariabler från .env filer. Standardfilen .gitignore för Python exkluderar .env automatiskt filer, så de bör inte checkas in på några GitHub-lagringsplatser under utvecklingen.

I följande exempel visas hur du använder python-dotenv för att läsa in miljövariablerna från en .env fil och sedan använda DefaultAzureCredential för att skapa autentiseringsobjektet:

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

När autentiseringsobjektet har skapats används KLASSEN MLClient för att ansluta till arbetsytan. Följande kod använder from_config() till exempel metoden för att läsa in anslutningsinformation:

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)

Tjänstens huvudnamn kan också användas för att autentisera till Azure Mašinsko učenje REST API. Du använder beviljandeflödet för Microsoft Entra-ID-klientautentiseringsuppgifter, som tillåter tjänst-till-tjänst-anrop för huvudlös autentisering i automatiserade arbetsflöden.

Viktigt!

Om du använder Azure Active Directory Authentication Library (ADAL) för att hämta autentiseringsuppgifter rekommenderar vi att du migrerar till Microsoft Authentication Library (MSAL). ADAL-supporten upphörde den 30 juni 2022.

Information och exempel på autentisering med MSAL finns i följande artiklar:

Använda hanterad identitetsautentisering

GÄLLER FÖR: Python SDK azure-ai-ml v2 (aktuell)

Autentisering med en hanterad identitet använder Azure Identity-paketet för Python. Om du vill autentisera till arbetsytan från en virtuell dator eller ett beräkningskluster som har konfigurerats med en hanterad identitet använder du DefaultAzureCredential klassen . Den här klassen identifierar automatiskt om en hanterad identitet används och använder den hanterade identiteten för att autentisera till Azure-tjänster.

I följande exempel visas hur du använder DefaultAzureCredential klassen för att skapa autentiseringsobjektet och sedan använder MLClient klassen för att ansluta till arbetsytan:

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)

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. Följande är app-ID:t som ska användas för villkorlig åtkomst:

Program-ID:t Name Kommentar
d7304df8-741f-47d3-9bc2-df0e24e2071f Webbapp för Azure Mašinsko učenje Workbench Azure Machine Learning Studio
cb2ff863-7f30-4ced-ab89-a00194bcf6d9 Azure AI Studio-app Azure AI Studio

Sök efter tjänstens huvudnamn

Innan du lägger till principen för villkorlig åtkomst kontrollerar du att program-ID:t visas i avsnittet Företagsprogram i Azure-portalen:

Viktigt!

Om du vill utföra stegen i det här avsnittet måste du ha Microsoft Entra ID P2. Mer information finns i Microsoft Entra-licensiering.

  1. Sök efter företagsprogram i sökfältet överst i portalen och välj posten för företagsprogram.

    Skärmbild av sökfältet i Azure-portalen med en sökning efter

  2. Från Företagsprogram använder du fältet Sök efter programnamn eller objekt-ID för att söka efter den post som du vill använda med villkorlig åtkomst. Om en post visas finns det redan ett huvudnamn för tjänsten för program-ID:t. Hoppa över resten av stegen i det här avsnittet och gå till avsnittet Lägg till villkorlig åtkomst .

    Viktigt!

    Det enda filtret ska vara program-ID börjar med. Ta bort alla andra filter som kan finnas.

    Skärmbild av sökningen i Företagsprogram utan matchande resultat.

  3. Om ingen post visas använder du följande Azure PowerShell-cmdlet för att skapa ett huvudnamn för tjänsten för program-ID:t:

    New-AzAdServicePrincipal -ApplicationId "application-ID"
    

    Exempel: New-AzADServicePrincipal -ApplicationId "d7304df8-741f-47d3-9bc2-df0e24e2071f"

  4. När du har skapat tjänstens huvudnamn går du tillbaka till Företagsprogram och kontrollerar att du nu kan hitta program-ID:t. Du hittar listan över ID:t i avsnittet Använd villkorsstyrd åtkomst .

Lägga till villkorlig åtkomst

Om du vill använda villkorsstyrd åtkomst tilldelar du principen för villkorsstyrd åtkomst till program-ID:t. Om programmet inte visas i villkorsstyrd åtkomst använder du stegen i avsnittet Kontrollera tjänstens huvudnamn .

Nästa steg