Neugenerieren der Zugriffsschlüssel für Speicherkonten

Erfahren Sie, wie Sie die Zugriffsschlüssel für Azure Storage-Konten ändern, die von Azure Machine Learning verwendet werden. Azure Machine Learning kann Speicherkonten verwenden, um Daten oder trainierte Modelle zu speichern.

Aus Sicherheitsgründen müssen Sie möglicherweise die Zugriffsschlüssel für ein Azure Storage-Konto ändern. Wenn Sie den Zugriffsschlüssel neu generieren, muss Azure Machine Learning aktualisiert werden, um den neuen Schlüssel zu verwenden. Azure Machine Learning kann das Speicherkonto sowohl für die Modellspeicherung als auch als Datenspeicher verwenden.

Wichtig

Anmeldeinformationen, die bei Datenspeichern registriert sind, werden in Ihrer Azure Key Vault-Instanz gespeichert, die dem Arbeitsbereich zugeordnet ist. Wenn Sie das vorläufige Löschen für Ihren Schlüsseltresor aktiviert haben, finden Sie in diesem Artikel Informationen zum Aktualisieren von Anmeldeinformationen. Wenn Sie die Registrierung des Datenspeichers aufheben und versuchen, ihn unter demselben Namen erneut zu registrieren, tritt bei dieser Aktion ein Fehler auf. Informationen zum Aktivieren des vorläufigen Löschens in diesem Szenario finden Sie unter Aktivieren des vorläufigen Löschens für einen vorhandenen Schlüsseltresor.

Voraussetzungen

Hinweis

Die Codeausschnitte in diesem Dokument wurden mit Version 1.0.83 des Python SDK getestet.

Was aktualisiert werden muss

Speicherkonten können vom Azure Machine Learning-Arbeitsbereich (Speichern von Protokollen, Modellen, Snapshots usw.) und als Datenspeicher verwendet werden. Der Prozess zur Aktualisierung des Arbeitsbereichs ist ein einzelner Azure CLI-Befehl und kann nach der Aktualisierung des Speicherschlüssels ausgeführt werden. Der Prozess der Aktualisierung von Datenspeichern ist aufwändiger und erfordert es, herauszufinden, welche Datenspeicher derzeit das Speicherkonto verwenden, und sie dann neu zu registrieren.

Wichtig

Aktualisieren Sie den Arbeitsbereich mit der Azure CLI und die Datenspeicher mit Python gleichzeitig. Die Aktualisierung nur des einen oder anderen ist nicht ausreichend und kann zu Fehlern führen, bis beide aktualisiert werden.

Um die Speicherkonten zu ermitteln, die von Ihren Datenspeichern verwendet werden, verwenden Sie den folgenden Code:

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)

Dieser Code sucht nach allen registrierten Datenspeichern, die Azure Storage mit Schlüsselauthentifizierung verwenden, und listet die folgenden Informationen auf:

  • Datenspeichername: Der Name des Datenspeichers, unter dem das Speicherkonto registriert ist.
  • Azure Storage-Kontoname: Der Name des Azure Storage-Kontos.
  • Container: Der Container im Speicherkonto, der für diese Registrierung verwendet wird.
  • Dateifreigabe: Die Dateifreigabe, die von dieser Registrierung verwendet wird.
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)

Dieser Code sucht nach allen registrierten Datenspeichern, die Azure Storage verwenden, und listet die folgenden Informationen auf:

  • Datenspeichername: Der Name des Datenspeichers, unter dem das Speicherkonto registriert ist.
  • Azure Storage-Kontoname: Der Name des Azure Storage-Kontos.
  • Container: Der Container im Speicherkonto, der für diese Registrierung verwendet wird.

Außerdem wird angegeben, ob der Datenspeicher für ein Azure-Blob oder eine Azure-Dateifreigabe gedacht ist, da verschiedene Methoden zum erneuten Registrieren der einzelnen Datenspeichertypen vorhanden sind.

Wenn ein Eintrag für das Speicherkonto existiert, für das Sie eine Neugenerierung der Zugriffsschlüssel planen, speichern Sie den Namen des Datenspeichers, den Namen des Speicherkonto-Namens und den Containernamen.

Aktualisieren des Zugriffsschlüssels

