Tutorial: Acessar o Armazenamento de Blobs do Azure usando o Azure Databricks e o Azure Key Vault

Neste tutorial, acede ao Armazenamento de Blobs do Azure a partir do Azure Databricks usando uma chave de conta de armazenamento armazenada no Azure Key Vault.

Importante

O acesso à chave da conta de armazenamento é um padrão legado. Para novas cargas de trabalho, utilize a autorização do Microsoft Entra ID com o Azure Databricks (através das credenciais do Unity Catalog ou de uma montagem ABFS que utilize OAuth) e desative a autorização com Chave Partilhada na conta de armazenamento. A autorização do Entra ID elimina a necessidade de armazenar ou alternar as chaves da conta de armazenamento e permite uma auditoria detalhada. Os passos deste artigo mantêm-se válidos para contas de armazenamento que ainda utilizam acesso a Chave Partilhada.

Neste tutorial, você:

  • Crie uma conta de armazenamento e um contentor de blob com a CLI do Azure.
  • Cria um cofre de chaves e define um segredo.
  • Crie um espaço de trabalho no Azure Databricks e adicione um escopo secreto do Key Vault.
  • Acede ao teu contentor de blobs a partir do espaço de trabalho do Azure Databricks.

Pré-requisitos

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Antes de iniciar este tutorial, instale a CLI do Azure.

Criar uma conta de armazenamento e contêiner de blob com a CLI do Azure

Cria uma conta de armazenamento de uso geral para usar blobs. Se você não tiver um grupo de recursos, crie um antes de executar o comando. O comando seguinte cria a conta de armazenamento e apresenta os seus metadados. Copie o valor de id.

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

Saída do console do comando acima. O ID é realçado em verde para o utilizador final.

Antes de criar um contentor para o qual irá carregar o blob, atribua a si próprio a função Storage Blob Data Contributor. Neste exemplo, a função é atribuída à conta de armazenamento que criou anteriormente.

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>

Agora que atribuíste a função, cria um contentor para o teu blob:

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

Depois de criar o contentor, carrega um blob (ficheiro à tua escolha) para ele. Neste exemplo, um ficheiro .txt com helloworld é carregado.

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

Liste os blobs no contentor para verificar:

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

Saída do console do comando acima. Ele exibe o arquivo que acabou de ser armazenado no contêiner.

Obtenha o valor key1 da sua conta de armazenamento com o seguinte comando. Copie o valor.

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

Saída do console do comando acima. O valor de key1 é realçado em uma caixa verde.

Crie um cofre de chaves e crie um segredo

Crie um cofre de chaves com o seguinte comando. O comando também apresenta os metadados do cofre de chaves. Copie os valores de id e de vaultUri.

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

Saída do Image Console do comando acima. O ID e o vaultUri são destacados em verde para o usuário ver.

Para criar o segredo, use o seguinte comando. Defina o valor do segredo para o valor key1 da sua conta de armazenamento.

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

Crie um espaço de trabalho no Azure Databricks e adicione um escopo secreto do Key Vault

Esta secção requer o portal Azure. Utilize-o para:

  1. Crie o seu recurso Azure Databricks.
  2. Inicie o seu espaço de trabalho.
  3. Crie um escopo secreto protegido pelo Key Vault.

Acede ao teu contentor de blob a partir do espaço de trabalho do Azure Databricks

Esta secção é completada no espaço de trabalho do Azure Databricks. No espaço de trabalho:

  1. Crie um novo cluster.
  2. Crie um novo caderno.
  3. Preenche os campos correspondentes no script Python.
  4. Executa o script 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()

Próximos passos

Certifique-se de que o Cofre da Chave esteja recuperável.