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.
Este artículo describe cómo utilizar una credencial de servicio en Unity Catalog para conectarse a servicios de nube externos. Un objeto de credencial de servicio en Unity Catalog encapsula una credencial de nube a largo plazo que proporciona acceso a un servicio en la nube externo al que los usuarios necesitan conectarse desde Azure Databricks.
Consulte también:
Antes de empezar
Antes de poder utilizar una credencial de servicio para conectarse a un servicio en la nube externo, debe tener:
Un área de trabajo de Azure Databricks habilitada para Unity Catalog.
Un recurso de proceso que se encuentra en Databricks Runtime 16.2 o superior.
No se admiten almacenes SQL.
La versión preliminar pública de las credenciales de servicio está disponible en Databricks Runtime 15.4 LTS y versiones posteriores, con compatibilidad con Python, pero sin compatibilidad con Scala.
Una credencial de servicio creada en tu metastore de Unity Catalog que dé acceso al servicio en la nube.
El privilegio
ACCESSen la credencial de servicio o la propiedad de la credencial de servicio.
Utilice una credencial de servicio en su código
En esta sección se proporcionan ejemplos de uso de credenciales de servicio en un cuaderno. Sustituya los valores de marcador de posición. Estos ejemplos no muestran necesariamente la instalación de las bibliotecas necesarias, que dependen del servicio cliente al que desea acceder. Solo se admiten Python y Scala.
Nota
API específica de UDF para credenciales de servicio:
En UDF, use databricks.service_credentials.getServiceCredentialsProvider() para acceder a las credenciales de servicio.
Esto difiere de la dbutils.credentials.getServiceCredentialsProvider() función usada en cuadernos, que no está disponible en contextos de ejecución de UDF.
- Credenciales de servicio en las UDF escalares de Python para las UDF escalares de Python
- Credenciales de servicio en UDF de Python del Catálogo de Unity de Batch para UDF de Python en Batch
ejemplo de Python: configuración de un cliente de Azure SDK para usar una credencial de servicio específica
from azure.keyvault.secrets import SecretClient # example Azure SDK client
credential = dbutils.credentials.getServiceCredentialsProvider('your-service-credential')
vault_url = "https://your-keyvault-name.vault.azure.net/"
client = SecretClient(vault_url=vault_url, credential=credential)
ejemplo de Scala: configuración de un cliente de Azure SDK para usar una credencial de servicio específica
import com.azure.security.keyvault.secrets.{SecretClient, SecretClientBuilder}
// Get credentials from dbutils
val credential = dbutils.credentials.getServiceCredentialsProvider("your-service-credential")
// URL of the Key Vault
val vaultUrl = "https://your-keyvault-name.vault.azure.net/"
// Create the SecretClient
val client: SecretClient = new SecretClientBuilder()
.vaultUrl(vaultUrl)
.credential(credential)
.buildClient()
Especificar una credencial de servicio predeterminada para un recurso de proceso
Opcionalmente, puede especificar una credencial de servicio predeterminada para un clúster de proceso multiuso o de trabajos estableciendo una variable de entorno. De forma predeterminada, el SDK utiliza esa credencial de servicio si no se proporciona autenticación. Los usuarios aún requieren ACCESS en esa credencial de servicio para conectarse al servicio en la nube externo. Databricks no recomienda este enfoque, porque hace que su código sea menos portable que nombrar la credencial de servicio en su código.
Nota
Los almacenamientos de proceso y SQL sin servidor no admiten variables de entorno y, por tanto, no admiten credenciales de servicio predeterminadas.
Abra la página de edición del clúster.
Consulte Administración del proceso clásico.
Haga clic en Avanzadas en la parte inferior de la página y vaya a la pestaña Spark .
Añada la siguiente entrada en Variables de entorno, sustituyendo a
<your-service-credential>:DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME=<your-service-credential>
Los ejemplos de código siguientes no especifican una credencial de servicio. En su lugar, usan la credencial de servicio especificada en la variable de entorno DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME:
Pitón
Si usa una credencial de servicio predeterminada, no es necesario especificar las credenciales como argumento:
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
credential = DefaultAzureCredential()
vault_url = "https://your-keyvault-name.vault.azure.net/"
client = SecretClient(vault_url=vault_url, credential=credential)
Compare esto con el ejemplo de ejemplo de Python: configure un cliente de Azure SDK para usar una credencial de servicio específica, que no importa DefaultAzureCredential y agrega la especificación de credenciales:
credential = dbutils.credentials.getServiceCredentialsProvider('your-service-credential')
Scala
En Scala, reemplace el nombre de credencial de servicio por null.
val azureCredentials = dbutils.credentials.getServiceCredentialsProvider(null).asInstanceOf[TokenCredential]