Partilhar via


Usar segredos de credenciais de autenticação em trabalhos de treinamento do Azure Machine Learning

APLICA-SE A: Python SDK azureml v1

Neste artigo, você aprenderá a usar segredos em trabalhos de treinamento com segurança. As informações de autenticação, como o seu nome de utilizador e palavra-passe, são secretas. Por exemplo, se você se conectar a um banco de dados externo para consultar dados de treinamento, precisará passar seu nome de usuário e senha para o contexto de trabalho remoto. Codificar esses valores em scripts de treinamento em texto não criptografado é inseguro, pois exporia o segredo.

Em vez disso, seu espaço de trabalho do Azure Machine Learning tem um recurso associado chamado Azure Key Vault. Use este Cofre de Chaves para passar segredos para trabalhos remotos com segurança por meio de um conjunto de APIs no SDK Python do Azure Machine Learning.

O fluxo padrão para o uso de segredos é:

  1. No computador local, faça logon no Azure e conecte-se ao seu espaço de trabalho.
  2. No computador local, defina um segredo no Cofre da Chave do Espaço de Trabalho.
  3. Envie um trabalho remoto.
  4. Dentro do trabalho remoto, obtenha o segredo do Cofre da Chave e use-o.

Definir segredos

No Azure Machine Learning, a classe Keyvault contém métodos para definir segredos. Em sua sessão Python local, primeiro obtenha uma referência ao Cofre da Chave do espaço de trabalho e, em seguida, use o set_secret() método para definir um segredo por 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 em seu código Python, pois é inseguro armazená-lo no arquivo como texto não criptografado. Em vez disso, obtenha o valor secreto de uma variável de ambiente, por exemplo, segredo de compilação do Azure DevOps, ou da entrada interativa do usuário.

Você pode listar nomes secretos usando o list_secrets() método e também há uma versão em lote,set_secrets() que permite definir vários segredos ao mesmo tempo.

Importante

Usar list_secrets() listará apenas segredos criados por meio set_secret() ou set_secrets() usando o SDK do Azure Machine Learning. Ele não listará segredos criados por algo diferente do SDK. Por exemplo, um segredo criado usando o portal do Azure ou o Azure PowerShell não será listado.

Você pode usar get_secret() para obter um valor secreto do cofre de chaves, independentemente de como ele foi criado. Assim, você pode recuperar segredos que não estão listados pelo list_secrets().

Obtenha segredos

Em seu código local, você pode usar o get_secret() método para obter o valor secreto pelo nome.

Para trabalhos enviados o Experiment.submit , use o get_secret() método com a Run classe. Como uma execução enviada reconhece seu espaço de trabalho, esse método atalho a instanciação do espaço de trabalho e retorna o valor secreto diretamente.

# Code in submitted job
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-o ou imprimindo-o.

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

Próximos passos