Повторное создание ключей доступа для учетной записи хранения

Узнайте, как изменить ключи доступа для учетных записей хранения Azure, используемых Машинным обучением Azure. Машинное обучение Azure могут использовать учетные записи хранения для хранения данных или обученных моделей.

В целях безопасности может потребоваться изменить ключи доступа для учетной записи хранения Azure. При повторном создании ключа доступа Машинное обучение Azure необходимо обновить, чтобы использовать новый ключ. Машинное обучение Azure может использовать учетную запись хранения как для хранилища модели, так и для хранилища данных.

Важно!

Учетные данные, зарегистрированные в хранилищах данных, сохраняются в хранилище Azure Key Vault, связанном с рабочей областью. Если для Key Vault включено обратимое удаление, в этой статье приводятся инструкции по обновлению учетных данных. Если отменить регистрацию хранилища данных и попытаться повторно зарегистрировать его с тем же именем, это действие завершится ошибкой. Сведения о включении обратимого удаления в этом сценарии см. в разделе Включение обратимого удаления для существующего хранилища ключей.

Необходимые компоненты

Примечание.

Фрагменты кода в этом документе были протестированы с версией 1.0.83 пакета SDK для Python.

Что требует обновления

Учетные записи хранения могут использоваться рабочей областью Машинного обучения Azure (хранение журналов, моделей, моментальных снимков и т. д.) и в качестве хранилища данных. Процесс обновления рабочей области является единственной командой Azure CLI и может быть запущен после обновления ключа хранилища. Процесс обновления хранилищ данных больше вовлечен и требует обнаружения того, какие хранилища данных в настоящее время используют эту учетную запись хранения, а затем их повторная регистрация.

Важно!

Одновременно обновите рабочую область, используя Azure CLI и хранилища данных с помощью Python. Обновление только одного или другого не является достаточным, и может привести к ошибкам, пока оба не будут обновлены.

Чтобы найти учетные записи хранения, используемые хранилищами данных, используйте следующий код:

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)

Этот код ищет все зарегистрированные хранилища данных, использующие служба хранилища Azure с проверкой подлинности ключа, и содержит следующие сведения:

  • Имя хранилища данных: имя хранилища данных, в котором зарегистрирована учетная запись хранения.
  • storage_account_name — имя учетной записи хранения Azure.
  • Контейнер: контейнер в учетной записи хранения, используемый при регистрации.
  • Общая папка: общая папка, используемая этой регистрацией.
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)

Этот код ищет все зарегистрированные хранилища данных, в которых используется служба хранилища Azure, и перечисляет следующие сведения:

  • Имя хранилища данных: имя хранилища данных, в котором зарегистрирована учетная запись хранения.
  • storage_account_name — имя учетной записи хранения Azure.
  • Контейнер: контейнер в учетной записи хранения, используемый при регистрации.

Оно также указывает, предназначено ли хранилище данных для большого двоичного объекта Azure или файлового ресурса Azure, так как существуют различные методы повторной регистрации каждого типа хранилища данных.

Если для учетной записи хранения, в которой планируется повторное создание ключей доступа, существует запись, то сохраните имя хранилища данных, имя учетной записи хранения и имя контейнера.

Обновить ключ доступа

Чтобы обновить Машинное обучение Azure для использования нового ключа, выполните следующие действия.

Важно!

Выполните все действия, обновив рабочую область с помощью интерфейса командной строки и хранилища данных с помощью Python. Обновление только одного или другого может вызвать ошибки до тех пор, пока оба обновления не будут обновлены.

  1. Повторное создание ключа. Сведения о повторном создании ключа доступа см. в статье Управление ключами доступа учетной записи хранения. Сохраните новый ключ.

  2. Рабочая область Машинное обучение Azure будет автоматически синхронизировать новый ключ и начать использовать ее через час. Чтобы заставить рабочую область синхронизироваться с новым ключом немедленно, выполните следующие действия.

    1. Чтобы войти в подписку Azure, содержащую рабочую область, используйте следующую команду Azure CLI:

      az login
      

      Совет

      После входа в систему появится список подписок, связанных с учетной записью Azure. В сведениях о подписке с isDefault: true указана текущая активная подписка для команд Azure CLI. Эта подписка должна быть той же, которая содержит рабочую область Машинного обучения Azure. Идентификатор подписки можно найти на портал Azure, перейдя на страницу обзора рабочей области.

      Чтобы выбрать другую подписку, укажите имя или идентификатор этой подписки с помощью команды az account set -s <subscription name or ID>. См. дополнительные сведения о выборе нужной подписки при использовании нескольких подписок Azure.

    2. Чтобы обновить рабочую область для использования нового ключа, используйте следующую команду. Замените myworkspace именем рабочей области Машинного обучения Azure и замените myresourcegroup именем группы ресурсов Azure, содержащей рабочую область.

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

      Эта команда автоматически синхронизирует новые ключи для учетной записи хранения Azure, используемой рабочей областью.

  3. Вы можете повторно зарегистрировать хранилища данных, использующие эту учетную запись хранения, с помощью пакета SDK или Студией машинного обучения Azure.

    1. Чтобы повторно зарегистрировать хранилища данных с помощью пакета SDK для Python, используйте значения из раздела что необходимо обновить и ключ из шага 1 в следующем коде.

      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)
      

      Так как overwrite=True указан, этот код перезаписывает существующую регистрацию и обновляет ее для использования нового ключа.

      # 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. Повторная регистрация хранилищ данных через студию

      1. В студии выберите "Данные " на левой панели в разделе "Ресурсы".

      2. В верхней части выберите хранилища данных.

      3. Выберите хранилище данных, которое необходимо обновить.

      4. Нажмите кнопку обновить учетные данные в левом верхнем углу.

      5. Используйте новый ключ доступа из шага 1, чтобы заполнить форму, и нажмите кнопку сохранить.

        Если вы обновляете учетные данные для хранилища данных по умолчанию, выполните этот шаг и повторите шаг 2b для повторной синхронизации нового ключа с хранилищем данных по умолчанию рабочей области.

Следующие шаги

Дополнительные сведения об использовании хранилищ данных см. в разделе "Использование хранилищ данных".

Дополнительные сведения о регистрации хранилищ данных см в справочнике по классам Datastore.