Compartir a través de


Autorización del acceso interactivo a recursos de Azure Databricks con una cuenta de usuario mediante OAuth

En este tema se proporcionan pasos y detalles para autorizar el acceso a los recursos de Azure Databricks al ejecutar interactivamente comandos de la CLI de Azure Databricks o llamar a las API rest de Azure Databricks.

Azure Databricks usa OAuth como protocolo preferido para la autorización y autenticación de usuarios al interactuar con los recursos de Azure Databricks fuera de la interfaz de usuario. Azure Databricks también proporciona la herramienta de autenticación de cliente unificada para automatizar la actualización de los tokens de acceso generados como parte del método de autenticación de OAuth.

Para más detalles de alto nivel, consulte Autorización de acceso a los recursos de Azure Databricks.

¿Cuáles son mis opciones de autorización y autenticación al acceder a los recursos de Azure Databricks?

En este tema, autorización hace referencia al protocolo (OAuth) que se usa para negociar el acceso a recursos específicos de Azure Databricks a través de la delegación. Autenticación hace referencia al mecanismo por el que se representan, transmiten y comprueban—las credenciales que, en este caso, se tokens de acceso.

Azure Databricks usa autorización basada en OAuth 2.0para permitir el acceso a los recursos de área de trabajo y cuenta de Azure Databricks desde la línea de comandos o el código en nombre de un usuario con los permisos para acceder a esos recursos. Una vez que un usuario inicia sesión y da su consentimiento a la solicitud de autenticación de OAuth, se proporciona un token de OAuth a la herramienta o SDK participante para realizar la autenticación basada en tokens en nombre del usuario desde ese momento. El token de acceso de OAuth tiene una duración de una hora, después de la cual la herramienta o el SDK implicados realizarán un intento automático de obtener un nuevo token que también es válido durante una hora.

Azure Databricks admite dos maneras de autorizar el acceso a una cuenta de usuario con OAuth:

  • Principalmente de forma automática, mediante la compatibilidad con la autenticación de cliente unificada de Databricks. Use este enfoque simplificado si usa herramientas y SDK específicos de Azure Databricks (como el SDK de Terraform de Databricks). Las herramientas y los SDK admitidos se enumeran en la autenticación unificada de cliente de Databricks.
  • Manualmente, mediante la generación directa de un par de verificador o desafío de código de OAuth y un código de autorización y mediante su uso para crear el token de OAuth inicial que proporcionará en la configuración. Use este enfoque cuando no use una API compatible con la autenticación unificada de cliente de Databricks. Para obtener más información, consulte: Generar y usar tokens de acceso de forma manual para la autenticación OAuth de usuario a máquina (U2M).

Autorización interactiva de usuario con la autenticación unificada del cliente de Databricks

Nota:

Antes de empezar a configurar la autorización, revise los permisos de ACL para la categoría específica de operaciones que realizará en los objetos del área de trabajo y determine si la cuenta tiene el nivel de acceso que necesita. Para obtener más información, consulte Listas de control de acceso.

Para realizar la autorización de OAuth con sdk y herramientas de Azure Databricks que admiten la autenticación de cliente unificada, integre lo siguiente en el código:

Entorno

Para usar variables de entorno para un tipo de autenticación de Azure Databricks específico con una herramienta o SDK, consulte Autorización del acceso a recursos de Azure Databricks o la documentación de la herramienta o del SDK. Consulte también Variables de entorno y campos para la autenticación unificada del cliente y Métodos predeterminados para la autenticación unificada del cliente.

Para las operaciones de nivel de cuenta, establezca las siguientes variables de entorno:

  • DATABRICKS_HOST, establecida en el valor de la dirección URL de la consola de la cuenta de Azure Databricks, https://accounts.azuredatabricks.net.
  • DATABRICKS_ACCOUNT_ID

Para las operaciones de nivel de área de trabajo, establezca las siguientes variables de entorno:

Perfil

Cree o identifique un perfil de configuración de Azure Databricks con los campos siguientes en el archivo .databrickscfg. Si crea el perfil, reemplace los marcadores de posición por los valores adecuados. Para usar el perfil con una herramienta o un SDK, consulte Autorización del acceso a los recursos de Azure Databricks o la documentación de la herramienta o del SDK. Consulte también Variables de entorno y campos para la autenticación unificada del cliente y Métodos predeterminados para la autenticación unificada del cliente.

