← Volver al blog
DatabricksAzureSeguridad

Cómo proteger tu código de Databricks sin depender del plan Premium de Azure

Las claves en texto plano en un notebook son un riesgo. Este es el paso a paso para guardar credenciales con Secret Scopes y montar Azure Data Lake con seguridad, sin el plan Premium.

MA
Allen87Data Engineer
· 4 min de lectura
Portátil con código, un candado naranja, una nube y el ícono de Databricks, que ilustran la protección de credenciales

¿Alguna vez has montado un Data Lake, con todo funcionando… hasta darte cuenta de que tus credenciales estaban expuestas en el código? 😬

Hace poco necesité montar contenedores de Azure Data Lake dentro de un notebook de Databricks — una tarea aparentemente simple. Pero al revisar el código con atención, noté que las claves de acceso estaban en texto plano.

Ahí entendí: no basta con que el código funcione, tiene que funcionar de forma segura.

Y lo mejor: existe una manera de hacerlo sin necesitar el plan Premium de Azure, usando solo Secret Scopes creados con la CLI de Databricks.

En este artículo comparto el paso a paso completo y lo que aprendí sobre cómo proteger credenciales en Databricks — un proceso simple, pero que puede evitar grandes dolores de cabeza en el futuro.

Por qué es importante

En Ingeniería de Datos, durante las etapas de desarrollo es común guardar claves, tokens o credenciales directamente en el código. ¿Funciona? Funciona. Pero también abre enormes brechas de seguridad: cualquier persona con acceso al notebook puede ver datos sensibles.

Eso fue justamente lo que me motivó a buscar una solución que fuera: ✅ Segura ✅ Simple de implementar ✅ Compatible con el plan Standard de Azure

El resultado fue la configuración con Secret Scopes vía CLI, que comparto a continuación.

Entendiendo los componentes principales

Antes de ponerte con el código, conviene entender el papel de cada parte de esta configuración:

  • Azure Data Lake → el repositorio central de datos, con contenedores como bronze, silver y gold.
  • Storage Account → la cuenta de almacenamiento donde se alojan los contenedores.
  • Databricks CLI → herramienta de línea de comandos que permite automatizar acciones en el workspace (crear scopes, tokens, jobs, etc.).
  • Secret Scope → una “bóveda interna” de Databricks usada para guardar contraseñas, claves o tokens de forma segura.

¿Y qué es Azure Key Vault?

Azure Key Vault es el servicio de almacenamiento seguro de secretos de Microsoft. Guarda claves, contraseñas, certificados y tokens de forma centralizada y cifrada, con control de acceso y auditoría integrados.

En otras palabras: es la bóveda oficial de Azure — el lugar adecuado para guardar cualquier credencial sensible.

Crear un Key Vault es simple:

  1. En el portal de Azure, ve a Crear un recurso → Seguridad → Key Vault
  2. Elige el Resource Group y el nombre de la bóveda
  3. Define la región y las políticas de acceso
  4. Después, agrega tus secretos en la sección Secrets

💡 Consejo: en Databricks, puedes integrar Key Vault directamente creando un Key Vault-backed Secret Scope — lo que permite acceder a los secretos automáticamente, sin almacenarlos en Databricks.

En este artículo, sin embargo, el foco es el Databricks-backed Secret Scope, que funciona incluso sin el plan Premium.

Paso a paso: acceso seguro a Azure Data Lake en Databricks

Paso 1: instalar y configurar la CLI de Databricks

En tu terminal de Windows, instala y configura la CLI de Databricks:

pip install databricks-cli
databricks configure --token
# Host: https://<tu-instancia>.azuredatabricks.net
# Token: <tu access token>

Cómo obtener el Host y el Token

  1. Accede a tu workspace de Azure Databricks
  2. En la esquina superior derecha, haz clic en tu perfil (tu nombre) → User Settings
  3. Ve a la pestaña Access Tokens
  4. Haz clic en Generate New Token, define una vigencia (ej.: 90 días) y copia el token
  5. El Host es simplemente la URL de tu workspace:
https://<tu-workspace>.azuredatabricks.net
  1. Pega esta información cuando la CLI te la solicite

Paso 2: crear el Secret Scope local

Cuando el plan Premium está desactivado, es necesario usar el parámetro --initial-manage-principal "users" para permitir la creación del scope local.

databricks secrets create-scope \
  --scope datalake-scope \
  --initial-manage-principal "users"

Paso 3: agregar los secretos manualmente

# Nombre de la Storage Account
databricks secrets put --scope datalake-scope --key STORAGE-NAME

# Clave de acceso de la Storage
databricks secrets put --scope datalake-scope --key STORAGE-KEY

Estos comandos abrirán un editor en la terminal para que escribas los valores de forma segura.

Paso 4: montar los contenedores en el notebook

Función reutilizable para montar múltiples contenedores (en este ejemplo, las capas bronze, silver y gold):

def mount_container(containerName):
    scope_name = "datalake-scope"
    storageAccountName = dbutils.secrets.get(scope=scope_name, key="STORAGE-NAME")
    storageAccountAccessKey = dbutils.secrets.get(scope=scope_name, key="STORAGE-KEY")
    blobContainerName = containerName
    mountPoint = "/mnt/" + blobContainerName

    if not any(m.mountPoint == mountPoint for m in dbutils.fs.mounts()):
        try:
            dbutils.fs.mount(
                source = f"wasbs://{blobContainerName}@{storageAccountName}.blob.core.windows.net",
                mount_point = mountPoint,
                extra_configs = {
                    f"fs.azure.account.key.{storageAccountName}.blob.core.windows.net": storageAccountAccessKey
                }
            )
            print(f"✅ Montaje realizado con éxito: {blobContainerName}")
        except Exception as e:
            print("❌ Error al montar:", e)
    else:
        print(f"ℹ️ Contenedor ya montado: {blobContainerName}")

containers = ["bronze", "silver", "gold"]
for c in containers:
    mount_container(c)

Paso 5: probar el montaje del contenedor bronze

mount_path = "/mnt/bronze"
if any(m.mountPoint == mount_path for m in dbutils.fs.mounts()):
    print("✅ El contenedor 'bronze' está montado.")
else:
    print("❌ El contenedor 'bronze' no está montado.")

Lecciones aprendidas

  • 💡 1. Evita exponer claves directamente en el código. Usa Secret Scopes o, en producción, Azure Key Vault.
  • 💡 2. Monta solo lo necesario. Menos montajes = menos riesgos.
  • 💡 3. Evita logs con información sensible. Un simple print() puede revelar más de lo que debería.

Conclusión

Aunque montar un Data Lake pueda parecer simple, hacerlo de forma segura transforma por completo la confiabilidad del entorno. Pequeñas decisiones, como mover una clave a una bóveda, pueden marcar toda la diferencia.

Y lo mejor: puedes implementar todo esto en pocos minutos, con las herramientas que ya usas a diario.

¿Te quedó alguna duda? Ponte en contacto y la resolvemos 😉

MA
Allen87 Data Engineer & Data Analyst

Escribo sobre Power BI, ingeniería de datos e IA aplicada. Mira el perfil completo, los 66 dashboards de Power BI publicados y GitHub.