Ponowne generowanie kluczy dostępu do konta magazynu

Dowiedz się, jak zmienić klucze dostępu dla kont usługi Azure Storage używanych przez usługę Azure Machine Edukacja. Usługa Azure Machine Edukacja może używać kont magazynu do przechowywania danych lub wytrenowanych modeli.

Ze względów bezpieczeństwa może być konieczne zmianę kluczy dostępu dla konta usługi Azure Storage. Podczas ponownego generowania klucza dostępu należy zaktualizować Edukacja maszyny azure, aby można było użyć nowego klucza. Usługa Azure Machine Edukacja może używać konta magazynu zarówno dla magazynu modelu, jak i jako magazynu danych.

Ważne

Poświadczenia zarejestrowane w magazynach danych są zapisywane w usłudze Azure Key Vault skojarzonej z obszarem roboczym. Jeśli dla usługi Key Vault włączono usuwanie nietrwałe, ten artykuł zawiera instrukcje dotyczące aktualizowania poświadczeń. Jeśli wyrejestrujesz magazyn danych i spróbujesz ponownie zarejestrować go pod tą samą nazwą, ta akcja zakończy się niepowodzeniem. Zobacz Włączanie usuwania nietrwałego dla istniejącego magazynu kluczy, aby dowiedzieć się, jak włączyć usuwanie nietrwałe w tym scenariuszu.

Wymagania wstępne

  • Obszar roboczy usługi Azure Machine Learning. Aby uzyskać więcej informacji, zobacz artykuł Tworzenie zasobów obszaru roboczego.

Uwaga

Fragmenty kodu w tym dokumencie zostały przetestowane przy użyciu wersji 1.0.83 zestawu SDK języka Python.

Co należy zaktualizować

Konta magazynu mogą być używane przez obszar roboczy usługi Azure Machine Edukacja (przechowywanie dzienników, modeli, migawek itp.) i jako magazyn danych. Proces aktualizowania obszaru roboczego jest pojedynczym poleceniem interfejsu wiersza polecenia platformy Azure i można go uruchomić po zaktualizowaniu klucza magazynu. Proces aktualizowania magazynów danych jest bardziej zaangażowany i wymaga odnalezienia magazynów danych, które obecnie korzystają z konta magazynu, a następnie ich ponownego zarejestrowania.

Ważne

Zaktualizuj obszar roboczy przy użyciu interfejsu wiersza polecenia platformy Azure i magazyny danych przy użyciu języka Python w tym samym czasie. Aktualizowanie tylko jednej lub drugiej nie jest wystarczające i może powodować błędy do czasu zaktualizowania obu tych elementów.

Aby odnaleźć konta magazynu używane przez magazyny danych, użyj następującego kodu:

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)

Ten kod wyszukuje wszystkie zarejestrowane magazyny danych korzystające z usługi Azure Storage z uwierzytelnianiem za pomocą klucza i zawierają następujące informacje:

  • Nazwa magazynu danych: nazwa magazynu danych, w ramach którego zarejestrowano konto magazynu.
  • Nazwa konta magazynu: nazwa konta usługi Azure Storage.
  • Kontener: kontener na koncie magazynu używanym przez tę rejestrację.
  • Udział plików: udział plików używany przez tę rejestrację.
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)

Ten kod wyszukuje wszystkie zarejestrowane magazyny danych korzystające z usługi Azure Storage i zawierają następujące informacje:

  • Nazwa magazynu danych: nazwa magazynu danych, w ramach którego zarejestrowano konto magazynu.
  • Nazwa konta magazynu: nazwa konta usługi Azure Storage.
  • Kontener: kontener na koncie magazynu używanym przez tę rejestrację.

Wskazuje również, czy magazyn danych jest przeznaczony dla obiektu blob platformy Azure, czy udziału plików platformy Azure, ponieważ istnieją różne metody ponownego rejestrowania każdego typu magazynu danych.

Jeśli istnieje wpis dla konta magazynu, dla którego planujesz ponowne generowanie kluczy dostępu, zapisz nazwę magazynu danych, nazwę konta magazynu i nazwę kontenera.

