Compartir a través de


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:

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

  1. 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.

  2. 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.

  3. En Buscar recursos, servicios y documentos, busque y seleccione Microsoft Entra ID.

  4. Haga clic en + Agregar y seleccione Registro de aplicaciones.

  5. En Nombre, escriba un nombre de la aplicación.

  6. 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]).

  7. Haga clic en Registrar.

  8. 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)
  9. 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.

  10. En la pestaña Secretos de cliente, haga clic en Nuevo secreto de cliente.

    Nuevo secreto de cliente

  11. En el panel Agregar un secreto de cliente, en Descripción, escriba una descripción para el secreto de cliente.

  12. En Expira, seleccione un período de expiración para el secreto de cliente y, a continuación, haga clic en Agregar.

  13. 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

Consulte Creación de una entidad de servicio de Microsoft Entra ID (anteriormente Azure Active Directory) 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.

  1. 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.
  2. 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:

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.

  1. 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.
  2. 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. Reemplace adb-0000000000000000.0.azuredatabricks.net por el nombre de la instancia del área de trabajo, sin incluir https://. 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 comando az 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, donde 00000000-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>
      
  3. 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ámetros Tenant ID (Directory (tenant) ID), Client ID (Application (client) ID) y Client 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>
    
  4. 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>
    
  5. 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 es 2ff814a6-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.
  1. 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.
  2. 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.
  1. 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.
  2. 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 como https%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.

  3. 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.