Tutorial: Acceso a Azure Blob Storage mediante Azure Databricks y Azure Key Vault

En este tutorial, accederá a Azure Blob Storage desde Azure Databricks mediante una clave de cuenta de almacenamiento almacenada en Azure Key Vault.

Important

El acceso a la clave de la cuenta de almacenamiento es un patrón heredado. Para cargas de trabajo nuevas, use la autorización de Microsoft Entra ID con Azure Databricks (mediante credenciales de Unity Catalog o un montaje de ABFS que use OAuth) y deshabilite la autorización de clave compartida en la cuenta de almacenamiento. La autorización de Entra ID elimina la necesidad de almacenar o rotar las claves de la cuenta de almacenamiento y proporciona auditoría granular. Los pasos de este artículo siguen siendo válidos para las cuentas de almacenamiento que siguen usando el acceso a claves compartidas.

En este tutorial, usted hará lo siguiente:

  • Cree una cuenta de almacenamiento y un contenedor de blobs con el CLI de Azure.
  • Cree un almacén de claves y defina un secreto.
  • Cree un área de trabajo de Azure Databricks y agregue un ámbito de secreto Key Vault.
  • Acceda al contenedor de blobs desde el área de trabajo de Azure Databricks.

Prerrequisitos

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Antes de iniciar este tutorial, instale la CLI de Azure.

Creación de una cuenta de almacenamiento y un contenedor de blobs con la CLI de Azure

Cree una cuenta de almacenamiento de uso general para usar blobs. Si no tiene un grupo de recursos, cree uno antes de ejecutar el comando. El comando siguiente crea la cuenta de almacenamiento y muestra sus metadatos. Copie el valor de id.

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

Salida de la consola del comando anterior. El identificador está resaltado en verde para que lo vea el usuario final.

Antes de crear un contenedor en el que cargar el blob, asigne el rol Colaborador de datos de Storage Blob a sí mismo. En este ejemplo, el rol se asigna a la cuenta de almacenamiento que creó 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>

Ahora que ha asignado el rol, cree un contenedor para el blob:

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

Una vez creado el contenedor, cargue un blob (archivo de su elección) en él. En este ejemplo, se carga un archivo .txt con helloworld .

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

Enumere los blobs del contenedor para comprobar lo siguiente:

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

Salida de la consola del comando anterior. Muestra el archivo que se acaba de almacenar en el contenedor.

Obtenga el valor key1 de la cuenta de almacenamiento con el comando siguiente. Copie el valor.

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

Salida de la consola del comando anterior. El valor de key1 está resaltado en un cuadro verde.

Crear un almacén de claves y establecer un secreto

Crea un almacén de claves con el siguiente comando. El comando también muestra los metadatos del almacén de claves. Copie los valores id y vaultUri .

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

Imagen Salida del comando anterior en la consola. Tanto el identificador como el vaultUri están resaltados en verde para que el usuario pueda verlo.

Para crear el secreto, use el siguiente comando. Establezca el valor del secreto en el valor key1 de la cuenta de almacenamiento.

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

Creación de un área de trabajo de Azure Databricks y adición de un ámbito de secreto de Key Vault

En esta sección se requiere el portal de Azure. Úselo para:

  1. Cree el recurso Azure Databricks.
  2. Inicia tu espacio de trabajo.
  3. Cree un ámbito de secreto respaldado por Key Vault.

Acceso al contenedor de blobs desde el área de trabajo de Azure Databricks

Esta sección se completa en el área de trabajo de Azure Databricks. En el área de trabajo:

  1. Cree un nuevo clúster.
  2. Cree un nuevo cuaderno.
  3. Rellene los campos correspondientes en el script de Python.
  4. Ejecute el script de 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()

Pasos siguientes

Asegúrese de que el Key Vault es recuperable: