Guía rápida para la creación de secretos usando Databricks CLI

Publicado por

En ocasiones para acceder a ciertos orígenes de datos desde Databricks es necesario hacer uso de cadenas de conexión o credenciales que nos permitan gestionar procesos de autenticación, sin embargo, el almacenamiento de información confidencial dentro de los notebooks no es una práctica recomendable en términos de seguridad y privacidad de la información, para abordar este requerimiento Databricks nos permite almacenar de manera segura esta información en una base de datos de su propiedad y bajo su administración.

A continuación definiremos algunos conceptos básicos y presentaremos una guía rápida para la creación de secretos en Databricks haciendo uso de la interfaz de línea de comandos (CLI).

Un secret scope es una colección de secretos o pares clave-valor que sirven para almacenar información sensible. Existen algunos lineamientos al respecto:

  • Cada workspace puede tener asociados hasta 100 colecciones de secretos.
  • El nombre de cada secret scope debe ser único a nivel de workspace y no debe contener información confidencial, pues todos los usuarios del workspace tienen acceso a éste.
  • Cada secret scope puede almacenar hasta 1000 secretos.
  • El nombre de cada secreto debe ser único a nivel de secret scope y no debe contener información confidencial.
  • El tamaño máximo permitido del valor de cada secreto es de 128 KB.

A manera de ejemplo supongamos que nos encontramos desarrollando un proyecto de datos llamado DataProject y mientras realizamos tareas de ingesta desde Databricks se hace necesario establecer la conexión a una base de datos externa. Para llevar a cabo esta tarea implementando buenas prácticas hemos decidido guardar en las bases de datos respaldadas por Databricks la información del usuario y contraseña requeridos para la autenticación (myUser y myPassword respectivamente) haciendo uso de la interfaz de línea de comandos. Para cumplir con nuestro objetivo seguimos los pasos listados a continuación:

  1. Abrir la línea de comandos
  2. Comprobar que Python esté instalado

    Requisitos:
    Python 3 – 3.6 y superior
    Python 2 – 2.7.9 y superior
  3. Instalar y validar la instalación de la CLI, para esto se deben ejecutar los comandos pip install databricks-cli y databricks --version

Antes de poder ejecutar los comandos CLI debemos configurar la autenticación, para esto existen diferentes métodos como tokens de acceso de usuario o de entidad de servicio, también se admiten un nombre y una contraseña de Databricks, sin embargo se recomienda enfáticamente no hacer uso de este método. Para continuar con nuestro ejercicio realizaremos la autenticación por medio de un token de acceso de usuario.

Creación de un token de acceso personal de Databricks

  1. En su área de trabajo de Databricks, haga clic en su nombre de usuario de Databricks en la barra superior y luego seleccione Configuración de usuario en el menú desplegable.
  2. En la pestaña Tokens de acceso, haga clic en Generar nuevo token.
  1. (Opcional) Ingrese un comentario que lo ayude a identificar este token en el futuro y cambie la vida útil predeterminada del token de 90 días.
  2. Haga clic en Generar .
  3. Copie en un lugar seguro el token que se muestra y luego haga clic en Listo.

Observaciones:

  • Esta característica requiere el plan Premium y superior.
  • Si la autenticación basada en tokens está deshabilitada, su administrador debe habilitarla antes de que pueda crear un token.

Autenticación

  1. Para configurar la CLI usando un token de acceso personal, ejecute la siguiente línea en la consola de comandos de Windows:
    databricks configure --token
  2. Cuando se le solicite, ingrese la URL de su espacio de trabajo, esta tiene la forma  https://<instance-name>.cloud.databricks.com y puede obtenerse desde la barra de búsqueda de su navegador.
  3. Cuando se le solicite, ingrese su token de acceso personal de Databricks y luego presione Enter.

Recomendación: para validar que la autenticación ha sido exitosa ejecute el siguiente comando:

databricks clusters list

y como respuesta debe obtener una lista con los clusters asociados al espacio de trabajo en cuestión y su estado actual.

Creación de una colección de secretos

Una vez autenticados, podemos proceder con la creación de nuestro secret scope, para ello usaremos el siguiente comando:

databricks secrets create-scope --scope <scope-name>

donde <scope-name> deberá reemplazarse por el nombre que le queremos dar a la colección de secretos, para proceder según nuestro ejemplo, crearemos un scope llamado DataProject:

databricks secrets create-scope --scope DataProject

Para validar que en efecto la colección de secretos ha sido creada, ejecutaremos el comando

databricks secrets list-scopes

Creación de un secreto

Ahora que contamos con una colección de secretos podemos crear uno, para esto usaremos el comando

databricks secrets put --scope <scope-name> --key <key-name> --string-value <key-value>

donde <key-name> y <key-value> se deben reemplazar por el nombre o identificador del secreto y por su valor, respectivamente. En nuestro caso, crearemos el secreto llamado password para almacenar el valor myPassword, esto dentro de la colección DataProject

databricks secrets put --scope DataProject --key password --string-value myPassword

Para corroborar la creación del secreto dentro de la colección, ejecutaremos el comando

databricks secrets list --scope <scope-name>

Según nuestro ejemplo: databricks secrets list --scope DataProject

¡y listo! ahora no es necesario escribir nuestra contraseña directamente en el código, para invocar este valor de manera segura simplemente haremos uso de una de las utilidades de Databricks (dbutils), así:

Password = dbutils.secrets.get(scope = "DataProject", key = "password")

Bibliografía

Databricks CLI

Secret scopes

Authentication for Databricks automation

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *