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

APLICA-SE A: SDK do Python azure-ai-ml v2 (atual)

Informações de autenticação, como nome de usuário e senha, são segredos. Por exemplo, se você se conectar a um banco de dados externo para consultar dados de treinamento, precisará passar o 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 não é seguro, pois pode expor o segredo.

O Azure Key Vault permite armazenar e recuperar segredos com segurança. Neste artigo, saiba como recuperar segredos armazenados em um cofre de chaves em um trabalho de treinamento em execução em um cluster de cálculo.

Importante

O SDK do Python do Azure Machine Learning v2 e a extensão da CLI do Azure v2 para aprendizado de máquina não fornecem a funcionalidade de definir ou obter segredos. Em vez disso, as informações neste artigo usam a biblioteca de clientes dos Segredos do Azure Key Vault para Python.

Pré-requisitos

Antes de seguir as etapas neste artigo, verifique se você tem os seguintes pré-requisitos:

Dica

Muitos dos pré-requisitos nesta seção exigem acesso de Colaborador, Proprietário ou equivalente à sua assinatura do Azure ou ao Grupo de Recursos do Azure que contém os recursos. Talvez seja necessário entrar em contato com o administrador do Azure e pedir que ele execute essas ações.

  • Uma assinatura do Azure. Caso não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar. Experimente a versão gratuita ou paga do Azure Machine Learning.

  • Um Workspace do Azure Machine Learning. Se você não tiver um use as etapas do artigo Criar recursos para começar para criar um.

  • Um Azure Key Vault. Se você usou o artigo Criar recursos para começar para criar seu workspace, um cofre de chaves foi criado para você. Você também pode criar uma instância separada do cofre de chaves, usando as informações no artigo Início Rápido: criar um cofre de chaves.

    Dica

    Você não precisa usar o mesmo cofre de chaves que o workspace.

  • Um cluster de cálculo do Azure Machine Learning configurado para usar uma identidade gerenciada. O cluster pode ser configurado para uma identidade gerenciada atribuída pelo sistema ou pelo usuário.

  • Conceda a identidade gerenciada para o acesso do cluster de cálculo aos segredos armazenados no cofre de chaves. O método usado para conceder acesso depende de como o cofre de chaves foi configurado:

  • Um valor de segredo armazenado no cofre de chaves. Esse valor pode ser recuperado usando uma chave. Para obter mais informações, confira Início Rápido: definir e recuperar um segredo do Azure Key Vault.

    Dica

    O link de início rápido é para as etapas que usam o SDK do Python do Azure Key Vault. No índice da área de navegação à esquerda, existem links para outras formas de definir uma chave.

Como obter segredos

  1. Adicione os pacotes azure-keyvault-secrets e azure-identity ao ambiente do Azure Machine Learning usado ao treinar o modelo. Por exemplo, adicionando-os ao arquivo do Conda usado para criar o ambiente.

    O ambiente é usado para criar a imagem do Docker na qual o trabalho de treinamento é executado no cluster de cálculo.

  2. No código de treinamento, use o SDK de Identidade do Azure e a biblioteca de clientes do Key Vault para obter as credenciais de identidade gerenciada e autenticar-se no cofre de chaves:

    from azure.identity import DefaultAzureCredential
    from azure.keyvault.secrets import SecretClient
    
    credential = DefaultAzureCredential()
    
    secret_client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
    
  3. Depois de autenticar-se, use a biblioteca de clientes do Key Vault para recuperar um segredo, fornecendo a chave associada:

    secret = secret_client.get_secret("secret-name")
    print(secret.value)
    

Próximas etapas

Para obter um exemplo de envio de um trabalho de treinamento usando o SDK do Python do Azure Machine Learning v2, confira Treinar modelos com o SDK do Python v2.