Use segredos de credencial de autenticação em Azure Machine Learning treinos

Neste artigo, aprende-se a usar segredos em treinos de forma segura. As informações de autenticação, como o seu nome de utilizador e palavra-passe, são segredos. Por exemplo, se ligar a uma base de dados externa para consultar dados de treino, terá de passar o seu nome de utilizador e palavra-passe para o contexto de execução remota. Codificar tais valores em scripts de treino em texto claro é inseguro, pois exporia o segredo.

Em vez disso, o seu espaço de trabalho Azure Machine Learning tem um recurso associado chamado Azure Key Vault. Use este Cofre-Chave para passar segredos para correr remotamente através de um conjunto de APIs no Azure Machine Learning Python SDK.

O fluxo padrão para a utilização de segredos é:

  1. No computador local, faça login no Azure e ligue-se ao seu espaço de trabalho.
  2. No computador local, estabeleça um segredo no Cofre da Chave do Espaço de Trabalho.
  3. Envie uma execução remota.
  4. Dentro da corrida remota, pegue o segredo do Key Vault e use-o.

Definir segredos

No Azure Machine Learning, a classe Keyvault contém métodos para definir segredos. Na sua sessão de Python local, obtenha primeiro uma referência ao seu espaço de trabalho Key Vault e, em seguida, use o set_secret() método para definir um segredo pelo nome e valor. O método set_secret atualiza o valor secreto se o nome já existir.

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)

Não coloque o valor secreto no seu código Python, pois é inseguro guardá-lo em ficheiro como texto claro. Em vez disso, obtenha o valor secreto a partir de uma variável ambiental, por exemplo, Azure DevOps construir segredo, ou a partir da entrada interativa do utilizador.

Pode listar nomes secretos usando o list_secrets() método e há também uma versão de lote,set_secrets() que lhe permite definir vários segredos de cada vez.

Importante

A utilização list_secrets() de apenas irá listar segredos criados através set_secret() ou utilizando o set_secrets() Azure ML SDK. Não vai enumerar segredos criados por algo que não o SDK. Por exemplo, um segredo criado usando o portal Azure ou Azure PowerShell não será listado.

Podes usar get_secret() para obter um valor secreto do cofre, independentemente de como foi criado. Para que possa recuperar segredos que não estão listados list_secrets() por.

Obter segredos

No seu código local, pode utilizar o get_secret() método para obter o valor secreto pelo nome.

Para as execuções Experiment.submit submetidas, utilize o método com a get_secret() Run classe. Como uma execução submetida está ciente do seu espaço de trabalho, este método atalhos o espaço de trabalho instantâneo e devolve o valor secreto diretamente.

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

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

Tenha cuidado para não expor o valor secreto escrevendo ou imprimindo.

Há também uma versão de lote, get_secrets() para aceder a vários segredos ao mesmo tempo.

Passos seguintes