Regenerar chaves de acesso da conta de armazenamento

Saiba como alterar as chaves de acesso para contas de Armazenamento do Azure usadas pelo Azure Machine Learning. O Azure Machine Learning pode usar contas de armazenamento para armazenar dados ou modelos treinados.

Por motivos de segurança, talvez seja necessário alterar as chaves de acesso de uma conta de Armazenamento do Azure. Quando você regenera a chave de acesso, o Aprendizado de Máquina do Azure deve ser atualizado para usar a nova chave. O Aprendizado de Máquina do Azure pode estar usando a conta de armazenamento para armazenamento de modelo e como armazenamento de dados.

Importante

As credenciais registradas com armazenamentos de dados são salvas em seu Cofre de Chaves do Azure associado ao espaço de trabalho. Se você tiver a exclusão suave habilitada para o Cofre da Chave, este artigo fornece instruções para atualizar as credenciais. Se você cancelar o registro do armazenamento de dados e tentar registrá-lo novamente com o mesmo nome, essa ação falhará. Consulte Ativar Soft Delete para um cofre de chaves existente para saber como ativar a soft delete neste cenário.

Pré-requisitos

  • Uma área de trabalho do Azure Machine Learning. Para obter mais informações, consulte o artigo Criar recursos do espaço de trabalho.

Nota

Os trechos de código neste documento foram testados com a versão 1.0.83 do Python SDK.

O que precisa ser atualizado

As contas de armazenamento podem ser usadas pelo espaço de trabalho do Azure Machine Learning (armazenando logs, modelos, instantâneos etc.) e como um armazenamento de dados. O processo para atualizar o espaço de trabalho é um único comando da CLI do Azure e pode ser executado após a atualização da chave de armazenamento. O processo de atualização de armazenamentos de dados é mais envolvido e requer descobrir quais armazenamentos de dados estão usando atualmente a conta de armazenamento e, em seguida, registrá-los novamente.

Importante

Atualize o espaço de trabalho usando a CLI do Azure e os armazenamentos de dados usando Python, ao mesmo tempo. Atualizar apenas um ou outro não é suficiente e pode causar erros até que ambos sejam atualizados.

Para descobrir as contas de armazenamento usadas por seus armazenamentos de dados, use o seguinte código:

from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

#Enter details of your Azure Machine Learning workspace
subscription_id = '<SUBSCRIPTION_ID>'
resource_group = '<RESOURCE_GROUP>'
workspace_name = '<AZUREML_WORKSPACE_NAME>'

ml_client = MLClient(credential=DefaultAzureCredential(),
                        subscription_id=subscription_id, 
                        resource_group_name=resource_group,
                        workspace_name=workspace_name)

# list all the datastores
datastores = ml_client.datastores.list()
for ds in datastores:
    if ds.credentials.type == "account_key":
        if ds.type.name == "AZURE_BLOB":
            print("Blob store - datastore name: " + ds.name + ", storage account name: " +
                  ds.account_name + ", container name: " + ds.container_name)
        if ds.type.name == "AZURE_FILE":
            print("Blob store - datastore name: " + ds.name + ", storage account name: " +
                  ds.account_name + ", file share name: " + ds.file_share_name)

Esse código procura todos os armazenamentos de dados registrados que usam o Armazenamento do Azure com autenticação de chave e lista as seguintes informações:

  • Nome do armazenamento de dados: o nome do armazenamento de dados no qual a conta de armazenamento está registrada.
  • Nome da conta de armazenamento: o nome da conta de Armazenamento do Azure.
  • Contêiner: O contêiner na conta de armazenamento usado por este registro.
  • Partilha de ficheiros: a partilha de ficheiros utilizada por este registo.
import azureml.core
from azureml.core import Workspace, Datastore

ws = Workspace.from_config()

default_ds = ws.get_default_datastore()
print("Default datstore: " + default_ds.name + ", storage account name: " +
      default_ds.account_name + ", container name: " + default_ds.container_name)

datastores = ws.datastores
for name, ds in datastores.items():
    if ds.datastore_type == "AzureBlob":
        print("Blob store - datastore name: " + name + ", storage account name: " +
              ds.account_name + ", container name: " + ds.container_name)
    if ds.datastore_type == "AzureFile":
        print("File share - datastore name: " + name + ", storage account name: " +
              ds.account_name + ", container name: " + ds.container_name)

Este código procura quaisquer armazenamentos de dados registados que utilizem o Armazenamento do Azure e lista as seguintes informações:

  • Nome do armazenamento de dados: o nome do armazenamento de dados no qual a conta de armazenamento está registrada.
  • Nome da conta de armazenamento: o nome da conta de Armazenamento do Azure.
  • Contêiner: O contêiner na conta de armazenamento usado por este registro.

Ele também indica se o armazenamento de dados é para um Blob do Azure ou um compartilhamento de Arquivo do Azure, pois há métodos diferentes para registrar novamente cada tipo de armazenamento de dados.

Se existir uma entrada para a conta de armazenamento para a qual você planeja regenerar chaves de acesso, salve o nome do armazenamento de dados, o nome da conta de armazenamento e o nome do contêiner.

Atualizar a chave de acesso

Para atualizar o Azure Machine Learning para usar a nova chave, use as seguintes etapas:

Importante

Execute todas as etapas, atualizando o espaço de trabalho usando a CLI e os armazenamentos de dados usando Python. Atualizar apenas um ou outro pode causar erros até que ambos sejam atualizados.

  1. Regenere a chave. Para obter informações sobre como regenerar uma chave de acesso, consulte Gerenciar chaves de acesso da conta de armazenamento. Salve a nova chave.

  2. O espaço de trabalho do Azure Machine Learning sincronizará automaticamente a nova chave e começará a usá-la após uma hora. Para forçar o espaço de trabalho a sincronizar com a nova chave imediatamente, use as seguintes etapas:

    1. Para entrar na assinatura do Azure que contém seu espaço de trabalho usando o seguinte comando da CLI do Azure:

      az login
      

      Gorjeta

      Depois de iniciar sessão, vê uma lista de subscrições associadas à sua conta do Azure. As informações de assinatura com isDefault: true são a assinatura atualmente ativada para comandos da CLI do Azure. Essa assinatura deve ser a mesma que contém seu espaço de trabalho do Azure Machine Learning. Você pode encontrar a ID da assinatura no portal do Azure visitando a página de visão geral do seu espaço de trabalho..

      Para selecionar outra assinatura, use o comando e especifique o az account set -s <subscription name or ID> nome ou ID da assinatura para a qual mudar. Para obter mais informações sobre a seleção de assinaturas, consulte Usar várias assinaturas do Azure.

    2. Para atualizar o espaço de trabalho para usar a nova chave, use o comando a seguir. Substitua pelo nome do espaço de trabalho do Azure Machine Learning e substitua myworkspacemyresourcegroup pelo nome do grupo de recursos do Azure que contém o espaço de trabalho.

      az ml workspace sync-keys -n myworkspace -g myresourcegroup
      

      Este comando sincroniza automaticamente as novas chaves para a conta de armazenamento do Azure usada pelo espaço de trabalho.

  3. Você pode registrar novamente o(s) armazenamento(s) de dados que usam a conta de armazenamento por meio do SDK ou do estúdio de Aprendizado de Máquina do Azure.

    1. Para registrar novamente datastores por meio do Python SDK, use os valores da seção O que precisa ser atualizado e a chave da etapa 1 com o código a seguir.

      from azure.ai.ml.entities import AzureBlobDatastore, AccountKeyConfiguration
      from azure.ai.ml import MLClient
      from azure.identity import DefaultAzureCredential
      
      subscription_id = '<SUBSCRIPTION_ID>'
      resource_group = '<RESOURCE_GROUP>'
      workspace_name = '<AZUREML_WORKSPACE_NAME>'
      
      ml_client = MLClient(credential=DefaultAzureCredential(),
                              subscription_id=subscription_id, 
                              resource_group_name=resource_group,
                              workspace_name=workspace_name)
      
      blob_datastore1 = AzureBlobDatastore(
          name="your datastore name",
          description="Description",
          account_name="your storage account name",
          container_name="your container name",
          protocol="https",
          credentials=AccountKeyConfiguration(
              account_key="new storage account key"
          ),
      )
      ml_client.create_or_update(blob_datastore1)
      

      Uma vez que overwrite=True é especificado, esse código substitui o registro existente e o atualiza para usar a nova chave.

      # Re-register the blob container
      ds_blob = Datastore.register_azure_blob_container(workspace=ws,
                                                datastore_name='your datastore name',
                                                container_name='your container name',
                                                account_name='your storage account name',
                                                account_key='new storage account key',
                                                overwrite=True)
      # Re-register file shares
      ds_file = Datastore.register_azure_file_share(workspace=ws,
                                            datastore_name='your datastore name',
                                            file_share_name='your container name',
                                            account_name='your storage account name',
                                            account_key='new storage account key',
                                            overwrite=True)
      
      
    2. Para registar novamente datastores através do estúdio

      1. No estúdio, selecione Dados no painel esquerdo em Ativos.

      2. Na parte superior, selecione Datastores.

      3. Selecione qual armazenamento de dados você deseja atualizar.

      4. Selecione o botão Atualizar credenciais no canto superior esquerdo.

      5. Use sua nova chave de acesso da etapa 1 para preencher o formulário e clique em Salvar.

        Se você estiver atualizando credenciais para seu armazenamento de dados padrão, conclua esta etapa e repita a etapa 2b para ressincronizar sua nova chave com o armazenamento de dados padrão do espaço de trabalho.

Próximos passos

para obter mais informações sobre como usar armazenamentos de dados, consulte Usar armazenamentos de dados.

Para obter mais informações sobre como registrar armazenamentos de dados, consulte a referência de Datastore classe.