Ámbitos de secretos del área de trabajo

Un ámbito de secretos del área de trabajo es una colección de secretos con nombre en una sola área de trabajo. Los permisos de alcance secreto controlan quién puede leer, escribir y gestionar los secretos que contiene. Los permisos se aplican a todo el ámbito, no a secretos individuales, por lo que un usuario que puede leer un secreto en un ámbito puede leerlos todos. Para comparar los ámbitos de secretos del espacio de trabajo con los secretos de Unity Catalog, consulte Elegir dónde almacenar un secreto.

Para usar un ámbito de secretos del área de trabajo:

  1. Crear un ámbito secreto.
  2. Agregar secretos al ámbito.
  3. Conceda permisos en el ámbito.
  4. Haz referencia a los secretos en tu código, o en una propiedad de configuración de Spark o en una variable de entorno. Consulte el documento Usar un secreto en una propiedad de configuración de Spark o en una variable de entorno.

Warning

Los administradores de espacios de trabajo, creadores de secretos y usuarios que han recibido permiso pueden acceder y leer los secretos de Azure Databricks. Aunque Azure Databricks intenta ocultar valores secretos en las salidas de los cuadernos, no es posible impedir completamente que estos usuarios vean contenidos secretos. Asigne siempre permisos de acceso secreto cuidadosamente para proteger la información confidencial.

Administración de ámbitos secretos

Azure Databricks recomienda alinear ámbitos secretos con roles o aplicaciones en lugar de usuarios.

Hay dos tipos de ámbito secreto:

  • Respaldado por Azure Key Vault: puede hacer referencia a secretos almacenados en una instancia de Azure Key Vault mediante ámbitos de secretos respaldados por Azure Key Vault. Un ámbito de secreto con respaldo de Azure Key Vault es una interfaz de solo lectura para el almacén de claves. Administre sus secretos en Azure.
  • Con soporte de Databricks: un ámbito secreto con soporte de Databricks se almacena en una base de datos cifrada que es propiedad de y gestionada por Azure Databricks.

Importante

Los ámbitos de secretos respaldados por Azure Key Vault solo admiten el modelo de permisos de la Directiva de acceso de Vault, no el control de acceso basado en rol (RBAC) de Azure. Las nuevas bóvedas de claves de Azure usan Azure RBAC por defecto. Si tu bóveda de claves usa Azure RBAC, cambia su modelo de permisos a Vault access policy antes de crear un ámbito secreto respaldado por Azure Key Vault.

Después de crear un ámbito de secreto, puede asignar permisos para conceder a los usuarios acceso a ámbitos de lectura, escritura y administración de secretos.

Crear un ámbito de secreto respaldado por Azure Key Vault

Cree un ámbito de secreto con el respaldo de Azure Key Vault en Azure Portal y en la interfaz de usuario de las áreas de trabajo de Azure Databricks. También puedes usar la CLI de Databricks.

Requirements

  • Debe tener una instancia de Azure Key Vault. Si no dispone de una instancia de almacén de claves, siga las instrucciones de Crear un almacén de claves mediante el Azure portal.
  • Debe tener el rol Colaborador de Key Vault, Colaborador o Propietario en la instancia de Azure Key Vault que quiere usar para respaldar el ámbito del secreto.

Nota:

La creación de un ámbito de secreto con respaldo de Azure Key Vault requiere el rol de Colaborador o Propietario en la instancia de Azure Key Vault aunque se haya concedido previamente al servicio Azure Databricks acceso al almacén de claves.

Si el Key Vault existe en un tenant diferente al del espacio de trabajo de Azure Databricks, el usuario de Microsoft Entra ID que crea el ámbito de secretos debe tener permiso para crear entidades de servicio en el tenant del Key Vault. De lo contrario, se produce el siguiente error:

Unable to grant read/list permission to Databricks service principal to KeyVault 'https://xxxxx.vault.azure.net/': Status code 403, {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"XXXXX","date":"YYYY-MM-DDTHH:MM:SS"}}

Configuración de la instancia del almacén de claves de Azure para Azure Databricks

  1. Inicia sesión en el portal de Azure, encuentra y selecciona la instancia de la bóveda de claves de Azure.

  2. En Configuración, haga clic en la pestaña Configuración de acceso.

  3. Establezca Modelo de permisos en Directiva de acceso al almacén. Los nuevos almacenes de claves utilizan de forma predeterminada el control de acceso basado en roles de Azure, que los ámbitos de secretos respaldados por Azure Key Vault no admiten.

    Nota:

    La creación de un ámbito de secretos respaldado por Azure Key Vault concede los permisos Get y List al ID de aplicación del servicio Azure Databricks mediante directivas de acceso de Vault.

  4. En Configuración, seleccione Redes.

  5. En Firewalls y redes virtuales establezca Permitir acceso desde: para Permitir acceso público desde redes virtuales y direcciones IP específicas.

    En Excepción, marque Permitir que los servicios de confianza de Microsoft omitan este firewall.

    Nota:

    También puede establecer Permitir acceso desde para Permitir el acceso público desde todas las redes.

