Dela via


Använda autentiseringshemligheter för autentiseringsuppgifter i Azure Machine Learning-träningsjobb

GÄLLER FÖR:Azure Machine Learning SDK v1 för Python

Viktigt!

Den här artikeln innehåller information om hur du använder Azure Machine Learning SDK v1. SDK v1 är inaktuell från och med den 31 mars 2025. Stödet för det upphör den 30 juni 2026. Du kan installera och använda SDK v1 fram till det datumet. Dina befintliga arbetsflöden med SDK v1 fortsätter att fungera efter supportdatumet. De kan dock utsättas för säkerhetsrisker eller förändringar som bryter kompatibiliteten vid arkitektoniska förändringar i produkten.

Vi rekommenderar att du övergår till SDK v2 före den 30 juni 2026. Mer information om SDK v2 finns i Vad är Azure Machine Learning CLI och Python SDK v2? och SDK v2-referensen.

I den här artikeln får du lära dig hur du använder hemligheter i träningsjobb på ett säkert sätt. Autentiseringsinformation som ditt användarnamn och lösenord är hemligheter. Om du till exempel ansluter till en extern databas för att köra frågor mot träningsdata måste du skicka ditt användarnamn och lösenord till fjärrjobbkontexten. Att koda sådana värden till träningsskript i klartext är osäkert eftersom det skulle exponera hemligheten.

I stället har din Azure Machine Learning-arbetsyta en associerad resurs som kallas azure key vault. Använd det här Nyckelvalvet för att skicka hemligheter till fjärrjobb på ett säkert sätt via en uppsättning API:er i Azure Machine Learning Python SDK.

Standardflödet för att använda hemligheter är:

  1. Logga in på Azure på den lokala datorn och anslut till din arbetsyta.
  2. På den lokala datorn anger du en hemlighet i Key Vault för arbetsytan.
  3. Skicka ett fjärrjobb.
  4. I fjärrjobbet hämtar du hemligheten från Key Vault och använder den.

Ange hemligheter

I Azure Machine Learning innehåller klassen Keyvault metoder för att ange hemligheter. I din lokala Python-session hämtar du först en referens till nyckelvalvet för arbetsytan och använder set_secret() sedan metoden för att ange en hemlighet efter namn och värde. Metoden set_secret uppdaterar det hemliga värdet om namnet redan finns.

from azureml.core import Workspace
from azureml.core import Keyvault
import os


ws = Workspace.from_config()
my_secret = os.environ.get("MY_SECRET")
keyvault = ws.get_default_keyvault()
keyvault.set_secret(name="mysecret", value = my_secret)

Placera inte det hemliga värdet i Python-koden eftersom det är osäkert att lagra det i filen som klartext. Hämta i stället det hemliga värdet från en miljövariabel, till exempel Azure DevOps-bygghemlighet eller från interaktiva användarindata.

Du kan lista hemliga namn med hjälp av list_secrets() metoden och det finns också en batchversion,set_secrets() som gör att du kan ange flera hemligheter i taget.

Viktigt!

Om du använder list_secrets() visas endast hemligheter som skapats via set_secret() eller set_secrets() med Hjälp av Azure Machine Learning SDK. Den visar inte hemligheter som skapats av något annat än SDK:et. En hemlighet som skapats med hjälp av Azure Portal eller Azure PowerShell visas till exempel inte.

Du kan använda get_secret() för att hämta ett hemligt värde från nyckelvalvet, oavsett hur det skapades. Så du kan hämta hemligheter som inte visas av list_secrets().

Hämta hemligheter

I din lokala kod kan du använda get_secret() metoden för att hämta det hemliga värdet efter namn.

För jobb som skickats Experiment.submit använder du get_secret() metoden med Run klassen . Eftersom en skickad körning är medveten om dess arbetsyta genvägar den här metoden instansiering av arbetsytan och returnerar det hemliga värdet direkt.

# Code in submitted job
from azureml.core import Experiment, Run

run = Run.get_context()
secret_value = run.get_secret(name="mysecret")

Var noga med att inte exponera det hemliga värdet genom att skriva eller skriva ut det.

Det finns också en batchversion, get_secrets() för åtkomst till flera hemligheter samtidigt.