Obtén tokens de Microsoft Entra ID para las entidades de servicio
Importante
En esta sección se describe cómo obtener manualmente tokens de Microsoft Entra ID para entidades de servicio.
Las entidades de servicio administradas de Azure Databricks se administran directamente en Azure Databricks. Las entidades de servicio administradas de Microsoft Entra ID se administran en Microsoft Entra ID, lo que requiere permisos adicionales. Databricks recomienda usar entidades de servicio administradas de Azure Databricks para la mayoría de los casos de uso. Sin embargo, Databricks recomienda usar entidades de servicio administradas de Microsoft Entra ID en aquellos casos en los que deba autenticarse con Azure Databricks y otros recursos de Azure al mismo tiempo.
Para crear una entidad de servicio administrada de Azure Databricks en lugar de una entidad de servicio administrada de Microsoft Entra ID, consulte Administración de entidades de servicio.
Databricks no recomienda crear tokens de Microsoft Entra ID para entidades de servicio de Microsoft Entra ID manualmente. Esto se debe a que cada token de Microsoft Entra ID es de corta duración y, por lo general, caduca en una hora. Después de este tiempo, debe generar manualmente un token de reemplazo de Microsoft Entra ID. En su lugar, usa una de las herramientas participantes o SDK que implementan el estándar de la autenticación unificada del cliente de Databricks. Estas herramientas y SDK generan y reemplazan automáticamente los tokens de Microsoft Entra ID caducados y aprovechan los siguientes tipos de autenticación de Databricks:
- Autenticación de identidades administradas de Azure
- Autenticación de la entidad de servicio de MS Entra
- Autenticación de la CLI de Azure
Si no tiene una entidad de servicio, puede aprovisionar una siguiendo uno de estos conjuntos de instrucciones:
En este artículo se describe cómo una entidad de servicio definida en Microsoft Entra ID también puede actuar como una entidad de seguridad en la que se pueden aplicar directivas de autenticación y autorización en Azure Databricks. Las entidades de servicio de un área de trabajo de Azure Databricks pueden tener un control de acceso específico distinto del de los usuarios normales (entidades de seguridad de usuario).
Una entidad de servicio actúa como un rol de cliente y usa el flujo de credenciales de cliente de OAuth 2.0 para autorizar el acceso a los recursos de Azure Databricks.
Puede administrar entidades de servicio en Databricks o mediante el procedimiento siguiente de la Azure Portal.
También puede usar la Biblioteca de autenticación de Microsoft (MSAL) para obtener mediante programación un token de acceso de Microsoft Entra ID para un usuario en lugar de una entidad de servicio. Consulte Obtener tokens de Microsoft Entra ID para los usuarios mediante MSAL.
Aprovisionamiento de una entidad de servicio en Azure Portal
Inicie sesión en Azure Portal.
Nota:
El portal que se debe usar varía en función de si la aplicación Microsoft Entra ID se ejecuta en la nube pública de Azure o en una nube soberana o nacional. Para obtener más información, consulte Nubes nacionales.
Si tiene acceso a varios inquilinos, suscripciones o directorios, haga clic en el icono Directorios y suscripciones (directorio con filtro) del menú superior para cambiar al directorio en el que desea aprovisionar la entidad de servicio.
En Buscar recursos, servicios y documentos, busque y seleccione Microsoft Entra ID.
Haga clic en + Agregar y seleccione Registro de aplicaciones.
En Nombre, escriba un nombre de la aplicación.
En la sección Tipos de cuenta admitidos, seleccione Accounts in this organizational directory only (Single tenant) (Solo las cuentas de este directorio organizativo [inquilino único]).
Haga clic en Registrar.
En la página Información general de la página de la aplicación, en la sección Essentials, copie los valores siguientes:
- Id. de la aplicación (cliente)
- Id. de directorio (inquilino)
Para generar un secreto de cliente, en Administrar, haga clic en Certificados y secretos.
Nota:
Este secreto de cliente se usa para generar tokens de Microsoft Entra ID para autenticar entidades de servicio de Microsoft Entra ID con Azure Databricks. Para determinar si una herramienta de Azure Databricks o un SDK pueden usar tokens de Microsoft Entra ID, vea la documentación de la herramienta o el SDK.
En la pestaña Secretos de cliente, haga clic en Nuevo secreto de cliente.
En el panel Agregar un secreto de cliente, en Descripción, escriba una descripción para el secreto de cliente.
En Expira, seleccione un período de expiración para el secreto de cliente y, a continuación, haga clic en Agregar.
Copie y almacene el valor del secreto de cliente en un lugar seguro, ya que es su contraseña para la aplicación.
Aprovisionamiento de una entidad de servicio con la CLI de Azure
Obtención de un token de acceso de Microsoft Entra ID con la API REST de Plataforma de identidad de Microsoft
Importante
En esta sección se describe cómo obtener manualmente un token de Microsoft Entra ID para una entidad de servicio mediante la API REST de Plataforma de identidad de Microsoft.
Databricks no recomienda crear tokens de Microsoft Entra ID para entidades de servicio de Microsoft Entra ID manualmente. Esto se debe a que cada token de Microsoft Entra ID es de corta duración y, por lo general, caduca en una hora. Después de este tiempo, debe generar manualmente un token de reemplazo de Microsoft Entra ID. En su lugar, usa una de las herramientas participantes o SDK que implementan el estándar de la autenticación unificada del cliente de Databricks. Estas herramientas y SDK generan y reemplazan automáticamente los tokens de Microsoft Entra ID caducados y aprovechan los siguientes tipos de autenticación de Databricks:
Para acceder a la API de REST de Databricks con la entidad de servicio, obtenga y use un token de acceso de Microsoft Entra ID para la entidad de servicio. Para más información, consulte Primer caso: solicitud de token de acceso con un secreto compartido.
Sugerencia
También puede usar la CLI de Azure para obtener tokens de acceso de Microsoft Entra ID. Consulte Obtener un token de acceso de Microsoft Entra ID con la CLI de Azure.
Recopile la información siguiente:
Parámetro Descripción Tenant ID
El valor Directory (tenant) ID
para la aplicación relacionada registrada en Microsoft Entra ID.Client ID
El valor Application (client) ID
para la aplicación relacionada registrada en Microsoft Entra ID.Client secret
El valor Value
del secreto de cliente de la aplicación relacionada registrada en Microsoft Entra ID.Use la información anterior junto con curl para obtener el token de acceso de Microsoft Entra ID.
curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token \ -d 'client_id=<client-id>' \ -d 'grant_type=client_credentials' \ -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \ -d 'client_secret=<client-secret>'
Sustituya:
<tenant-id>
por el id. de inquilino de la aplicación registrada.<client-id>
por el id. de cliente de la aplicación registrada.<client-secret>
con el valor del secreto de cliente de la aplicación registrada.
No cambie el valor del parámetro
scope
. Representa el id. de programación para Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d
) junto con el ámbito predeterminado (/.default
, con codificación URL como%2f.default
).Por ejemplo:
curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/v2.0/token \ -d 'client_id=12a34b56-789c-0d12-e3fa-b456789c0123' \ -d 'grant_type=client_credentials' \ -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \ -d 'client_secret=abc1D~Ef...2ghIJKlM3'
El token de acceso de Microsoft Entra ID está en el valor
access_token
, en la salida de la llamada.
Obtener un token de acceso de Microsoft Entra ID con la CLI de Azure
Importante
En esta sección se describe cómo obtener manualmente un token de Microsoft Entra ID para una entidad de servicio mediante la CLI de Azure.
Databricks no recomienda crear tokens de Microsoft Entra ID para entidades de servicio de Microsoft Entra ID manualmente. Esto se debe a que cada token de Microsoft Entra ID es de corta duración y, por lo general, caduca en una hora. Después de este tiempo, debe generar manualmente un token de reemplazo de Microsoft Entra ID. En su lugar, usa una de las herramientas participantes o SDK que implementan el estándar de la autenticación unificada del cliente de Databricks. Estas herramientas y SDK generan y reemplazan automáticamente los tokens de Microsoft Entra ID caducados y aprovechan los siguientes tipos de autenticación de Databricks:
- Autenticación de identidades administradas de Azure
- Autenticación de la entidad de servicio de MS Entra
- Autenticación de la CLI de Azure
Para acceder a la API de REST de Databricks con la entidad de servicio, obtenga y use un token de acceso de Microsoft Entra ID para la entidad de servicio.
Recopile la información siguiente:
Parámetro Descripción Tenant ID
El valor Directory (tenant) ID
para la aplicación relacionada registrada en Microsoft Entra ID.Client ID
El valor Application (client) ID
para la aplicación relacionada registrada en Microsoft Entra ID.Client secret
El valor Value
del secreto de cliente de la aplicación relacionada registrada en Microsoft Entra ID.Obtenga el id. de suscripción de Azure correcto para la entidad de servicio de Microsoft Entra ID, si aún no lo conoce, mediante lo siguiente:
En la barra de navegación superior de su área de trabajo Azure Databricks, haga clic en su nombre de usuario y después en Azure Portal. En la página de recursos del área de trabajo de Azure Databricks que aparece, haga clic en Información general en la barra lateral. A continuación, busque el campo id. de suscripción, que contiene el id. de suscripción.
Use la CLI de Azure para ejecutar el comando az databricks workspace list, con las opciones
--query
y-o
o--output
, para restringir los resultados. Reemplaceadb-0000000000000000.0.azuredatabricks.net
por el nombre de la instancia del área de trabajo, sin incluirhttps://
. En este ejemplo,00000000-0000-0000-0000-000000000000
después de/subscriptions/
en la salida es el id. de suscripción.az databricks workspace list --query "[?workspaceUrl==\`adb-0000000000000000.0.azuredatabricks.net\`].{id:id}" -o tsv # /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Databricks/workspaces/my-ws
Si aparece el siguiente mensaje, significa que ha iniciado sesión en el inquilino equivocado:
The subscription of '<subscription-id>' doesn't exist in cloud 'AzureCloud'.
Para conectarse al inquilino correcto, debe ejecutar el comandoaz login
de nuevo, utilizando la opción-t
o--tenant
para especificar el id. de inquilino correcto.Puede obtener el id. de inquilino de un área de trabajo de Azure Databricks ejecutando el comando
curl -v <per-workspace-URL>/aad/auth
y buscando< location: https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000
en los resultados, donde00000000-0000-0000-0000-000000000000
es el id. del inquilino. Consulte también Obtención de identificadores de suscripción y de inquilino en Azure Portal.az login -t <tenant-id>
Después de tener el id. de inquilino de Azure, el id. de cliente, el secreto de cliente y el id. de suscripción correcto para la entidad de servicio de Microsoft Entra ID, inicie sesión en Azure mediante la CLI de Azure para ejecutar el comando az login. Use la opción
--service-principal
junto con la especificación de los valores de los parámetrosTenant ID
(Directory (tenant) ID
),Client ID
(Application (client) ID
) yClient secret
(Value
) para la aplicación relacionada registrada en Microsoft Entra ID.az login \ --service-principal \ -t <Tenant-ID> \ -u <Client-ID> \ -p <Client-secret>
Confirme que haya iniciado sesión en la suscripción correcta de la entidad de servicio de Microsoft Entra ID en la que inició sesión. Para ello, ejecute el comando az account set con la opción
-s
o--subscription
para especificar el identificador de suscripción correcto.az account set -s <subscription-id>
Genere el token de acceso de Microsoft Entra ID para la entidad de servicio de Microsoft Entra ID en la que ha iniciado sesión; para ello, ejecute el comando az account get-access-token. Use la opción
--resource
para especificar el identificador de recurso único para el servicio Azure Databricks, que es2ff814a6-3304-4ab8-85cb-cd0e6f879c1d
. Solo se puede mostrar el valor del token de Microsoft Entra ID en los resultados del comando, mediante las opciones--query
y-o
, o bien--output
.az account get-access-token \ --resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d \ --query "accessToken" \ -o tsv
Uso del token de acceso de Microsoft Entra ID de la entidad de servicio para acceder a la API de REST de Databricks
Importante
En esta sección se describe cómo usar curl
y el token de acceso de Microsoft Entra ID de una entidad de servicio para acceder a la API de REST de Databricks.
En lugar de curl
, use una de las herramientas participantes o SDK que implementan el estándar de la autenticación unificada del cliente de Databricks. Estas herramientas y SDK también generan y reemplazan automáticamente los tokens de Microsoft Entra ID caducados y aprovechan los siguientes tipos de autenticación de Databricks:
Una entidad de servicio que es un usuario de Databricks puede autenticarse en la API de REST de Databricks con tokens de Microsoft Entra ID.
Una entidad de seguridad de servicio también puede agregarse a sí misma como administrador de un área de trabajo si tiene el rol Colaborador o Propietario en el recurso del área de trabajo de destino en Azure. Si la entidad de servicio es Colaborador o Propietario en el área de trabajo de destino y quiere agregarla a un área de trabajo mediante su token de Microsoft Entra ID, vaya a Acceso de API de nivel de área de trabajo para entidades de servicio que no son usuarios de Azure Databricks.
De lo contrario, continúe a Acceso de API para entidades de servicio que son usuarios y administradores de Azure Databricks.
Acceso de API para entidades de servicio que son usuarios y administradores de Azure Databricks
Para completar este procedimiento, primero debe agregar la entidad de servicio a la cuenta o al área de trabajo de Azure Databricks. Puede agregar la entidad de servicio directamente a su cuenta, sin concederle acceso al área de trabajo, mediante la API SCIM (cuenta).
Puede agregar su entidad de servicio principal a un área de trabajo usando el punto de conexión API de entidades de servicio. Esto también agregará la entidad de servicio a la cuenta de Azure Databricks. Por ejemplo:
Mediante el uso de la CLI de Databricks versión 0.205 o superior (recomendado):
Agregar la entidad de servicio:
databricks service-principals create --application-id 12a34b56-789c-0d12-e3fa-b456789c0123 --display-name "My Service Principal" -p <profile-name-that-references-calling-users-access-token>
Actualizar los derechos del área de trabajo de la entidad de servicio:
databricks service-principals patch 1234567890123456 --json @update-service-principal.json -p <profile-name-that-references-access-token>
update-service-principal.json
:
{
"Operations": [
{
"op": "add",
"path": "entitlements",
"value": {
"value": "workspace-acccess",
"value": "allow-cluster-create",
"value": "databricks-sql-access"
}
}
],
"schema": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
]
}
Consulte Autenticación para la CLI de Databricks.
Mediante el uso de curl
:
curl -X POST \
-H 'Authorization: Bearer <access-token>' \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/preview/scim/v2/ServicePrincipals \
-H 'Content-type: application/scim+json' \
-d @create-service-principal.json
create-service-principal.json
:
{
"displayName": "My Service Principal",
"applicationId": "12a34b56-789c-0d12-e3fa-b456789c0123",
"entitlements": [
{
"value": "allow-cluster-create"
}
],
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal"
],
"active": true
}
Vaya directamente a Acceso de API de nivel de área de trabajo para entidades de servicio que no son usuarios de Azure Databricks si se cumple alguna de las siguientes condiciones:
- La API de REST de Azure Databricks a la que quiere llamar requiere acceso de administrador del área de trabajo, y la entidad de servicio es miembro del área de trabajo, pero no tiene actualmente acceso de administrador al área de trabajo.
- La entidad de servicio aún no se ha agregado al área de trabajo de Azure Databricks de destino.
Recopile la información siguiente.
Parámetro Descripción Token de acceso de Microsoft Entra ID El token de acceso de Microsoft Entra ID que se devolvió desde la solicitud en Obtención de un token de acceso de Microsoft Entra ID con la API de REST de la Plataforma de identidad de Microsoft o en Obtención de un token de acceso de Microsoft Entra ID con la CLI de Azure. Use el token de acceso de Microsoft Entra ID junto con
curl
para llamar a la API de REST de Databricks. Por ejemplo:Mediante el uso de la CLI de Databricks versión 0.205 o superior (recomendado):
databricks clusters list -p <profile-name-that-references-azure-ad-access-token>
Consulte Autenticación para la CLI de Databricks.
Mediante el uso de
curl
:curl -X GET \ -H 'Authorization: Bearer <access-token>' \ https://<databricks-instance>/api/2.0/clusters/list
Sustituya:
<access-token>
con un token de acceso de Microsoft Entra ID.<databricks-instance>
con la dirección URL por área de trabajo de la implementación de Azure Databricks.GET
y/api/2.0/clusters/list
con la operación HTTP y el punto de conexión adecuados para la API de REST de Databricks de destino.
Por ejemplo:
curl -X GET \ -H 'Authorization: Bearer <access-token>' \ https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/list
Acceso de API de nivel de área de trabajo para entidades de servicio que no son usuarios de Azure Databricks
Siga este procedimiento si se cumple alguna de las siguientes condiciones:
- La API de REST de Azure Databricks a la que quiere llamar requiere acceso de administrador del área de trabajo, y la entidad de servicio es miembro del área de trabajo, pero no tiene actualmente acceso de administrador al área de trabajo.
- La entidad de servicio aún no se ha agregado al área de trabajo de Azure Databricks de destino.
Requisitos:
- La entidad de servicio requiere el rol Colaborador o Propietario en el recurso del área de trabajo de destino en Azure.
Recopile la información siguiente:
Parámetro Descripción Id. de inquilino ElId. de directorio (inquilino) de la aplicación registrada en Microsoft Entra ID en Aprovisionamiento de una entidad de servicio en Azure Portal. Id de cliente El Id. de aplicación (cliente) para la aplicación relacionada registrada en Microsoft Entra ID. Secreto de cliente El Valor del secreto de cliente para la aplicación registrada en Microsoft Entra ID, que creó en Aprovisionamiento de una entidad de servicio en Azure Portal. Token de acceso de Microsoft Entra ID El token de acceso de Microsoft Entra ID que se devolvió desde la solicitud en Obtención de un token de acceso de Microsoft Entra ID con la API de REST de la Plataforma de identidad de Microsoft o en Obtención de un token de acceso de Microsoft Entra ID con la CLI de Azure. Id. de suscripción El identificador (no el nombre) de la suscripción de Azure asociada al área de trabajo de Azure Databricks de destino. Para obtener este identificador y la información siguiente, consulte Apertura de recursos. Para abrir el recurso de destino, puede buscar en el tipo de servicio Azure Databricks y en cualquier otra información de Azure que conozca sobre el área de trabajo de Azure Databricks de destino. Definición de un nombre de grupo de recursos Nombre del grupo de recursos de Azure asociado al área de trabajo de Azure Databricks de destino. Nombre del área de trabajo Nombre del área de trabajo de Azure Databricks de destino en Azure. Use parte de la información anterior junto con
curl
para obtener un token de acceso de punto de conexión de administración de Microsoft Entra ID.curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ https://login.microsoftonline.com/<tenant-id>/oauth2/token \ -d 'client_id=<client-id>' \ -d 'grant_type=client_credentials' \ -d 'resource=https%3A%2F%2Fmanagement.core.windows.net%2F' \ -d 'client_secret=<client-secret>'
Sustituya:
<tenant-id>
por el id. de inquilino de la aplicación registrada.<client-id>
por el id. de cliente de la aplicación registrada.<client-secret>
con el valor del secreto de cliente de la aplicación registrada.
No cambie el valor del parámetro
resource
. Representa el punto de conexión de administración de Microsoft Entra ID (https://management.core.windows.net/
, codificado como URL comohttps%3A%2F%2Fmanagement.core.windows.net%2F
).Por ejemplo:
curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/token \ -d 'client_id=12a34b56-789c-0d12-e3fa-b456789c0123' \ -d 'grant_type=client_credentials' \ -d 'resource=https%3A%2F%2Fmanagement.core.windows.net%2F' \ -d 'client_secret=abc1D~Ef...2ghIJKlM3'
El token de acceso de punto de conexión de administración de Microsoft Entra ID está en el valor
access_token
en la salida de la llamada.Use el token de acceso de punto de conexión de administración de Microsoft Entra ID junto con el resto de la información anterior y
curl
para llamar a la API de REST de Databricks; por ejemplo:curl -X GET \ -H 'Authorization: Bearer <access-token>' \ -H 'X-Databricks-Azure-SP-Management-Token: <management-access-token>' \ -H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Databricks/workspaces/<workspace-name>' \ https://<databricks-instance>/api/2.0/clusters/list
Sustituya:
<access-token>
con un token de acceso de Microsoft Entra ID.<management-access-token>
con el token de acceso de punto de conexión de administración de Microsoft Entra ID.<subscription-id>
con el identificador de la suscripción asociada al área de trabajo de Azure Databricks de destino.<resource-group-name>
con el nombre del grupo de recursos asociado al área de trabajo de Azure Databricks de destino.<workspace-name>
con el nombre del área de trabajo de Azure Databricks de destino.<databricks-instance>
con la dirección URL por área de trabajo de la implementación de Azure Databricks.GET
y/api/2.0/clusters/list
con la operación HTTP y el punto de conexión adecuados para la API de REST de Databricks de destino.
Por ejemplo:
curl -X GET \ -H 'Authorization:Bearer <access-token>' \ -H 'X-Databricks-Azure-SP-Management-Token: abC1dE...ghIj23kl' \ -H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/12a345...bcd6789e/resourceGroups/my-resource-group/providers/Microsoft.Databricks/workspaces/my-workspace' \ https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/list
Tras autenticarse en el área de trabajo, la entidad de servicio se convierte en administrador del área de trabajo de Azure Databricks y ya no necesita el rol Colaborador o Propietario para acceder al área de trabajo.