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. Azure Machine Learning pode usar contas de armazenamento para armazenar dados ou modelos treinados.

Para fins 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, Azure Machine Learning deve ser atualizado para usar a nova chave. Azure Machine Learning pode estar usando a conta de armazenamento para o armazenamento de modelo e como um repositório de armazenamento.

Importante

As credenciais registradas com repositórios de armazenamento são salvas em seu Azure Key Vault associado ao espaço de trabalho. Se você tiver a exclusão reversível habilitada para seu Key Vault, este artigo fornecerá instruções para atualizar as credenciais. Se você cancelar o registro do repositório de armazenamento e tentar registrá-lo novamente com o mesmo nome, essa ação falhará. Consulte Ativar a exclusão reversível para um cofre de chaves existente para obter informações sobre como habilitar a exclusão reversível.

Pré-requisitos

Observação

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

O que precisa ser atualizado

As contas de armazenamento podem ser usadas pelo espaço de trabalho Azure Machine Learning (armazenando logs, modelos, instantâneos, etc.) e como um repositório de armazenamento. O processo para atualizar o espaço de trabalho é um único CLI do Azure comando e pode ser executado após a atualização da chave de armazenamento. O processo de atualização de repositórios de armazenamento é mais envolvido e requer a descoberta de quais armazenamentos de armazenamento estão usando a conta de armazenagem no momento e, em seguida, o registro deles novamente.

Importante

Atualize o espaço de trabalho usando o CLI do Azure e os repositórios de armazenamento que usam o 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 que são usadas por seus repositórios de armazenamento, 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 qualquer armazenamento de dados registrado que use o Armazenamento do Azure com autenticação por chave e lista as seguintes informações:

  • Nome do repositório de armazenamento: o nome do armazenamento de datastore no qual a conta de repositório está registrada.
  • Storage account name: O nome da conta do Armazenamento do Azure.
  • Contêiner: o contêiner na conta de armazenamento que é usado por esse registro.
  • Compartilhamento de arquivos: o compartilhamento de arquivos usado por esse registro.
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)

Esse código procura por todos os armazenamentos de dados registrados que usam o armazenamento do Azure e lista as seguintes informações:

  • Nome do repositório de armazenamento: o nome do armazenamento de datastore no qual a conta de repositório está registrada.
  • Storage account name: O nome da conta do Armazenamento do Azure.
  • Contêiner: o contêiner na conta de armazenamento que é usado por esse registro.

Ele também indica se o repositório de armazenamento é para um blob do Azure ou um compartilhamento de arquivos do Azure, já que há métodos diferentes para registrar novamente cada tipo de repositório de armazenamento.

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

Atualizar a tecla de acesso

Para atualizar 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 repositórios de armazenamento usando o Python. Atualizar apenas um ou outro pode causar erros até que ambos sejam atualizados.

  1. Regenerar a chave. Para obter informações sobre como regenerar uma chave de acesso, consulte gerenciar chaves de acesso da conta de armazenamento. Salvar a nova chave.

  2. O espaço de trabalho 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 para a nova chave imediatamente, use os seguintes passos:

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

      az login
      

      Dica

      Depois de entrar, você verá uma lista de assinaturas associadas à sua conta do Azure. A informação de assinatura com isDefault: true é a assinatura ativada no momento para os comandos da CLI do Azure. Essa assinatura precisa ser a mesma que contém o seu workspace do Azure Machine Learning. Você pode encontrar as informações de assinatura na página de visão geral do seu workspace no portal do Azure.

      Para selecionar outra assinatura para usar nos comandos da CLI do Azure, execute o comando az account set -s <subscription> e especifique o nome ou ID da assinatura para a qual alternar. Para obter mais informações sobre a seleção da assinatura, confira 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 myworkspace pelo nome do espaço de trabalho Azure Machine Learning e substitua myresourcegroup 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
      

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

  3. Você pode registrar novamente os armazenamentos de os (s) que usam a conta de armazenamento por meio do SDK ou do Azure Machine Learning Studio.

    1. Para registrar novamente os repositórios de armazenamento por meio do SDK do Python, 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)
      

      Como 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 registrar novamente os armazenamentos de dados por meio do estúdio

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

      2. Na parte superior, selecione Armazenamentos de Dados.

      3. Selecione qual repositório de armazenamento você deseja atualizar.

      4. Selecione o botão Atualizar credenciais na parte superior esquerda.

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

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

Próximas etapas

Para obter mais informações sobre como usar armazenamentos de dados, confira Usar armazenamentos de dados.

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