Delen via


Verificatiereferentiegeheimen gebruiken in Azure Machine Learning-trainingstaken

VAN TOEPASSING OP: Python SDK azureml v1

In dit artikel leert u hoe u geheimen veilig kunt gebruiken in trainingstaken. Verificatiegegevens, zoals uw gebruikersnaam en wachtwoord, zijn geheimen. Als u bijvoorbeeld verbinding maakt met een externe database om een query uit te voeren op trainingsgegevens, moet u uw gebruikersnaam en wachtwoord doorgeven aan de context van de externe taak. Het coderen van dergelijke waarden in trainingsscripts in duidelijke tekst is onveilig omdat het geheim hierdoor zichtbaar wordt.

In plaats daarvan heeft uw Azure Machine Learning-werkruimte een gekoppelde resource met de naam Azure Key Vault. Gebruik deze Key Vault om geheimen veilig door te geven aan externe taken via een set API's in de Azure Machine Learning Python SDK.

De standaardstroom voor het gebruik van geheimen is:

  1. Meld u op de lokale computer aan bij Azure en maak verbinding met uw werkruimte.
  2. Stel op de lokale computer een geheim in Werkruimtesleutelkluis in.
  3. Dien een externe taak in.
  4. Haal binnen de externe taak het geheim op uit Key Vault en gebruik deze.

Geheimen instellen

In Azure Machine Learning bevat de keyvault-klasse methoden voor het instellen van geheimen. In uw lokale Python-sessie verkrijgt u eerst een verwijzing naar uw werkruimte Key Vault en gebruikt u vervolgens de set_secret() methode om een geheim op naam en waarde in te stellen. De methode set_secret werkt de geheime waarde bij als de naam al bestaat.

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)

Plaats de geheime waarde niet in uw Python-code omdat deze onveilig is om deze in het bestand op te slaan als duidelijke tekst. Haal in plaats daarvan de geheime waarde op uit een omgevingsvariabele, bijvoorbeeld een buildgeheim van Azure DevOps of uit interactieve gebruikersinvoer.

U kunt geheime namen vermelden met behulp van de list_secrets() methode en er is ook een batchversie, set_secrets() waarmee u meerdere geheimen tegelijk kunt instellen.

Belangrijk

Met behulp van list_secrets() deze lijst worden alleen geheimen weergegeven die zijn gemaakt via set_secret() of set_secrets() met behulp van de Azure Machine Learning SDK. Er worden geen geheimen weergegeven die zijn gemaakt door iets anders dan de SDK. Een geheim dat is gemaakt met behulp van Azure Portal of Azure PowerShell, wordt bijvoorbeeld niet vermeld.

U kunt get_secret() een geheime waarde ophalen uit de sleutelkluis, ongeacht hoe deze is gemaakt. U kunt dus geheimen ophalen die niet worden vermeld door list_secrets().

Geheimen ophalen

In uw lokale code kunt u de get_secret() methode gebruiken om de geheime waarde op naam op te halen.

Gebruik de get_secret() methode voor verzonden Experiment.submit taken met de Run klasse. Omdat een ingediende uitvoering op de hoogte is van de werkruimte, wordt met deze methode de instantie van de werkruimte snelkoppelingen gemaakt en wordt de geheime waarde rechtstreeks geretourneerd.

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

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

Wees voorzichtig met het niet beschikbaar maken van de geheime waarde door deze te schrijven of af te drukken.

Er is ook een batchversie, get_secrets() voor toegang tot meerdere geheimen tegelijk.

Volgende stappen