Para las operaciones de nivel de cuenta, establezca los siguientes valores en el archivo .databrickscfg. En este caso, la dirección URL de la consola de la cuenta de Azure Databricks es https://accounts.azuredatabricks.net:

[<some-unique-configuration-profile-name>]
host       = <account-console-url>
account_id = <account-id>

Para las operaciones de nivel de área de trabajo, establezca los siguientes valores en el archivo .databrickscfg. En este caso, el host es la dirección URL de Azure Databricks por área de trabajo, por ejemplo https://adb-1234567890123456.7.azuredatabricks.net:

[<some-unique-configuration-profile-name>]
host = <workspace-url>

CLI

Para la CLI de Databricks, ejecute el comando databricks auth login con las siguientes opciones:

Después de ejecutar este comando, siga las instrucciones de su navegador web para iniciar sesión en su cuenta o área de trabajo de Azure Databricks.

Para más información, consulte autorización de OAuth con la CLI de Databricks.

Conexión

Nota:

La autenticación OAuth U2M es compatible con las siguientes versiones de Databricks Connect:

  • Para Python, Databricks Connect para Databricks Runtime 13.1 y versiones posteriores.
  • Para Scala, Databricks Connect para Databricks Runtime 13.3 LTS y versiones posteriores.

Para Databricks Connect, puede realizar una de las siguientes acciones:

Los valores del archivo .databrickscfg siempre tienen prioridad sobre las variables de entorno.

Para inicializar el cliente de Databricks Connect con estas variables de entorno o valores en el .databrickscfg archivo, consulte Configuración de proceso para Databricks Connect.

Código de VS

Para la extensión de Databricks para Visual Studio Code, haga lo siguiente:

  1. En el panel Configuración, haga clic en Configurar Databricks.
  2. En la Paleta de comandos, en Host de Databricks, escriba la dirección URL del área de trabajo, por ejemplo https://adb-1234567890123456.7.azuredatabricks.net y, a continuación, presione Enter.
  3. Seleccione OAuth (usuario a máquina).
  4. Siga las instrucciones que aparecen en pantalla en su navegador web para finalizar la autenticación con su cuenta de Azure Databricks y permitir el acceso a todas las API.

Para obtener más información, consulte autorización de OAuth U2M con la CLI de Databricks.

Terraform

Para las operaciones a nivel de cuenta y a nivel de área de trabajo , debe utilizar la CLI de Databricks para ejecutar el siguiente comando antes de aplicar su configuración de Terraform. Este comando indica a la CLI de Databricks que genere y almacene en caché el token OAuth necesario en la ruta .databricks/token-cache.json dentro de la carpeta de inicio de su usuario en su máquina:

Configuración de las operaciones a nivel de cuenta de Azure Databricks

databricks auth login --host <account-console-url> --account-id <account-id>

Reemplace los marcadores de posición siguientes:

  • Reemplace <account-console-url> por el valor https://accounts.azuredatabricks.net. (no lo establezca con el valor de la URL de su área de trabajo de Azure Databricks).
  • Reemplace <account-id> por el valor de su cuenta Azure Databricks. Consulta Localizar el identificador de la cuenta.

Nota:

Si dispone de un perfil de configuración de Azure Databricks con los campos host y account_id ya configurados, puede reemplazar --host <account-console-url> --account-id <account-id> por --profile <profile-name>.

Después de ejecutar el comando auth login, se le pedirá que guarde la URL de inicio de sesión de la cuenta y el Id. de la cuenta como un perfil de configuración de Azure Databricks. Cuando se le solicite, introduzca el nombre de un perfil nuevo o existente en su archivo .databrickscfg. Cualquier perfil existente con el mismo nombre en su archivo .databrickscfg se sobrescribe.

Si se le solicita, siga las instrucciones en pantalla de su navegador web para completar el inicio de sesión. A continuación, use código de Terraform similar a uno de los fragmentos de código siguientes:

Para la autenticación predeterminada:

provider "databricks" {
  alias = "account"
}

Para la configuración directa, establezca el provider mediante la siguiente configuración. Reemplace los marcadores de posición de retrieve- por su propia implementación para recuperar los valores de la consola o de algún otro almacén de configuración, como HashiCorp Vault. Consulte también proveedor de almacén). En este ejemplo, puede asignar account_id a la dirección URL de la consola de su cuenta de Azure Databricks .