Creación de un ámbito de secreto compatible con Azure Key Vault

  1. Vaya a https://<databricks-instance>#secrets/createScope. Reemplaza <databricks-instance> por la URL del espacio de trabajo de la implementación de Azure Databricks. Esta dirección URL distingue mayúsculas ye minúsculas. Por ejemplo, scope en createScope debe usar una S mayúscula.

    Creación del ámbito

  2. Escriba el nombre del ámbito de secretos. Los nombres de ámbito de secretos no distinguen mayúsculas y minúsculas.

  3. En Administrar Principal, seleccione Creador o Todos los usuarios del espacio de trabajo para especificar qué usuarios tienen el permiso MANAGE en el ámbito de secretos.

    El permiso MANAGE permite a los usuarios leer, escribir y conceder permisos en el ámbito. La cuenta debe tener el plan Premium para elegir Creator.

  4. Escriba el nombre DNS (por ejemplo, https://databrickskv.vault.azure.net/) y el identificador del recurso, por ejemplo:

    /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
    

    Estas propiedades están disponibles en la pestaña Configuración > Propiedades de Azure Key Vault en Azure Portal.

  5. Haga clic en Crear.

  6. Use el comando de la CLI de Databricksdatabricks secrets list-scopes para comprobar que el ámbito se haya creado correctamente.

Crea un ámbito de secreto respaldado por Databricks

Crea un ámbito secreto con la CLI Databricks (versión 0.205 y superior) o con la API Secrets.

Nombres de ámbito de secretos:

  • Debe ser único dentro de un área de trabajo.
  • Debe consistir en caracteres alfanuméricos, guiones, guiones @bajos y puntos, y no puede superar los 128 caracteres.
  • Distinguen mayúsculas y minúsculas.

Los nombres de ámbito secreto se consideran no confidenciales y son legibles para todos los usuarios del área de trabajo.

Para crear un ámbito mediante la CLI de Databricks:

databricks secrets create-scope <scope-name>

De forma predeterminada, los ámbitos se crean con permiso de administración para el usuario que creó el ámbito. Después de crear un ámbito secreto respaldado por Databricks, puede agregar secretos a él.

Listar ámbitos secretos

Para enumerar los ámbitos existentes en un área de trabajo mediante la CLI:

databricks secrets list-scopes

También puede enumerar ámbitos secretos mediante la API de secretos.

Eliminación de un ámbito de secreto

Al eliminar un ámbito de secretos, se eliminan todos los secretos y las ACLs aplicados al ámbito. Para eliminar un ámbito mediante la CLI, ejecute lo siguiente:

databricks secrets delete-scope <scope-name>

También puede eliminar un ámbito secreto mediante la API Secrets.

Administración de secretos

Un secreto es un par clave-valor que almacena material confidencial mediante un nombre de clave que es único dentro de un ámbito de secreto.

El método para crear un secreto depende de si se usa un ámbito respaldado por Azure Key Vault o un ámbito respaldado por Databricks.

Creación de un secreto en un ámbito respaldado por Azure Key Vault

Para crear un secreto en Azure Key Vault, use Azure Portal o la API REST de Azure Set Secret .

Creación de un secreto en un ámbito respaldado por Databricks

Crea un secreto con la Databricks CLI (versión 0.205 y superiores), el SDK de Databricks para Python en un cuaderno, o la Secrets API. Los nombres de los secretos no distinguen mayúsculas y minúsculas.

CLI de Databricks

Al crear un secreto en un ámbito respaldado por Databricks, puede especificar el valor del secreto de una de estas tres maneras:

  • Especifica el valor como una cadena con el indicador --string-value.
  • Escriba el secreto cuando se le solicite de forma interactiva (secretos de una sola línea).
  • Pase el secreto mediante la entrada estándar (secretos de varias líneas).

Por ejemplo:

databricks secrets put-secret --json '{
  "scope": "<scope-name>",
  "key": "<key-name>",
  "string_value": "<secret>"
}'

Si va a crear un secreto de varias líneas, puede pasar el secreto mediante la entrada estándar. Por ejemplo:

(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <scope-name> <key-name>

SDK de Databricks para Python

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

w.secrets.put_secret("<secret_scope>","<key-name>",string_value ="<secret>")

Descifrar un secreto

Lee un secreto con la CLI Databricks (versión 0.205 y superior), o en un cuaderno con la utilidad Secrets (dbutils.secrets).

CLI de Databricks

Para leer el valor de un secreto usando la CLI de Databricks, debes decodificar el valor codificado en base64. Puede usar jq para extraer el valor y base64 --decode descodificarlo:

databricks secrets get-secret <scope-name> <key-name> | jq -r .value | base64 --decode

Utilidad de secretos (dbutils.secrets)

password = dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")

Enumerar secretos

Para enumerar secretos en un ámbito determinado:

databricks secrets list-secrets <scope-name>

La respuesta muestra metadatos sobre los secretos, como sus nombres de clave. Para listar estos metadatos en un cuaderno o trabajo, utiliza la utilidad Secrets (dbutils.secrets). Por ejemplo:

dbutils.secrets.list('my-scope')

Elimina un secreto

Para eliminar un secreto de un ámbito con la CLI de Databricks:

databricks secrets delete-secret <scope-name> <key-name>

También puede usar la API de secretos.

Para eliminar un secreto de un ámbito respaldado por Azure Key Vault, use la API de REST SetSecret de Azure o la interfaz de usuario de Azure Portal.

Administración de permisos de ámbito de secretos

Por defecto, el usuario que crea un ámbito secreto tiene el MANAGE permiso sobre él, lo que le permite leer secretos en el ámbito, escribir secretos en él y gestionar sus permisos.

Nota:

Las ACL de secretos se encuentran en el nivel de ámbito. Si usa ámbitos con respaldo de Azure Key Vault, los usuarios a los que se concede acceso al ámbito tienen acceso a todos los secretos de Azure Key Vault. Para restringir el acceso, utilice instancias independientes de almacén de claves de Azure.

Gestiona los permisos de ámbito de secretos con la CLI Databricks (versión 0.205 y superior) o la API Secrets. Para conocer los niveles de permisos de secretos, consulte ACL de secreto

Conceder permisos a un usuario en un entorno secreto

Nota:

Conceder permisos en un ámbito de secreto requiere el plan Premium.

Para conceder permisos de usuario en un ámbito secreto mediante la CLI de Databricks:

databricks secrets put-acl <scope-name> <principal> <permission>

Al realizar una solicitud PUT para una entidad de seguridad que ya tiene un permiso aplicado, se sobrescribe el nivel de permisos existente.

El campo principal especifica una entidad de seguridad de Azure Databricks existente. Se especifica un usuario mediante su dirección de correo electrónico, una entidad de servicio con su valor applicationId y un grupo con su nombre de grupo. Para más información, consulte Principal.

Por ejemplo, para que un grupo como datascience lea los secretos en un ámbito, concédele READ:

databricks secrets put-acl <scope-name> <group> READ

Visualización de permisos de ámbito de secretos

Para ver todos los permisos de ámbito de secretos para un ámbito de secretos determinado:

databricks secrets list-acls <scope-name>

Para obtener los permisos de ámbito de secretos aplicados a una entidad de seguridad para un ámbito de secretos determinado:

databricks secrets get-acl <scope-name> <principal>

Si no existe ninguna ACL para el principal y el ámbito especificados, esta solicitud falla.

Eliminación de un permiso de ámbito de secretos

Para eliminar un permiso de ámbito secreto aplicado a un principal para un ámbito determinado:

databricks secrets delete-acl <scope-name> <principal>

Redacción secreta

Almacenar credenciales como secretos de Azure Databricks ayuda a protegerlas cuando ejecutas notebooks y trabajos. Sin embargo, aún puedes imprimir accidentalmente un secreto en buffers de salida estándar o mostrar el valor durante la asignación de variables.

Para evitar esto, Azure Databricks intenta censurar valores secretos que se leen mediante dbutils.secrets.get() y a los que se hace referencia en una propiedad de configuración de Spark. Cuando se muestra, los valores secretos se reemplazan por [REDACTED].

Por ejemplo, si establece una variable en un valor secreto mediante dbutils.secrets.get() e imprime esa variable, esa variable se reemplaza por [REDACTED].

Warning

La ocultación solo se aplica a los valores secretos literales. La funcionalidad de redacción secreta no impide transformaciones deliberadas y arbitrarias de un literal secreto. Para controlar secretos, utiliza listas de control de acceso para limitar los permisos para ejecutar comandos. Esto impide el acceso no autorizado a contextos de bloc de notas compartidos.

Redacción secreta en SQL

Azure Databricks intenta censurar todos los comandos del lenguaje de consulta de datos SQL (DQL) que invocan la función de secretos, incluyendo vistas referenciadas y funciones definidas por el usuario. Cuando se usa la secret función, la salida se reemplaza por [REDACTED] siempre que sea posible. Al igual que la redacción del cuaderno, esto solo se aplica a los valores literales, no a los secretos transformados o a los que se hace referencia indirectamente.

En lo que respecta a los comandos de lenguaje de manipulación de datos SQL (DML), Azure Databricks permite realizar consultas de secretos si el secreto se considera seguro. Por ejemplo, un secreto es seguro cuando está envuelto en una función criptográfica como sha() o aes_encrypt(), que impiden que los valores en bruto se almacenen sin cifrar.

Validación de secretos en SQL

Azure Databricks también aplica validación para bloquear comandos DML de SQL que podrían dar lugar a que se guarden secretos sin cifrar en tablas. El analizador de consultas intenta identificar y evitar estos escenarios, lo que ayuda a evitar el almacenamiento accidental de información confidencial en texto no cifrado.

Recursos adicionales

Resource Description
Administración de secretos Compara los ámbitos secretos de los espacios de trabajo con los secretos del catálogo de Unity y mira dónde puedes usar cada uno.
Usar un secreto en una propiedad de configuración de Spark o variable de entorno Haga referencia a secretos en las propiedades de configuración de Spark y las variables de entorno.