Compartir a través de


Administración de secretos

A veces, el acceso a los datos requiere que se autentique en orígenes de datos externos a través de JDBC. En lugar de escribir directamente las credenciales en un cuaderno, puede usar secretos de Azure Databricks para almacenar sus credenciales y hacer referencia a ellas en cuadernos y trabajos. En este artículo se proporciona información general sobre los secretos de Azure Databricks.

Introducción a los secretos

Para configurar y usar secretos:

  1. Crear un ámbito de secreto. Un ámbito de secretos es una colección de secretos identificados por un nombre.
  2. Adición de secretos al ámbito.
  3. Asigne permisos en el ámbito del secreto.
  4. Acceso a secretos mediante utilidades de Databricks, consulte Utilidad de secretos (dbutils.secrets).

Para obtener un ejemplo completo de cómo usar secretos en los flujos de trabajo, consulte Tutorial: Creación y uso de un secreto de Databricks. Para usar un secreto en una propiedad de configuración de Spark o una variable de entorno, consulte Uso de un secreto en una propiedad de configuración de Spark o una variable de entorno.

Advertencia

Los secretos de Azure Databricks pueden leerlos los administradores, los creadores de secretos y aquellos usuarios a los que se haya concedido el permiso pertinente. Aunque Databricks hace un esfuerzo por censurar valores secretos que se pueden mostrar en cuadernos, no es posible evitar que estos usuarios lean secretos. Consulte Redacción secreta.

Administración de ámbitos secretos

Un ámbito de secretos es una colección de secretos identificados por un nombre. 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. El ámbito del secreto respaldado por Azure Key Vault es una interfaz de solo lectura para Key Vault. Debe administrar secretos en ámbitos secretos respaldados por Azure Key Vault en Azure.
  • Respaldado por Databricks: un ámbito secreto respaldado por Databricks se almacena en una base de datos cifrada que es propiedad y administra Azure Databricks.

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

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

En esta sección se describe cómo crear un ámbito de secretos respaldado por Azure Key Vault mediante Azure Portal y la interfaz de usuario del área de trabajo de Azure Databricks. También es posible crear un ámbito de secretos con el respaldo de Azure Key Vault mediante la CLI de Databricks.

Requisitos

  • 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, Colaborador o Propietario de Key Vault en la instancia de Azure Key Vault que desea 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 almacén de claves está en un inquilino diferente al área de trabajo de Azure Databricks, el usuario de Azure AD que crea el ámbito de secretos debe tener permiso para crear entidades de servicio en el inquilino del almacén de claves. 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. Inicie sesión en Azure Portal, busque y seleccione la instancia de Azure Key Vault.

  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.

    Nota:

    La creación de un rol de ámbito de secreto respaldado por Azure Key Vault concede los permisos Obtener y Enumerar al identificador de aplicación para el servicio Azure Databricks mediante directivas de acceso al almacén de claves. El modelo de permisos de control de acceso basado en rol de Azure no se admite con Azure Databricks.

  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, active Permitir que los servicios de confianza de Microsoft puedan omitir 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. Ir a https://<databricks-instance>#secrets/createScope. Reemplace <databricks-instance> por la dirección URL del área de trabajo de la implementación de Azure Databricks. Esta dirección URL distingue mayúsculas de minúsculas. Por ejemplo, scope en createScope debe usar una mayúscula S).

    Crear ámbito

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

  3. En Administrar entidad de seguridad, seleccione Creador o Todos los usuarios del área de trabajo para especificar qué usuarios tienen el permiso MANAGE en el ámbito del secreto.

    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.

Creación de un ámbito de secreto con respaldo de Databricks

En esta sección se describe cómo crear un ámbito de secreto mediante la CLI de Databricks ( versión 0.205 y posteriores). También puede usar la API de secretos.

Nombres de ámbito de secreto:

  • Debe ser único dentro de un área de trabajo.
  • Debe constar de caracteres alfanuméricos, guiones, caracteres de subrayado, @y puntos, y no puede superar los 128 caracteres.
  • No distingue mayúsculas de minúsculas.

Todos los usuarios del área de trabajo consideran que los nombres de ámbito del secreto no son confidenciales y son legibles.

Para crear un ámbito mediante la CLI de Databricks:

databricks secrets create-scope <scope-name>

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

Enumeración de los ámbitos de 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 ACL aplicadas 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.

En esta sección se describe cómo crear un ámbito de secreto mediante la CLI de Databricks ( versión 0.205 y posteriores). También puede usar la API de secretos. Los nombres de los secretos no distinguen mayúsculas de minúsculas.

Crear un secreto

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

Crear 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 . Para obtener un ejemplo, consulte Paso 4: Adición del secreto de cliente a Azure Key Vault.

Azure Key Vault

Crear un secreto en un ámbito respaldado por Databricks

En esta sección se describe cómo crear un secreto mediante el ¿Qué es la CLI de Databricks? (versión 0.205 y posteriores) o en un cuaderno mediante el SDK de Databricks para Python. También puede usar la API de secretos. Los nombres de los secretos no distinguen mayúsculas de 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:

  • Especifique el valor como una cadena mediante la marca –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>")

leer un secreto

Para leer un secreto en un cuaderno o trabajo, debe usar la utilidad Secrets (dbutils.secrets). Por ejemplo:

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

Enumeración de secretos

Para enumerar secretos en un ámbito determinado:

databricks secrets list-secrets <scope-name>

La respuesta muestra información de metadatos sobre los secretos, como los nombres de clave de los secretos. Use la utilidad Secretos (dbutils.secrets) en un cuaderno o trabajo para enumerar estos metadatos. Por ejemplo:

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

eliminar 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

De forma predeterminada, al usuario que crea los ámbitos secretos se le concede el permiso MANAGE. Esto permite al creador del ámbito leer secretos en el ámbito, escribir secretos en el ámbito y administrar permisos en el ámbito.

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.

En esta sección se describe cómo administrar el control de acceso a secretos mediante ¿Qué es la CLI de Databricks (versión 0.205 y posteriores). También puede usar la API de secretos. Para conocer los niveles de permisos secretos, consulte ACL de secretos

Concesión de permisos de usuario en un ámbito de secreto

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 Entidad de seguridad.

Visualización de permisos de ámbito de secretos

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

databricks secrets list-acls <scope-name>

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

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

Si no existe ninguna ACL para la entidad de seguridad y el ámbito especificados, se produce un error en esta solicitud.

Eliminación de un permiso de ámbito de secreto

Para eliminar un permiso de ámbito de secreto aplicado a una entidad de seguridad para un ámbito de secreto determinado:

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

Redacción secreta

Almacenar credenciales como secretos de Azure Databricks facilita la protección de las credenciales al ejecutar cuadernos y trabajos. Sin embargo, es fácil imprimir de manera accidental un secreto en búferes de salida estándar o mostrar el valor durante la asignación de variables.

Para evitar esto, Azure Databricks redacta todos los valores secretos que se leen mediante dbutils.secrets.get(). Cuando se muestra en la salida de la celda del cuaderno, 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].

Advertencia

La redacción de secretos para la salida de celda del cuaderno solo se aplica a los literales. La funcionalidad de redacción secreta no impide transformaciones deliberadas y arbitrarias de un literal secreto. Para garantizar el control adecuado de los secretos, debe usar 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.