Partager via


Utiliser des secrets d’authentification dans des travaux d’apprentissage Azure Machine Learning

S’APPLIQUE À :SDK Python azureml v1

Cet article explique comment utiliser des secrets en toute sécurité dans des travaux d’apprentissage. Les informations d’authentification, telles que votre nom d’utilisateur et votre mot de passe, sont des secrets. Par exemple, si vous vous connectez à une base de données externe pour interroger des données d’apprentissage, vous devez transmettre vos nom d’utilisateur et mot de passe au contexte du travail distant. La programmation de telles valeurs dans des scripts d’entraînement en texte clair n’est pas sécurisée, car elle exposerait le secret.

Au lieu de cela, votre espace de travail Azure Machine Learning a une ressource associée appelée Azure Key Vault. Utilisez ce coffre de clés pour transmettre des secrets de façon sécurisée aux travaux distants par le biais d’un ensemble d’API dans le SDK Python pour Azure Machine Learning.

Le flux standard pour l’utilisation de secrets est le suivant :

  1. Sur l’ordinateur local, connectez-vous à Azure, puis à votre espace de travail.
  2. Sur l’ordinateur local, définissez un secret dans le coffre de clés de l’espace de travail.
  3. Envoyez un travail distant.
  4. Dans le travail distant, récupérez le secret à partir de Key Vault et utilisez-le.

Définir des secrets

Dans Azure Machine Learning, la classe Keyvault contient des méthodes pour définir des secrets. Dans votre session Python locale, obtenez d’abord une référence au coffre de clés de votre espace de travail, puis utilisez la méthode set_secret() pour définir un secret à l’aide d’un nom et d’une valeur. La méthode set_secret met à jour la valeur de secret si le nom existe.

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)

Ne placez pas la valeur du secret dans votre code Python, car il n’est pas sûr de la stocker dans un fichier en texte clair. Au lieu de cela, obtenez la valeur du secret à partir d’une variable d’environnement telle qu’un secret de la build Azure DevOps, ou à partir d’une entrée d’utilisateur interactive.

Vous pouvez lister les noms des secrets à l’aide de la méthode list_secrets(), et il existe également une version par lot, set_secrets(), qui vous permet de définir plusieurs secrets à la fois.

Important

Utiliser list_secrets() listera uniquement les secrets crées via set_secret() ou set_secrets() utilisant le Kit de développement logiciel (SDK) Azure Machine Learning. Les secrets créés par autre chose que le kit de développement logiciel (SDK) ne seront pas listés. Par exemple, un secret créé à l’aide du portail Azure ou Azure PowerShell ne figurera pas dans la liste.

Vous pouvez utiliser get_secret() pour obtenir la valeur d’un secret à partir du coffre de clés, quelle que soit la façon dont il a été créé. Vous pouvez ainsi récupérer les secrets qui ne sont pas répertoriés par list_secrets() .

Get secrets (Obtenir les secrets)

Dans votre code local, vous pouvez utiliser la méthode get_secret() pour obtenir la valeur de secret par son nom.

Pour les travaux envoyés via Experiment.submit, utilisez la méthode get_secret() avec la classe Run. Une exécution soumise ayant connaissance de son espace de travail, cette méthode raccourcit l’instanciation de l’espace de travail et retourne directement la valeur du secret.

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

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

Veillez à ne pas exposer la valeur de secret en l’écrivant ou en l’imprimant.

Il existe également une version par lot, get_secrets(), pour l’accès à plusieurs secrets à la fois.

Étapes suivantes