provider "databricks" {
  alias      = "account"
  host       = <retrieve-account-console-url>
  account_id = <retrieve-account-id>
}

Configuración de las operaciones a nivel de área de trabajo de Azure Databricks

databricks auth login --host <workspace-url>

Reemplace el marcador de posición <workspace-url> por la URL por área de trabajo de Azure Databricks de destino, por ejemplo https://adb-1234567890123456.7.azuredatabricks.net.

Nota:

Si dispone de un perfil de configuración de Azure Databricks con el campo host ya configurado, puede reemplazar --host <workspace-url> por --profile <profile-name>.

Una vez ejecutado el comando auth login, se le pedirá que guarde la URL del área de trabajo como un perfil de configuración de Azure Databricks. Cuando se le solicite, introduzca el nombre de un perfil nuevo o existente en su archivo .databrickscfg. Cualquier perfil existente con el mismo nombre en su archivo .databrickscfg se sobrescribe.

Si se le solicita, siga las instrucciones en pantalla de su navegador web para completar el inicio de sesión. A continuación, use código de Terraform similar a uno de los fragmentos de código siguientes:

Para la autenticación predeterminada:

  provider "databricks" {
  alias = "workspace"
}

Para la configuración directa (reemplace los marcadores de posición de retrieve por su propia implementación para recuperar los valores de la consola o de algún otro almacén de configuración, como HashiCorp Vault. Consulte también proveedor de almacén). En este caso, el host es la dirección URL de Azure Databricks por área de trabajo, por ejemplo https://adb-1234567890123456.7.azuredatabricks.net:

provider "databricks" {
  alias = "workspace"
  host  = <retrieve-workspace-url>
}

Para obtener más información sobre la autenticación con el proveedor Databricks Terraform, consulte Authentication.

Python

Para las operaciones a nivel de cuenta y a nivel de área de trabajo, debe utilizar la CLI de Databricks para ejecutar el siguiente comando, antes de ejecutar su código Python. Este comando indica a la CLI de Databricks que genere y almacene en caché el token OAuth necesario en la ruta .databricks/token-cache.json dentro de la carpeta de inicio de su usuario en su máquina:

Configuración de las operaciones a nivel de cuenta de Azure Databricks

databricks auth login --host <account-console-url> --account-id <account-id>

Reemplace los marcadores de posición siguientes:

  • Reemplace <account-console-url> por el valor https://accounts.azuredatabricks.net. (no lo establezca con el valor de la URL de su área de trabajo de Azure Databricks).
  • Reemplace <account-id> por el valor de su cuenta Azure Databricks. Consulta Localizar el identificador de la cuenta.

Nota:

Si dispone de un perfil de configuración de Azure Databricks con los campos host y account_id ya configurados, puede reemplazar --host <account-console-url> --account-id <account-id> por --profile <profile-name>.

Después de ejecutar el comando auth login, se le pedirá que guarde la URL de inicio de sesión de la cuenta y el Id. de la cuenta como un perfil de configuración de Azure Databricks. Cuando se le solicite, introduzca el nombre de un perfil nuevo o existente en su archivo .databrickscfg. Cualquier perfil existente con el mismo nombre en su archivo .databrickscfg se sobrescribe.

Si se le solicita, siga las instrucciones en pantalla de su navegador web para completar el inicio de sesión. A continuación, utilice código Python similar a uno de los siguientes fragmentos:

Para autorización predeterminada mediante la autenticación de cliente unificada de Databricks:

from databricks.sdk import AccountClient

a = AccountClient()
# ...

Para la configuración directa (reemplace los marcadores de posición retrieve por su propia implementación para recuperar los valores de la consola o de otro almacén de configuración, como Azure KeyVault). En este caso, la dirección URL de la consola de la cuenta de Azure Databricks es https://accounts.azuredatabricks.net:

from databricks.sdk import AccountClient

a = AccountClient(
  host       = retrieveAccountConsoleUrl(),
  account_id = retrieveAccountId()
)
# ...

Configuración de las operaciones a nivel de área de trabajo de Azure Databricks

databricks auth login --host <worskpace-url>

