Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al acceder a orígenes de datos externos a través de JDBC, la autenticación suele ser necesaria. En lugar de escribir credenciales directamente en cuadernos, puede almacenar de forma segura las credenciales mediante secretos de Databricks y hacer referencia a ellas en sus cuadernos y trabajos. Este enfoque mejora la seguridad y simplifica la administración de credenciales. En esta página se proporciona información general sobre los secretos de Databricks.
Nota:
Databricks recomienda usar El catálogo de Unity para configurar el acceso a los datos en el almacenamiento en la nube. Consulte Conexión al almacenamiento de objetos en la nube mediante el catálogo de Unity.
Resumen de secretos
Para configurar y usar los secretos:
- Crear un ámbito secreto. Un ámbito de secretos es una colección de secretos identificados por un nombre.
- Adición de secretos al ámbito
- Asigne permisos en el ámbito del secreto.
- Haga referencia a secretos en el código.
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 administradores del área de trabajo, los creadores de secretos y los usuarios a los que se les ha concedido permiso pueden acceder a los secretos de Databricks y leerlos. Aunque Databricks intenta censurar los valores secretos en los resultados de cuadernos, no es posible evitar completamente que estos usuarios vean el contenido de los secretos. Asigne siempre permisos de acceso secreto cuidadosamente para proteger la información confidencial.
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 de secreto con respaldo de Azure Key Vault es una interfaz de solo lectura para el almacén de claves. Debe administrar secretos en ámbitos secretos respaldados por Azure Key Vault 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.
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
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 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 almacén de claves existe en un inquilino diferente al área de trabajo de Azure Databricks, el usuario de Azure AD que crea el ámbito del secreto 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
Inicie sesión en Azure Portal, busque y seleccione la instancia de Azure Key Vault.
En Configuración, haga clic en la pestaña Configuración de acceso.
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.
En Configuración, seleccione Redes.
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
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 ye minúsculas. Por ejemplo,scope
encreateScope
debe usar una mayúsculaS
).Escriba el nombre del ámbito de secretos. Los nombres de ámbito de secretos no distinguen mayúsculas y minúsculas.
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.
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.
Haga clic en Crear.
Use el comando de la CLI de Databricks
databricks secrets list-scopes
para comprobar que el ámbito se haya creado correctamente.
Crea un ámbito de secreto respaldado por Databricks
En esta sección se describe cómo crear un ámbito de secretos mediante laCLI de Databricks (versión 0.205 y posteriores). También puede usar la API de secretos.
Nombres de ámbito de secretos:
- 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. - 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.
En esta sección se describe cómo crear un ámbito de secretos mediante laCLI 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 y minúsculas.
Crear un 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 . Para obtener un ejemplo, consulte Paso 4: Adición del secreto de cliente a Azure Key Vault.
Creación de un secreto en un ámbito respaldado por Databricks
En esta sección se describe cómo crear un secreto mediante 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 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:
- 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>")
Descifrar un secreto
En esta sección se describe cómo leer un secreto mediante la CLI de Databricks (versión 0.205 y posteriores) o en un cuaderno mediante la utilidad Secrets (dbutils.secrets).
CLI de Databricks
Para leer el valor de un secreto mediante la CLI de Databricks, debe descodificar el valor codificado en base64. Puede usar jq
para extraer el valor y base --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>")
Lista 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')
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
De forma predeterminada, al usuario que crea los ámbitos secretos se le concede el permiso MANAGE. Esto permite al creador del ámbito leer y escribir secretos, 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 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, vea ACL de secretos
Conceder permisos a un usuario en un entorno 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 Principal.
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 facilita la protección de las credenciales al ejecutar cuadernos y trabajos. Sin embargo, es fácil imprimir de manera accidental un secreto en los búferes de salida por defecto o mostrar el valor cuando se asigna una variable.
Para evitar esto, Azure Databricks redacta todos los 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]
.
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.