Compartir vía


Regeneración de las claves de acceso de la cuenta de almacenamiento

Obtenga información sobre cómo cambiar las claves de acceso de las cuentas de Azure Storage que usa Azure Machine Learning. Azure Machine Learning puede usar cuentas de almacenamiento para almacenar datos o modelos entrenados.

Por motivos de seguridad, es posible que necesite cambiar las claves de acceso de una cuenta de Azure Storage. Cuando se regenera la clave de acceso, es necesario actualizar Azure Machine Learning para que use la nueva clave. Azure Machine Learning podría estar usando la cuenta de almacenamiento para el almacenamiento de modelos y como almacén de datos.

Importante

Las credenciales que se registran en almacenes de datos se guardan en la instancia de Azure Key Vault asociada al área de trabajo. Si tiene habilitada la eliminación temporal para Key Vault, en este artículo se incluyen instrucciones para actualizar las credenciales. Si anula el registro del almacén de información e intenta volver a registrarlo con el mismo nombre, esta acción producirá un error. Consulte Activación de la eliminación temporal de un almacén de claves existente para habilitar la eliminación temporal en este escenario.

Requisitos previos

Nota

Los fragmentos de código de este documento se probaron con la versión 1.0.83 del SDK de Python.

¿Qué se debe actualizar?

Las cuentas de almacenamiento pueden usarse como un espacio del área de trabajo de Azure Machine Learning para almacenar registros, modelos, instantáneas, etc. y como almacén de datos. El proceso para actualizar el área de trabajo implica un solo comando de la CLI de Azure y se puede ejecutar después de actualizar la clave de almacenamiento. El proceso de actualización de los almacenes de datos es más complicado. Conlleva detectar qué almacenes de datos usan actualmente la cuenta de almacenamiento y, después, volver a registrarlos.

Importante

Actualice al mismo tiempo el área de trabajo con la CLI de Azure y los almacenes de datos con Python. No basta con actualizar solo uno de estos dos elementos; de hecho, podrían producirse errores mientras no actualice ambos.

Para detectar qué cuentas de almacenamiento usan los almacenes de datos, use el código siguiente:

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)

Este código busca cualquier almacén de datos registrado que use Azure Storage con autenticación de clave, y enumera la siguiente información:

  • Nombre del almacén de datos: nombre del almacén de datos con el que está registrada la cuenta de almacenamiento.
  • Nombre de la cuenta de almacenamiento: nombre de la cuenta de Azure Storage.
  • Contenedor: contenedor de la cuenta de almacenamiento usado por este registro.
  • Recurso compartido de archivos: recurso compartido de archivos que usa este 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)

Este código busca los almacenes de datos registrados que usa Azure Storage y muestra la información siguiente:

  • Nombre del almacén de datos: nombre del almacén de datos con el que está registrada la cuenta de almacenamiento.
  • Nombre de la cuenta de almacenamiento: nombre de la cuenta de Azure Storage.
  • Contenedor: contenedor de la cuenta de almacenamiento usado por este registro.

También indica si el almacén de datos es para un blob de Azure o un recurso compartido de archivos de Azure, ya que hay distintos métodos para volver a registrar cada tipo de almacén de datos.

Si existe una entrada para la cuenta de almacenamiento cuyas claves de acceso planea regenerar, guarde el nombre del almacén de datos, de la cuenta de almacenamiento y del contenedor.

Actualización de la clave de acceso

Para actualizar Azure Machine Learning de modo que use la clave nueva, siga estos pasos:

Importante

Lleve a cabo todos los pasos, sin olvidarse de actualizar el área de trabajo con la CLI y los almacenes de datos con Python. Si solo actualiza uno de estos dos elementos, podrían producirse errores mientras no actualice ambos.

  1. Regenere la clave. Para obtener información sobre cómo regenerar una clave de acceso, vea Administración de claves de acceso de cuenta de almacenamiento. Guarde la clave nueva.

  2. El área de trabajo de Azure Machine Learning sincronizará automáticamente la nueva clave y comenzará a utilizarla después de una hora. Para forzar la sincronización inmediata del área de trabajo con la nueva clave, siga estos pasos:

    1. Para iniciar sesión en la suscripción de Azure que contiene el área de trabajo, use el siguiente comando de la CLI de Azure:

      az login
      

      Sugerencia

      Después de iniciar sesión, verá una lista de suscripciones asociadas con la cuenta de Azure. La información de suscripción con isDefault: true es la suscripción actualmente activada para los comandos de la CLI de Azure. Esta suscripción debe ser la misma que la que contiene el área de trabajo de Azure Machine Learning. Puede buscar la información de suscripción en la página de información general del área de trabajo en Azure Portal.

      Para seleccionar otra suscripción para utilizar los comandos de la CLI de Azure, ejecute el comando az account set -s <subscription> y especifique el nombre o id. de la suscripción a la que quiere cambiar. Para más información sobre la selección de suscripción, consulte Uso de varias suscripciones de Azure.

    2. Para actualizar el área de trabajo de modo que use la clave nueva, use el comando siguiente. Reemplace myworkspace por el nombre del área de trabajo de Azure Machine Learning y reemplace myresourcegroup por el nombre del grupo de recursos de Azure que contiene el área de trabajo.

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

      Este comando sincroniza automáticamente las nuevas claves de la cuenta de Azure Storage que usa el área de trabajo.

  3. Puede volver a registrar los almacenes de datos que usan la cuenta de almacenamiento a través del SDK o Azure Machine Learning Studio.

    1. Para volver a registrar los almacenes de datos mediante el SDK de Python, use los valores de la sección ¿Qué se debe actualizar? y la clave del paso 1 con el código siguiente.

      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)
      

      Puesto que se ha especificado overwrite=True, este código sobrescribe el registro existente y lo actualiza para que use la clave nueva.

      # 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 volver a registrar los almacenes de datos a través del estudio

      1. En Studio, seleccione Datos en el panel izquierdo en Activos.

      2. En la parte superior, seleccione Almacenes de datos.

      3. Seleccione el almacén de datos que desea actualizar.

      4. Seleccione el botón Actualizar credenciales en la parte superior izquierda.

      5. Use la nueva clave de acceso del paso 1 para rellenar el formulario y haga clic en Guardar.

        Si va a actualizar las credenciales para el almacén de datos predeterminado, complete este paso y repita el paso 2B para volver a sincronizar la nueva clave con el almacén de datos predeterminado del área de trabajo.

Pasos siguientes

para más información sobre el uso de almacenes de datos, consulte Uso de almacenes de datos.

Para obtener más información sobre cómo registrar almacenes de datos, vea la referencia de la clase Datastore.