Reemplace el marcador de posición <workspace-url> por la URL por área de trabajo de Azure Databricks de destino, por ejemplo https://adb-1234567890123456.7.azuredatabricks.net.

Nota:

Si dispone de un perfil de configuración de Azure Databricks con el campo host ya configurado, puede reemplazar --host <workspace-url> por --profile <profile-name>.

Una vez ejecutado el comando auth login, se le pedirá que guarde la URL del área de trabajo como un perfil de configuración de Azure Databricks. Cuando se le solicite, introduzca el nombre de un perfil nuevo o existente en su archivo .databrickscfg. Cualquier perfil existente con el mismo nombre en su archivo .databrickscfg se sobrescribe.

Si se le solicita, siga las instrucciones en pantalla de su navegador web para completar el inicio de sesión. A continuación, utilice código Python similar a uno de los siguientes fragmentos:

Para autorización predeterminada mediante la autenticación de cliente unificada de Databricks:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

Para la configuración directa (reemplace los marcadores de posición retrieve por su propia implementación para recuperar los valores de la consola o de otro almacén de configuración, como Azure KeyVault). En este caso, el host es la dirección URL de Azure Databricks por área de trabajo, por ejemplo https://adb-1234567890123456.7.azuredatabricks.net:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient(host = retrieveWorkspaceUrl())
# ...

Para obtener más información sobre la autenticación con herramientas y SDK de Databricks que usan Python y que implementan la autenticación unificada de cliente de Databricks, consulte:

Java

Para las operaciones a nivel de cuenta y a nivel de área de trabajo, debe utilizar la CLI de Databricks para ejecutar el siguiente comando antes de ejecutar el código Java. Este comando indica a la CLI de Databricks que genere y almacene en caché el token OAuth necesario en la ruta .databricks/token-cache.json de la carpeta de inicio de su usuario en su máquina:

Configuración de las operaciones a nivel de cuenta de Azure Databricks

databricks auth login --host <account-console-url> --account-id <account-id>

Reemplace los marcadores de posición siguientes:

  • Reemplace <account-console-url> por el valor https://accounts.azuredatabricks.net. (no lo establezca con el valor de la URL de su área de trabajo de Azure Databricks).
  • Reemplace <account-id> por el valor de su cuenta Azure Databricks. Consulta Localizar el identificador de la cuenta.

Nota:

Si dispone de un perfil de configuración de Azure Databricks con los campos host y account_id ya configurados, puede reemplazar --host <account-console-url> --account-id <account-id> por --profile <profile-name>.

Después de ejecutar el comando auth login, se le pedirá que guarde la URL de inicio de sesión de la cuenta y el Id. de la cuenta como un perfil de configuración de Azure Databricks. Cuando se le solicite, introduzca el nombre de un perfil nuevo o existente en su archivo .databrickscfg. Cualquier perfil existente con el mismo nombre en su archivo .databrickscfg se sobrescribe.

Si se le solicita, siga las instrucciones en pantalla de su navegador web para completar el inicio de sesión. A continuación, utilice código Java similar a uno de los siguientes fragmentos:

Para autorización predeterminada mediante la autenticación de cliente unificada de Databricks:

import com.databricks.sdk.AccountClient;
// ...
AccountClient a = new AccountClient();
// ...

Para la configuración directa (reemplace los marcadores de posición retrieve por su propia implementación para recuperar los valores de la consola o de otro almacén de configuración, como Azure KeyVault). En este caso, la dirección URL de la consola de la cuenta de Azure Databricks es https://accounts.azuredatabricks.net:

import com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveAccountConsoleUrl())
  .setAccountId(retrieveAccountId());
AccountClient a = new AccountClient(cfg);
// ...

Configuración de las operaciones a nivel de área de trabajo de Azure Databricks

Para las operaciones a nivel de área de trabajo, primero debe utilizar la CLI de Databricks para ejecutar el siguiente comando, antes de ejecutar el código Java. Este comando indica a la CLI de Databricks que genere y almacene en caché el token OAuth necesario en la ruta .databricks/token-cache.json dentro de la carpeta de inicio de su usuario en su máquina:

databricks auth login --host <worskpace-url>

Reemplace el marcador de posición <workspace-url> por la URL por área de trabajo de Azure Databricks de destino, por ejemplo https://adb-1234567890123456.7.azuredatabricks.net.

Nota:

Si dispone de un perfil de configuración de Azure Databricks con el campo host ya configurado, puede reemplazar --host <workspace-url> por --profile <profile-name>.

Una vez ejecutado el comando auth login, se le pedirá que guarde la URL del área de trabajo como un perfil de configuración de Azure Databricks. Cuando se le solicite, introduzca el nombre de un perfil nuevo o existente en su archivo .databrickscfg. Cualquier perfil existente con el mismo nombre en su archivo .databrickscfg se sobrescribe.

Si se le solicita, siga las instrucciones en pantalla de su navegador web para completar el inicio de sesión. A continuación, utilice código Java similar a uno de los siguientes fragmentos:

Para autorización predeterminada mediante la autenticación de cliente unificada de Databricks:

import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...

Para la configuración directa (reemplace los marcadores de posición retrieve por su propia implementación para recuperar los valores de la consola o de otro almacén de configuración, como Azure KeyVault). En este caso, el host es la dirección URL de Azure Databricks por área de trabajo, por ejemplo https://adb-1234567890123456.7.azuredatabricks.net:

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveWorkspaceUrl())
WorkspaceClient w = new WorkspaceClient(cfg);
// ...

Para obtener más información sobre cómo autorizar y autenticar con herramientas y SDK de Databricks que usan Java y que implementan autenticación unificada del cliente de Databricks, consulte:

Go

Para las operaciones a nivel de cuenta y a nivel de área de trabajo, debe utilizar la CLI de Databricks para ejecutar el siguiente comando antes de ejecutar su código Go. Este comando indica a la CLI de Databricks que genere y almacene en caché el token OAuth necesario en la ruta .databricks/token-cache.json dentro de la carpeta de inicio de su usuario en su máquina:

Configuración de las operaciones a nivel de cuenta de Azure Databricks

databricks auth login --host <account-login-url> --account-id <account-id>

Reemplace los marcadores de posición siguientes:

  • Reemplace <account-console-url> por el valor https://accounts.azuredatabricks.net. (no lo establezca con el valor de la URL de su área de trabajo de Azure Databricks).
  • Reemplace <account-id> por el valor de su cuenta Azure Databricks. Consulta Localizar el identificador de la cuenta.

Nota:

Si dispone de un perfil de configuración de Azure Databricks con los campos host y account_id ya configurados, puede reemplazar --host <account-console-url> --account-id <account-id> por --profile <profile-name>.

Después de ejecutar el comando auth login, se le pedirá que guarde la URL de inicio de sesión de la cuenta y el Id. de la cuenta como un perfil de configuración de Azure Databricks. Cuando se le solicite, introduzca el nombre de un perfil nuevo o existente en su archivo .databrickscfg. Cualquier perfil existente con el mismo nombre en su archivo .databrickscfg se sobrescribe.

Si se le solicita, siga las instrucciones en pantalla de su navegador web para completar el inicio de sesión. A continuación, utilice un código Go similar a uno de los siguientes fragmentos:

Para autorización predeterminada mediante la autenticación de cliente unificada de Databricks:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...

Para la configuración directa (reemplace los marcadores de posición retrieve por su propia implementación para recuperar los valores de la consola o de otro almacén de configuración, como Azure KeyVault). En este caso, la dirección URL de la consola de la cuenta de Azure Databricks es https://accounts.azuredatabricks.net:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
  Host:      retrieveAccountConsoleUrl(),
  AccountId: retrieveAccountId(),
}))
// ...

Configuración de las operaciones a nivel de área de trabajo de Azure Databricks

Para las operaciones a nivel de área de trabajo, primero debe utilizar la CLI de Databricks para ejecutar el siguiente comando, antes de ejecutar su código Go. Este comando indica a la CLI de Databricks que genere y almacene en caché el token OAuth necesario en la ruta .databricks/token-cache.json dentro de la carpeta de inicio de su usuario en su máquina:

databricks auth login --host <worskpace-url>

Reemplace el marcador de posición <workspace-url> por la URL por área de trabajo de Azure Databricks de destino, por ejemplo https://adb-1234567890123456.7.azuredatabricks.net.

Nota:

Si dispone de un perfil de configuración de Azure Databricks con el campo host ya configurado, puede reemplazar --host <workspace-url> por --profile <profile-name>.

