Usar un secreto en una propiedad de configuración de Spark o una variable de entorno
En este artículo se proporcionan detalles sobre cómo hacer referencia a un secreto en una propiedad de configuración de Spark o una variable de entorno. Los secretos recuperados se eliminan de la salida del cuaderno y de los registros del controlador y del ejecutor de Spark.
Importante
Esta característica está en versión preliminar pública.
Consideraciones sobre la seguridad
Databricks no recomienda almacenar secretos en variables de entorno de clúster si no deben estar disponibles para todos los usuarios del clúster. Tenga en cuenta las siguientes consecuencias de seguridad al hacer referencia a secretos en una variable de entorno o propiedad de configuración de Spark:
Cualquier usuario con permisos CAN ATTACH TO en un clúster o En ejecutar permisos en un cuaderno puede leer variables de entorno de clúster desde el cuaderno.
Si el control de acceso a tablas no está habilitado en un clúster, cualquier usuario con permisos CAN ATTACH TO en un clúster o Ejecutar permisos en un cuaderno puede leer las propiedades de configuración de Spark desde el cuaderno. Esto incluye a los usuarios que no tienen permiso directo para leer un secreto.
Los secretos no se redactan del registro
stdout
ystderr
las secuencias del controlador de Spark. Para proteger los datos confidenciales, los registros de controladores de Spark solo son visibles por los usuarios con el permiso CAN MANAGE en el trabajo, el modo de acceso de usuario único y los clústeres en modo de acceso compartido.En clústeres de modo de acceso compartido sin aislamiento, los usuarios pueden ver los registros de controladores de Spark con el permiso CAN ATTACH TO o CAN MANAGE. Para limitar quién puede leer los registros solo a los usuarios con el permiso CAN MANAGE, establezca
spark.databricks.acl.needAdminPermissionToViewLogs
entrue
.
Requisitos
Los siguientes requisitos se aplican para hacer referencia a secretos en las propiedades de configuración de Spark y las variables de entorno:
- Los propietarios del clúster deben tener el permiso CAN READ en el ámbito del secreto.
- Debe ser propietario del clúster para agregar o editar un secreto en una propiedad de configuración de Spark o una variable de entorno.
- Si se actualiza un secreto, debe reiniciar el clúster para volver a capturar el secreto.
- Debe tener el permiso CAN MANAGE en el clúster para eliminar una propiedad de configuración secreta de Spark o una variable de entorno.
Referencia a un secreto con una propiedad de configuración de Spark
Especifique una referencia a un secreto en una propiedad de configuración de Spark con el formato siguiente:
spark.<property-name> {{secrets/<scope-name>/<secret-name>}}
Sustituya:
<scope-name>
con el nombre del ámbito del secreto.<secret-name>
con el nombre único del secreto en el ámbito.<property-name>
con la propiedad de configuración de Spark
Cada propiedad de configuración de Spark solo puede hacer referencia a un secreto, pero puede configurar varias propiedades de Spark para hacer referencia a secretos.
Por ejemplo:
spark.password {{secrets/scope1/key1}}
Para capturar el secreto en el cuaderno y usarlo:
Python
spark.conf.get("spark.password")
SQL
SELECT ${spark.password};
Referencia a un secreto en una variable de entorno
Especifique una ruta de acceso al secreto en una variable de entorno con el siguiente formato:
<variable-name>={{secrets/<scope-name>/<secret-name>}}
Puede usar cualquier nombre de variable válido al hacer referencia a un secreto. El acceso a los secretos a los que se hace referencia en las variables de entorno viene determinado por los permisos del usuario que configuró el clúster. Aunque los secretos almacenados en variables de entorno son accesibles para todos los usuarios del clúster, se redactan desde la presentación de texto no cifrado, de forma similar a otras referencias secretas.
Las variables de entorno que hacen referencia a secretos son accesibles desde un script de inicialización con ámbito de clúster. Consulte Establecimiento y uso de variables de entorno con scripts de inicialización.
Por ejemplo:
Puede establecer una variable de entorno para que haga referencia a un secreto:
SPARKPASSWORD={{secrets/scope1/key1}}
Para capturar el secreto en un script de inicialización, acceda a $SPARKPASSWORD
mediante el siguiente patrón:
if [ -n "$SPARKPASSWORD" ]; then
# code to use ${SPARKPASSWORD}
fi