Återskapa åtkomstnycklar för lagringskonto

Lär dig hur du ändrar åtkomstnycklarna för Azure Storage-konton som används av Azure Machine Learning. Azure Machine Learning kan använda lagringskonton för att lagra data eller tränade modeller.

Av säkerhetsskäl kan du behöva ändra åtkomstnycklarna för ett Azure Storage-konto. När du återskapar åtkomstnyckeln måste Azure Machine Learning uppdateras för att använda den nya nyckeln. Azure Machine Learning kan använda lagringskontot för både modelllagring och som ett datalager.

Viktigt!

Autentiseringsuppgifter som registrerats med datalager sparas i ditt Azure Key Vault som är associerat med arbetsytan. Om du har mjuk borttagning aktiverat för ditt Key Vault innehåller den här artikeln instruktioner för uppdatering av autentiseringsuppgifter. Om du avregistrerar datalagringen och försöker registrera den igen under samma namn misslyckas den här åtgärden. Se Aktivera mjuk borttagning för ett befintligt nyckelvalv för att aktivera mjuk borttagning i det här scenariot.

Förutsättningar

Kommentar

Kodfragmenten i det här dokumentet testades med version 1.0.83 av Python SDK.

Vad som behöver uppdateras

Lagringskonton kan användas av Azure Machine Learning-arbetsytan (lagra loggar, modeller, ögonblicksbilder osv.) och som ett datalager. Processen för att uppdatera arbetsytan är ett enda Azure CLI-kommando och kan köras efter uppdatering av lagringsnyckeln. Processen med att uppdatera datalager är mer involverad och kräver att du identifierar vilka datalager som för närvarande använder lagringskontot och sedan registrerar dem igen.

Viktigt!

Uppdatera arbetsytan med hjälp av Azure CLI och datalager med python på samma gång. Det räcker inte att uppdatera det ena eller det andra och kan orsaka fel tills båda har uppdaterats.

Om du vill identifiera de lagringskonton som används av dina datalager använder du följande kod:

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)

Den här koden letar efter alla registrerade datalager som använder Azure Storage med nyckelautentisering och visar följande information:

  • Datalagernamn: Namnet på det datalager som lagringskontot är registrerat under.
  • Lagringskontonamn: Namnet på Azure Storage-kontot.
  • Container: Containern i lagringskontot som används av den här registreringen.
  • Filresurs: Den filresurs som används av den här registreringen.
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)

Den här koden söker efter alla registrerade datalager som använder Azure Storage och visar följande information:

  • Datalagernamn: Namnet på det datalager som lagringskontot är registrerat under.
  • Lagringskontonamn: Namnet på Azure Storage-kontot.
  • Container: Containern i lagringskontot som används av den här registreringen.

Det anger också om datalagringen är för en Azure Blob eller en Azure-filresurs, eftersom det finns olika metoder för att registrera om varje typ av datalager.

Om det finns en post för lagringskontot som du planerar att återskapa åtkomstnycklar för sparar du datalagernamnet, lagringskontots namn och containernamnet.

Uppdatera åtkomstnyckeln

Om du vill uppdatera Azure Machine Learning för att använda den nya nyckeln använder du följande steg:

Viktigt!

Utför alla steg och uppdatera både arbetsytan med hjälp av CLI och datalager med python. Om du bara uppdaterar det ena eller det andra kan det orsaka fel tills båda har uppdaterats.

  1. Återskapa nyckeln. Information om hur du återskapar en åtkomstnyckel finns i Hantera åtkomstnycklar för lagringskonto. Spara den nya nyckeln.

  2. Azure Machine Learning-arbetsytan synkroniserar automatiskt den nya nyckeln och börjar använda den efter en timme. Använd följande steg för att tvinga arbetsytan att synkronisera till den nya nyckeln omedelbart:

    1. Logga in på Azure-prenumerationen som innehåller din arbetsyta med hjälp av följande Azure CLI-kommando:

      az login
      

      Dricks

      När du har loggat in visas en lista över prenumerationer som är associerade med ditt Azure-konto. Prenumerationsinformationen med isDefault: true är den för närvarande aktiverade prenumerationen för Azure CLI-kommandon. Den här prenumerationen måste vara samma som innehåller din Azure Machine Learning-arbetsyta. Du hittar prenumerations-ID: t från Azure-portalen genom att gå till översiktssidan för din arbetsyta.

      Om du vill välja en annan prenumeration använder du az account set -s <subscription name or ID> kommandot och anger prenumerationsnamnet eller ID:t att växla till. Mer information om val av prenumeration finns i Använda flera Azure-prenumerationer.

    2. Använd följande kommando för att uppdatera arbetsytan så att den använder den nya nyckeln. Ersätt myworkspace med namnet på din Azure Machine Learning-arbetsyta och ersätt myresourcegroup med namnet på den Azure-resursgrupp som innehåller arbetsytan.

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

      Det här kommandot synkroniserar automatiskt de nya nycklarna för azure-lagringskontot som används av arbetsytan.

  3. Du kan registrera om datalager som använder lagringskontot via SDK:t eller Azure Machine Learning-studio.

    1. Om du vill registrera om datalager via Python SDK använder du värdena från avsnittet Vad som behöver uppdateras och nyckeln från steg 1 med följande kod.

      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)
      

      Sedan overwrite=True har angetts skriver den här koden över den befintliga registreringen och uppdaterar den för att använda den nya nyckeln.

      # 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. Så här registrerar du datalager igen via studion

      1. I studion väljer du Data i den vänstra rutan under Tillgångar.

      2. Längst upp väljer du Datalager.

      3. Välj vilket datalager du vill uppdatera.

      4. Välj knappen Uppdatera autentiseringsuppgifter längst upp till vänster.

      5. Använd den nya åtkomstnyckeln från steg 1 för att fylla i formuläret och klicka på Spara.

        Om du uppdaterar autentiseringsuppgifterna för ditt standarddatalager slutför du det här steget och upprepar steg 2b för att synkronisera om den nya nyckeln med standarddatalagringen för arbetsytan.

Nästa steg

Mer information om hur du använder datalager finns i Använda datalager.

Mer information om hur du registrerar datalager finns i klassreferensen Datastore .