Aktualizowanie klucza dostępu

Aby zaktualizować Edukacja usługi Azure Machine w celu użycia nowego klucza, wykonaj następujące kroki:

Ważne

Wykonaj wszystkie kroki, aktualizuj zarówno obszar roboczy przy użyciu interfejsu wiersza polecenia, jak i magazyny danych przy użyciu języka Python. Aktualizowanie tylko jednego lub drugiego może spowodować błędy do czasu zaktualizowania obu tych elementów.

  1. Wygeneruj ponownie klucz. Aby uzyskać informacje na temat ponownego generowania klucza dostępu, zobacz Zarządzanie kluczami dostępu do konta magazynu. Zapisz nowy klucz.

  2. Obszar roboczy usługi Azure Machine Edukacja automatycznie zsynchronizuje nowy klucz i zacznie używać go po godzinie. Aby wymusić natychmiastowe zsynchronizowanie obszaru roboczego z nowym kluczem, wykonaj następujące kroki:

    1. Aby zalogować się do subskrypcji platformy Azure zawierającej obszar roboczy przy użyciu następującego polecenia interfejsu wiersza polecenia platformy Azure:

      az login
      

      Napiwek

      Po zalogowaniu zostanie wyświetlona lista subskrypcji skojarzonych z kontem platformy Azure. Informacje o subskrypcji z isDefault: true programem to aktualnie aktywowana subskrypcja poleceń interfejsu wiersza polecenia platformy Azure. Ta subskrypcja musi być taka sama, która zawiera obszar roboczy usługi Azure Machine Edukacja. Identyfikator subskrypcji można znaleźć w witrynie Azure Portal , odwiedzając stronę przeglądu obszaru roboczego.

      Aby wybrać inną subskrypcję, użyj az account set -s <subscription name or ID> polecenia i określ nazwę subskrypcji lub identyfikator, do których chcesz przełączyć się. Aby uzyskać więcej informacji na temat wyboru subskrypcji, zobacz Korzystanie z wielu subskrypcji platformy Azure.

    2. Aby zaktualizować obszar roboczy do użycia nowego klucza, użyj następującego polecenia. Zastąp myworkspace ciąg nazwą obszaru roboczego usługi Azure Machine Edukacja i zastąp myresourcegroup ciąg nazwą grupy zasobów platformy Azure, która zawiera obszar roboczy.

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

      To polecenie automatycznie synchronizuje nowe klucze dla konta usługi Azure Storage używanego przez obszar roboczy.

  3. Możesz ponownie zarejestrować magazyny danych korzystające z konta magazynu za pośrednictwem zestawu SDK lub usługi Azure Machine Edukacja Studio.

    1. Aby ponownie zarejestrować magazyny danych za pomocą zestawu SDK języka Python, użyj wartości z sekcji Co należy zaktualizować i klucza z kroku 1 przy użyciu następującego kodu.

      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)
      

      Ponieważ overwrite=True jest określony, ten kod zastępuje istniejącą rejestrację i aktualizuje go do użycia nowego klucza.

      # 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. Aby ponownie zarejestrować magazyny danych za pośrednictwem programu Studio

      1. W studio wybierz pozycję Dane w okienku po lewej stronie w obszarze Zasoby.

      2. W górnej części wybierz pozycję Magazyny danych.

      3. Wybierz magazyn danych, który chcesz zaktualizować.

      4. Wybierz przycisk Aktualizuj poświadczenia w lewym górnym rogu.

      5. Użyj nowego klucza dostępu z kroku 1, aby wypełnić formularz, a następnie kliknij przycisk Zapisz.

        Jeśli aktualizujesz poświadczenia domyślnego magazynu danych, wykonaj ten krok i powtórz krok 2b, aby ponownie zsynchronizować nowy klucz z domyślnym magazynem danych obszaru roboczego.

Następne kroki

Aby uzyskać więcej informacji na temat korzystania z magazynów danych, zobacz Korzystanie z magazynów danych.

Aby uzyskać więcej informacji na temat rejestrowania magazynów danych, zobacz dokumentację Datastore klasy.