Rigenerare le chiavi di accesso dell'account di archiviazione

Informazioni su come modificare le chiavi di accesso per gli account di Archiviazione di Azure usati da Azure Machine Learning. Azure Machine Learning può usare gli account di archiviazione per archiviare i dati o i modelli sottoposti a training.

Per motivi di sicurezza, potrebbe essere necessario modificare le chiavi di accesso per un account di Archiviazione di Azure. Quando si rigenera la chiave di accesso, Azure Machine Learning deve essere aggiornato per usare la nuova chiave. Azure Machine Learning può usare l'account di archiviazione sia per l'archiviazione del modello che come archivio dati.

Importante

Le credenziali registrate negli archivi dati vengono salvate nell'insieme di credenziali delle chiavi di Azure associato all'area di lavoro. Se l'eliminazione temporanea è abilitata per l'insieme di credenziali delle chiavi, questo articolo fornisce istruzioni per l'aggiornamento delle credenziali. Se si annulla la registrazione dell'archivio dati e si tenta di registrarlo nuovamente con lo stesso nome, questa azione avrà esito negativo. Per informazioni su come abilitare l'eliminazione temporanea in questo scenario, vedere Attivare l'eliminazione temporanea per un insieme di credenziali delle chiavi esistente.

Prerequisiti

Nota

I frammenti di codice in questo documento sono stati testati con la versione 1.0.83 di Python SDK.

Elementi da aggiornare

Gli account di archiviazione possono essere usati dall'area di lavoro di Azure Machine Learning (archiviazione di log, modelli, snapshot e così via) e come archivio dati. Il processo di aggiornamento dell'area di lavoro è un singolo comando dell'interfaccia della riga di comando di Azure e può essere eseguito dopo l'aggiornamento della chiave di archiviazione. Il processo di aggiornamento degli archivi dati è più complesso e richiede l'individuazione degli archivi dati che attualmente usano l'account di archiviazione e quindi ripetere la registrazione.

Importante

Aggiornare l'area di lavoro usando l'interfaccia della riga di comando di Azure e gli archivi dati usando Python contemporaneamente. L'aggiornamento di uno o l'altro non è sufficiente e può causare errori fino a quando non vengono aggiornati entrambi.

Per individuare gli account di archiviazione usati dagli archivi dati, usare il codice seguente:

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)

Questo codice cerca eventuali archivi dati registrati che usano Archiviazione di Azure con l'autenticazione della chiave ed elenca le informazioni seguenti:

  • Nome dell'archivio dati: nome dell'archivio dati in cui è registrato l'account di archiviazione.
  • Nome dell'account di archiviazione: il nome dell'account di Archiviazione di Azure.
  • Contenitore: il contenitore nell'account di archiviazione usato da questa registrazione.
  • Condivisione file: la condivisione file usata da questa registrazione.
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)

Questo codice cerca eventuali archivi dati registrati che usano Archiviazione di Azure ed elenca le informazioni seguenti:

  • Nome dell'archivio dati: nome dell'archivio dati in cui è registrato l'account di archiviazione.
  • Nome dell'account di archiviazione: il nome dell'account di Archiviazione di Azure.
  • Contenitore: il contenitore nell'account di archiviazione usato da questa registrazione.

Indica anche se l'archivio dati è relativo a un BLOB di Azure o a una condivisione file di Azure, in quanto sono disponibili metodi diversi per registrare nuovamente ogni tipo di archivio dati.

Se esiste una voce per l'account di archiviazione per cui si prevede di rigenerare le chiavi di accesso, salvare il nome dell'archivio dati, il nome dell'account di archiviazione e il nome del contenitore.

Aggiornare la chiave di accesso

Per aggiornare Azure Machine Learning per usare la nuova chiave, seguire questa procedura:

Importante

Eseguire tutti i passaggi, aggiornare sia l'area di lavoro usando l'interfaccia della riga di comando che gli archivi dati con Python. L'aggiornamento di uno o l'altro può causare errori fino a quando non vengono aggiornati entrambi.

  1. Rigenerare la chiave. Per informazioni sulla rigenerazione di una chiave di accesso, vedere Gestire le chiavi di accesso dell'account di archiviazione. Salvare la nuova chiave.

  2. L'area di lavoro di Azure Machine Learning sincronizza automaticamente la nuova chiave e inizia a usarla dopo un'ora. Per forzare immediatamente la sincronizzazione dell'area di lavoro con la nuova chiave, seguire questa procedura:

    1. Per accedere alla sottoscrizione di Azure che contiene l'area di lavoro usando il comando dell'interfaccia della riga di comando di Azure seguente:

      az login
      

      Suggerimento

      Dopo l'accesso, viene visualizzato un elenco di sottoscrizioni associate all'account Azure. Le informazioni della sottoscrizione con isDefault: true rappresentano la sottoscrizione attualmente attivata per i comandi dell’interfaccia della riga di comando di Azure. Questa sottoscrizione deve corrispondere a quella che contiene l'area di lavoro Azure Machine Learning. È possibile trovare l'ID sottoscrizione dal portale di Azure visitando la pagina Panoramica dell'area di lavoro.

      Per selezionare un'altra sottoscrizione, usare il comando az account set -s <subscription name or ID> e specificare il nome o l'ID sottoscrizione a cui passare. Per altre informazioni sulla selezione delle sottoscrizioni, vedere Usare più sottoscrizioni di Azure.

    2. Per aggiornare l'area di lavoro affinché usi la nuova chiave, usare il comando seguente. Sostituire myworkspace con il nome dell'area di lavoro di Azure Machine Learning e sostituire myresourcegroup con il nome del gruppo di risorse di Azure che contiene l'area di lavoro.

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

      Questo comando sincronizza automaticamente le nuove chiavi per l'account di archiviazione di Azure usato dall'area di lavoro.

  3. È possibile registrare nuovamente gli archivi dati che usano l'account di archiviazione tramite l'SDK o studio di Azure Machine Learning.

    1. Per registrare nuovamente gli archivi dati tramite Python SDK, usare i valori della sezione Elementi da aggiornare e la chiave del passaggio 1 con il codice seguente.

      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)
      

      Poiché è specificato overwrite=True, questo codice sovrascrive la registrazione esistente e l'aggiorna per l'uso della nuova chiave.

      # 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. Per registrare nuovamente gli archivi dati tramite Studio

      1. In Studio selezionare Dati nel riquadro sinistro in Risorse.

      2. Nella parte superiore selezionare Archivi dati.

      3. Selezionare l'archivio dati da aggiornare.

      4. Selezionare il pulsante Aggiorna credenziali in alto a sinistra.

      5. Usare la nuova chiave di accesso del passaggio 1 per popolare il modulo e fare clic su Salva.

        Se si aggiornano le credenziali per l'archivio dati predefinito, completare questo passaggio e ripetere il passaggio 2b per sincronizzare di nuovo la nuova chiave con l'archivio dati predefinito dell'area di lavoro.

Passaggi successivi

Per altre informazioni sull'uso degli archivi dati, vedere Usare gli archivi dati.

Per altre informazioni sulla registrazione di archivi dati, vedere le informazioni di riferimento sulla classe Datastore.