Una vez ejecutado el comando auth login, se le pedirá que guarde la URL del área de trabajo como un perfil de configuración de Azure Databricks. Cuando se le solicite, introduzca el nombre de un perfil nuevo o existente en su archivo .databrickscfg. Cualquier perfil existente con el mismo nombre en su archivo .databrickscfg se sobrescribe.

Si se le solicita, siga las instrucciones en pantalla de su navegador web para completar el inicio de sesión. A continuación, utilice un código Go similar a uno de los siguientes fragmentos:

Para la autenticación predeterminada:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...

Para la configuración directa (reemplace los marcadores de posición retrieve por su propia implementación para recuperar los valores de la consola o de otro almacén de configuración, como Azure KeyVault). En este caso, el host es la dirección URL de Azure Databricks por área de trabajo, por ejemplo https://adb-1234567890123456.7.azuredatabricks.net:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
  Host: retrieveWorkspaceUrl(),
}))
// ...

Para obtener más información sobre la autenticación con herramientas y SDK de Databricks que usan Go y que implementan la autenticación unificada de cliente de Databricks, consulte Autenticación del SDK de Databricks para Go con su cuenta de Azure Databricks o su área de trabajo.

Generar y usar tokens de acceso de forma manual para la autenticación OAuth de usuario a máquina (U2M)

Nota:

Esta sección se proporciona a los usuarios con herramientas o servicios de terceros que no funcionan con el estándar de autenticación unificada del cliente de Databricks.

Si por alguna razón debe generar, actualizar o usar tokens de acceso de forma manual de acceso Azure Databricks OAuth para la autenticación OAuth U2M, siga las instrucciones de esta sección.

Paso 1: generar un comprobador de código OAuth y un par de desafío de código

Para generar y usar tokens de acceso de forma manual para la autenticación U2M de OAuth, primero debe tener un comprobador de código OAuth y un desafío de código de OAuth derivado del comprobador de código. Utilice el desafío de código en el Paso 2 para generar un de autorización OAuth. Utilice el comprobador de código y el código de autorización en el Paso 3 para generar el token de acceso OAuth.

Nota:

Aunque técnicamente es posible utilizar cadenas de texto plano sin codificar para el comprobador de código y el desafío de código, Databricks recomienda encarecidamente seguir el estándar OAuth para generar el comprobador de código y los desafíos de código.

En concreto, el código comprobador debe ser una cadena criptográficamente aleatoria que utilice caracteres de los conjuntos A-Z, a-z, 0-9,y los caracteres de puntuación -._~ (guión, punto, guión bajo y tilde), de entre 43 y 128 caracteres de longitud. El desafío de código debe ser una cadena codificada en Base64-URL del hash SHA256 del comprobador de código. Para obtener más información, consulte Solicitud de autorización.

Puede ejecutar el siguiente script de Python para generar rápidamente un par único de verificador de código y desafío de código. Aunque puede reutilizar este par de verificador de código y desafío de código generado varias veces, Databricks recomienda que genere un nuevo par de verificador de código y desafío de código cada vez que genere manualmente tokens de acceso para la autenticación OAuth U2M.

import uuid, hashlib, base64

# Generate a UUID.
uuid1 = uuid.uuid4()

# Convert the UUID to a string.
uuid_str1 = str(uuid1).upper()

# Create the code verifier.
code_verifier = uuid_str1 + "-" + uuid_str1

# Create the code challenge based on the code verifier.
code_challenge = base64.urlsafe_b64encode(hashlib.sha256(code_verifier.encode()).digest()).decode('utf-8')

# Remove all padding from the code challenge.
code_challenge = code_challenge.replace('=', '')

# Print the code verifier and the code challenge.
# Use these in your calls to manually generate
# access tokens for OAuth U2M authentication.
print(f"code_verifier:  {code_verifier}")
print(f"code_challenge: {code_challenge}")

Paso 2: generar un código de autorización

Utilice un código de autorización OAuth para generar un token de acceso Azure Databricks OAuth. El código de autorización caduca inmediatamente después de utilizarlo para generar un token de acceso Azure Databricks OAuth. El alcance del código de autorización depende del nivel desde el que se genere. Puede generar un código de autorización en el nivel de cuenta de Azure Databricks o en el nivel de área de trabajo, como se indica a continuación:

Generar un código de autorización a nivel de cuenta

  1. Como administrador de la cuenta, inicie sesión en la consola de la cuenta.

  2. Haga clic en la flecha hacia abajo situada junto a su nombre de usuario en la esquina superior derecha.

  3. Copie su Id. de cuenta.

  4. En la barra de direcciones de su navegador, vaya a la siguiente URL. Se han agregado saltos de línea para mayor claridad. Su URL no debe contener estos saltos de línea.

    En la siguiente URL, reemplace lo siguiente:

    • Reemplace <account-id> con el Id. de cuenta que copió.
    • Reemplace <redirect-url> con una URL de redirección a su máquina local, por ejemplo http://localhost:8020.
    • Reemplace <state> con alguna cadena de texto plano que pueda utilizar para verificar la integridad del código de autorización.
    • Reemplace <code-challenge> con el desafío de código que generó en el Paso 1.
    https://accounts.azuredatabricks.net/oidc/accounts/<account-id>/v1/authorize
    ?client_id=databricks-cli
    &redirect_uri=<redirect-url>
    &response_type=code
    &state=<state>
    &code_challenge=<code-challenge>
    &code_challenge_method=S256
    &scope=all-apis+offline_access
    
  5. Cuando se le solicite, siga las instrucciones en pantalla para iniciar sesión en su cuenta de Azure Databricks.

  6. En la barra de direcciones de su navegador, copie el código de autorización. El código de autorización es la cadena completa de caracteres entre code= y el carácter & de la URL. Por ejemplo, el código de autorización en la siguiente URL es dcod...7fe6:

    http://localhost:8020/?code=dcod...7fe6&state=<state>
    

    Debe verificar la integridad de este código de autorización confirmando visualmente que el <state>valor de esta URL de respuesta coincide con el valor state que proporcionó en su URL de solicitud. Si los valores son diferentes, no debe utilizar este código de autorización, ya que podría estar en peligro.

  7. Vaya a Generar un token de acceso a nivel de cuenta.

Generar un código de autorización a nivel del área de trabajo

  1. En la barra de direcciones de su navegador, vaya a la siguiente URL. Se han agregado saltos de línea para mayor claridad. Su URL no debe contener estos saltos de línea.

    En la siguiente URL, reemplace lo siguiente:

    • Reemplace <databricks-instance> por el nombre de instancia de área de trabajo de Azure Databricks, por ejemplo adb-1234567890123456.7.azuredatabricks.net.
    • Reemplace <redirect-url> con una URL de redirección a su máquina local, por ejemplo http://localhost:8020.
    • Reemplace <state> con alguna cadena de texto plano que pueda utilizar para verificar la integridad del código de autorización.
    • Reemplace <code-challenge> con el desafío de código que generó en el Paso 1.
    https://<databricks-instance>/oidc/v1/authorize
    ?client_id=databricks-cli
    &redirect_uri=<redirect-url>
    &response_type=code
    &state=<state>
    &code_challenge=<code-challenge>
    &code_challenge_method=S256
    &scope=all-apis+offline_access
    
  2. Cuando se le solicite, siga las instrucciones en pantalla para iniciar sesión en su área de trabajo de Azure Databricks.

  3. En la barra de direcciones de su navegador, copie el código de autorización. El código de autorización es la cadena completa de caracteres entre code= y el carácter & de la URL. Por ejemplo, el código de autorización en la siguiente URL es dcod...7fe6:

    http://localhost:8020/?code=dcod...7fe6&state=<state>
    

    Debe verificar la integridad de este código de autorización confirmando visualmente que el <state>valor de esta URL de respuesta coincide con el valor state que proporcionó en su URL de solicitud. Si los valores son diferentes, no debe utilizar este código de autorización, ya que podría estar en peligro.

Paso 3: utilice el código de autorización para generar un token de acceso OAuth

Utilice el código de autorización OAuth del paso anterior para generar un token de acceso Azure Databricks OAuth, como se indica a continuación:

Generar un token de acceso a nivel de cuenta

  1. Utilice un cliente como curl junto con el código de autorización a nivel de cuenta para generar el token de acceso OAuth a nivel de cuenta. En la siguiente llamada curl, sustituya los siguientes marcadores de posición:

    • Reemplace <account-id> con el Id. de cuenta del paso 2.
    • Reemplace <redirect-url> con la URL de redirección del paso 2.
    • Reemplace <code-verifier> con el código verificador que generó en el Paso 1.
    • Reemplace <authorization-code> con el código de autorización a nivel de cuenta que generó en el Paso 2.
    curl --request POST \
    https://accounts.azuredatabricks.net/oidc/accounts/<account-id>/v1/token \
    --data "client_id=databricks-cli" \
    --data "grant_type=authorization_code" \
    --data "scope=all-apis offline_access" \
    --data "redirect_uri=<redirect-url>" \
    --data "code_verifier=<code-verifier>" \
    --data "code=<authorization-code>"
    
  2. En la respuesta, copie en la respuesta el token de acceso OAuth a nivel de cuenta. El token de acceso es la cadena completa de caracteres del objeto access_token. Por ejemplo, el token de acceso en la siguiente respuesta es eyJr...Dkag:

    {
      "access_token": "eyJr...Dkag",
      "refresh_token": "doau...f26e",
      "scope": "all-apis offline_access",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    Este token de acceso expira en una hora. Para generar un nuevo código de acceso, repita el procedimiento desde el paso 1.

  3. Vaya al Paso 4: llamar a una API REST de Databricks.

Generar un token de acceso a nivel de área de trabajo

  1. Utilice un cliente como curl junto con el código de autorización a nivel de área de trabajo para generar el token de acceso OAuth a nivel de área de trabajo. En la siguiente llamada curl, sustituya los siguientes marcadores de posición:

    • Reemplace <databricks-instance> por el nombre de instancia de área de trabajo de Azure Databricks, por ejemplo adb-1234567890123456.7.azuredatabricks.net.
    • Reemplace <redirect-url> con la URL de redirección del paso 2.
    • Reemplace <code-verifier> con el código verificador que generó en el Paso 1.
    • Reemplace <authorization-code> con el código de autorización a nivel de área de trabajo que generó en el Paso 2.
    curl --request POST \
    https://<databricks-instance>/oidc/v1/token \
    --data "client_id=databricks-cli" \
    --data "grant_type=authorization_code" \
    --data "scope=all-apis offline_access" \
    --data "redirect_uri=<redirect-url>" \
    --data "code_verifier=<code-verifier>" \
    --data "code=<authorization-code>"
    
  2. En la respuesta, copie el token de acceso OAuth a nivel de área de trabajo. El token de acceso es la cadena completa de caracteres del objeto access_token. Por ejemplo, el token de acceso en la siguiente respuesta es eyJr...Dkag:

    {
     "access_token": "eyJr...Dkag",
     "refresh_token": "doau...f26e",
     "scope": "all-apis offline_access",
     "token_type": "Bearer",
     "expires_in": 3600
    }
    

    Este token de acceso expira en una hora. Para generar un nuevo código de acceso, repita el procedimiento desde el paso 1.

Paso 4: llamar a una API REST de Databricks

Utilice el token de acceso OAuth a nivel de cuenta o a nivel de área de trabajo para autenticarse en las API REST a nivel de cuenta de Azure Databricks y en las API REST a nivel de área de trabajo, en función del alcance del token de acceso. Su cuenta de usuario de Azure Databricks debe ser un administrador de cuenta para llamar a las API REST a nivel de cuenta.

Ejemplo de solicitud de API REST a nivel de cuenta

Este ejemplo utiliza curl junto con Bearer la autenticación para obtener una lista de todos las áreas de trabajo asociadas a una cuenta.

  • Reemplace <oauth-access-token> con el token de acceso OAuth a nivel de cuenta.
  • Reemplace <account-id> por el id. de su cuenta.
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://accounts.azuredatabricks.net/api/2.0/accounts/<account-id>/workspaces"

Ejemplo de solicitud de API REST a nivel de área de trabajo

Este ejemplo utiliza curl junto con Bearer la autenticación para listar todos los clusters disponibles en el área de trabajo especificada.

  • Reemplace <oauth-access-token> con el token de acceso OAuth a nivel de cuenta o a nivel de área de trabajo.
  • Reemplace <databricks-instance> por el nombre de instancia de área de trabajo de Azure Databricks, por ejemplo adb-1234567890123456.7.azuredatabricks.net.
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://<databricks-instance>/api/2.0/clusters/list"