Um Azure Machine Learning so zu aktualisieren, dass der neue Schlüssel verwendet wird, gehen Sie wie folgt vor:

Wichtig

Führen Sie alle Schritte aus, indem Sie sowohl den Arbeitsbereich über die CLI als auch die Datenspeicher über Python aktualisieren. Die Aktualisierung nur des einen oder anderen kann zu Fehlern führen, bis beide aktualisiert werden.

  1. Generieren Sie den Schlüssel neu. Informationen zur Neugenerierung eines Zugriffsschlüssels finden Sie im Artikel Verwaltung von Speicherkonto-Zugriffsschlüsseln. Speichern Sie den neuen Schlüssel.

  2. Im Azure Machine Learning-Arbeitsbereich wird der neue Schlüssel automatisch synchronisiert und nach einer Stunde verwendet. Wenn Sie erzwingen möchten, dass der Arbeitsbereich sofort mit dem neuen Schlüssel synchronisiert wird, führen Sie die folgenden Schritte aus:

    1. Um sich bei dem Azure-Abonnement anzumelden, das Ihren Arbeitsbereich enthält, verwenden Sie den folgenden Azure CLI-Befehl:

      az login
      

      Tipp

      Nach der Anmeldung sehen Sie eine Liste der mit Ihrem Azure-Konto verknüpften Abonnements. Die Abonnementinformation mit isDefault: true ist das derzeit aktivierte Abonnement für Azure CLI-Befehle. Dieses Abonnement muss dasselbe sein, das Ihren Azure Machine Learning-Arbeitsbereich enthält. Sie finden die Abonnement-ID im Azure-Portal, indem Sie zur Übersichtsseite Ihres Arbeitsbereichs navigieren.

      Um ein anderes Abonnement auszuwählen, verwenden Sie den Befehl az account set -s <subscription name or ID>, und geben Sie den Namen oder die ID des Abonnements an, zu dem Sie wechseln möchten. Weitere Informationen zur Abonnementauswahl finden Sie unter Verwenden mehrerer Azure-Abonnements.

    2. Um den Arbeitsbereich so zu aktualisieren, dass der neue Schlüssel verwendet wird, verwenden Sie den folgenden Befehl. Ersetzen Sie myworkspace durch den Namen Ihres Azure Machine Learning-Arbeitsbereichs, und ersetzen Sie myresourcegroup durch den Namen der Azure-Ressourcengruppe, die den Arbeitsbereich enthält.

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

      Dieser Befehl synchronisiert automatisch die neuen Schlüssel für das vom Arbeitsbereich verwendete Azure-Speicherkonto.

  3. Sie können Datenspeicher erneut registrieren, die das Speicherkonto über das SDK oder Azure Machine Learning Studio verwenden.

    1. Verwenden Sie die Werte aus dem Abschnitt Was aktualisiert werden muss und den Schlüssel aus Schritt 1 mit dem folgenden Code, um Datenspeicher über das Python SDK erneut zu registrieren.

      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)
      

      Da overwrite=True angegeben ist, überschreibt dieser Code die bestehende Registrierung und aktualisiert sie, um den neuen Schlüssel zu verwenden.

      # 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. So erstellen und registrieren Sie Datenspeicher über das Studio

      1. Wählen Sie im Studio im linken Bereich unter Ressourcen die Option Daten aus.

      2. Wählen Sie oben Datenspeicher aus.

      3. Wählen Sie den Datenspeicher aus, den Sie aktualisieren möchten.

      4. Klicken Sie oben links auf die Schaltfläche Update credentials (Anmeldeinformationen aktualisieren).

      5. Verwenden Sie den neuen Zugriffsschlüssel aus Schritt 1, um das Formular auszufüllen, und klicken Sie auf Speichern.

        Wenn Sie Anmeldeinformationen für Ihren Standarddatenspeicher aktualisieren, führen Sie diesen Schritt aus, und wiederholen Sie Schritt 2b, um den neuen Schlüssel mit dem Standarddatenspeicher des Arbeitsbereichs neu zu synchronisieren.

Nächste Schritte

Weitere Informationen zur Verwendung von Datenspeichern finden Sie unter Verwenden von Datenspeichern.

Weitere Informationen zur Registrierung von Datenspeichern finden Sie in der Referenz der Datastore-Klasse.