Samouczek: uzyskiwanie dostępu do usługi Azure Blob Storage przy użyciu usług Azure Databricks i Azure Key Vault

W tym samouczku uzyskasz dostęp do usługi Azure Blob Storage z poziomu platformy Azure Databricks przy użyciu klucza dostępu do konta magazynu przechowywanego w usłudze Azure Key Vault.

Important

Dostęp za pomocą klucza konta magazynu danych to starszy sposób uwierzytelniania. W przypadku nowych obciążeń używaj autoryzacji Microsoft Entra ID z usługą Azure Databricks (za pomocą poświadczeń usługi Unity Catalog lub punktu montowania ABFS korzystającego z protokołu OAuth) i wyłącz autoryzację za pomocą klucza współdzielonego na koncie magazynu. Autoryzacja Entra ID eliminuje konieczność przechowywania kluczy dostępu do konta magazynu lub ich okresowej zmiany oraz zapewnia szczegółowy audyt. Kroki opisane w tym artykule pozostają aktualne w przypadku kont magazynu danych, które nadal korzystają z uwierzytelniania za pomocą klucza współdzielonego.

W tym samouczku nauczysz się następujących rzeczy:

  • Utwórz konto magazynu danych i kontener obiektów Blob za pomocą narzędzia Azure CLI.
  • Utwórz magazyn kluczy i ustaw sekret.
  • Utwórz obszar roboczy Azure Databricks i dodaj zakres wpisu tajnego Key Vault.
  • Uzyskaj dostęp do kontenera obiektów Blob z poziomu obszaru roboczego Azure Databricks.

Wymagania wstępne

Jeśli nie masz subskrypcji Azure, przed rozpoczęciem utwórz darmowe konto.

Przed rozpoczęciem tego samouczka zainstaluj interfejs wiersza polecenia platformy Azure.

Tworzenie konta magazynu i kontenera obiektów blob przy użyciu interfejsu wiersza polecenia platformy Azure

Utwórz konto magazynu ogólnego przeznaczenia do korzystania z obiektów blob. Jeśli nie masz grupy zasobów, przed uruchomieniem polecenia utwórz grupę zasobów. Poniższe polecenie tworzy konto magazynowe i wyświetla jego metadane. Skopiuj wartość identyfikatora .

az storage account create --name <storage-account-name> --resource-group <resource-group> --location <location> --sku Standard_ZRS --encryption-services blob

Wyjście konsoli dla powyższego polecenia. Identyfikator jest wyróżniony zielonym kolorem, aby użytkownik końcowy mógł go łatwo zobaczyć.

Zanim utworzysz kontener, do którego przekażesz obiekt blob, przypisz sobie rolę Współautor danych obiektu blob usługi Storage. W tym przykładzie rola jest przypisana do konta magazynu utworzonego wcześniej.

az role assignment create --role "Storage Blob Data Contributor" --assignee <user-principal-name> --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>

Po przypisaniu roli utwórz kontener dla obiektu blob:

az storage container create --account-name <storage-account-name> --name <container-name> --auth-mode login

Po utworzeniu kontenera prześlij do niego obiekt blob (wybrany plik). W tym przykładzie przesyłany jest plik .txt z helloworld.

az storage blob upload --account-name <storage-account-name> --container-name <container-name> --name helloworld --file helloworld.txt --auth-mode login

Wyświetl listę blobów w kontenerze, aby to sprawdzić:

az storage blob list --account-name <storage-account-name> --container-name <container-name> --output table --auth-mode login

Dane wyjściowe konsoli powyższego polecenia. Wyświetla on plik, który został właśnie zapisany w kontenerze.

Pobierz wartość key1 dla konta magazynowego za pomocą następującego polecenia. Skopiuj wartość.

az storage account keys list -g <resource-group> -n <storage-account-name>

Dane wyjściowe konsoli powyższego polecenia. Wartość klucza key1 jest wyróżniona w zielonym polu.

Utwórz magazyn kluczy i ustaw klucz tajny

Utwórz magazyn kluczy za pomocą następującego polecenia. Polecenie wyświetla również metadane magazynu kluczy. Skopiuj wartości id i vaultUri .

az keyvault create --name <vault-name> --resource-group <resource-group> --location <location> --enable-rbac-authorization true --enable-purge-protection true

Dane wyjściowe polecenia z konsoli. Identyfikator i vaultUri są wyróżnione kolorem zielonym, aby użytkownik mógł je zobaczyć.

Aby utworzyć wpis tajny, użyj następującego polecenia. Ustaw wartość tajemnicy na wartość key1 z twojego konta magazynowego.

az keyvault secret set --vault-name <vault-name> --name storageKey --value "value of your key1"

Utwórz obszar roboczy w usłudze Azure Databricks i dodaj zakres wpisów tajnych usługi Key Vault

Ta sekcja wymaga portalu Azure. Używaj go do:

  1. Utwórz zasób Azure Databricks.
  2. Uruchom obszar roboczy.
  3. Utwórz zakres wpisów tajnych oparty na usłudze Key Vault.

Uzyskaj dostęp do kontenera obiektów blob z obszaru roboczego Azure Databricks

Ta sekcja została ukończona w obszarze roboczym Azure Databricks. W obszarze roboczym:

  1. Utwórz nowy klaster.
  2. Utwórz Nowy notatnik.
  3. Wypełnij odpowiednie pola w skryscie Python.
  4. Uruchom skrypt Python.
dbutils.fs.mount(
source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net",
mount_point = "/mnt/<mount-name>",
extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})

df = spark.read.text("/mnt/<mount-name>/<file-name>")

df.show()

Następne kroki

Upewnij się, że usługa Key Vault jest odzyskiwalna: