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 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 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 Machine Learning (
ml
tillägget eller CLI v2) är ett kommandoradsverktyg för att arbeta med Azure Machine Learning. 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 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 Machine Learning-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 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
Skapa en Azure Machine Learning-arbetsyta.
Konfigurera utvecklingsmiljön eller använd en Azure Machine Learning-beräkningsinstans och installera Azure Machine Learning SDK v2.
Installera Azure CLI.
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.
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
, SharedTokenCacheCredential
VisualStudioCodeCredential
, 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.
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.
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
,clientSecret
ochtenantId
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" }
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" }
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, ett Azure Machine Learning-beräkningskluster eller en beräkningsinstans.
Hanterad identitet med en virtuell dator
Aktivera en systemtilldelad hanterad identitet för Azure-resurser på den virtuella datorn.
Från Azure Portal väljer du din arbetsyta och sedan Åtkomstkontroll (IAM)..
Välj Lägg till, Lägg till rolltilldelning för att öppna sidan Lägg till rolltilldelning.
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 Rest-API:et för Azure Machine Learning. 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:
- JavaScript – Migrera en JavaScript-app från ADAL.js till MSAL.js.
- Node.js – Migrera en Node.js app från Microsoft Authentication Library till MSAL.
- Python – Migreringsguide för Microsoft-autentiseringsbibliotek till MSAL för Python.
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 Machine Learning 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 Portal:
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.
Sök efter företagsprogram i sökfältet överst i portalen och välj posten för företagsprogram.
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.
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"
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 .