Condividi tramite


Ottenere i token ID di Microsoft Entra per i principali di servizio

Importante

Questa sezione descrive come ottenere manualmente i token ID Entra di Microsoft per le entità servizio.

Le entità servizio gestite di Azure Databricks vengono gestite direttamente in Azure Databricks. I principali di servizio gestiti di Microsoft Entra ID vengono gestiti in Microsoft Entra ID, il che richiede autorizzazioni aggiuntive. Databricks consiglia di usare le entità servizio gestite di Azure Databricks per la maggior parte dei casi d'uso. Tuttavia, Databricks consiglia di usare i principali di servizio gestiti da Microsoft Entra ID nei casi in cui è necessario eseguire l'autenticazione con Azure Databricks e altre risorse di Azure contemporaneamente.

Per creare un principale di servizio gestito di Azure Databricks anziché un principale di servizio gestito di Microsoft Entra ID, vedere Entità di servizio.

Databricks non raccomanda di creare manualmente i token Microsoft Entra ID per i principali del servizio Microsoft Entra ID. Ciò è dovuto al fatto che ogni token ID di Microsoft Entra è di breve durata, in genere scaduto entro un'ora. Dopo questa volta, è necessario generare manualmente un token ID Microsoft Entra sostitutivo. Usa invece uno degli strumenti o degli SDK partecipanti che implementano lo standard di autenticazione unificata del client Databricks. Questi strumenti e SDK generano e sostituiscono automaticamente i token ID Microsoft Entra scaduti, sfruttando i tipi di autenticazione di Databricks seguenti:

Se non si dispone di un'entità servizio, è possibile effettuarne il provisioning seguendo uno di questi set di istruzioni:

Questo articolo descrive come un'entità servizio definita in Microsoft Entra ID può fungere anche da entità per cui è possibile applicare i criteri di autenticazione e autorizzazione in Azure Databricks. Le entità servizio in un'area di lavoro Azure Databricks possono avere un controllo di accesso diverso e più specifico rispetto agli utenti normali (entità utente).

Un principale del servizio funge da ruolo di client e usa il flusso di credenziali client OAuth 2.0 per autorizzare l'accesso alle risorse di Azure Databricks.

È possibile gestire le entità servizio in Databricks o usando la procedura seguente della portale di Azure.

È anche possibile usare Microsoft Authentication Library (MSAL) per ottenere a livello di codice un token di accesso di Microsoft Entra ID per un utente anziché un'entità servizio. Consulta Ottieni i token ID di Microsoft Entra per gli utenti tramite MSAL.

Effettuare il provisioning di un'entità servizio in portale di Azure

  1. Accedi al portale di Azure.

    Annotazioni

    Il portale da usare è diverso a seconda che l'applicazione di Microsoft Entra ID venga eseguita nel cloud pubblico di Azure o in un cloud nazionale o sovrano. Per altre informazioni, vedere Cloud nazionali.

  2. Se hai accesso a più locatari, sottoscrizioni o directory, fai clic sull'icona Directory + Sottoscrizioni (directory con filtro) nel menu in alto per passare alla directory in cui desideri effettuare il provisioning del principale del servizio.

  3. In Cerca risorse, servizi e documenti cercare e selezionare Microsoft Entra ID.

  4. Fare clic su + Aggiungi e selezionare Registrazione app.

  5. In Nome immettere un nome per l'applicazione.

  6. Nella sezione Tipi di account supportati, seleziona l'opzione Solo account in questa directory organizzativa (tenant singolo).

  7. Fare clic su Registra.

  8. Nella pagina dell'applicazione Panoramica, nella sezione Essenziali, copiare i valori seguenti:

    • ID client dell'applicazione
    • ID della directory (tenant)
  9. Per generare un segreto client, in Gestisci fare clic su Certificati e segreti.

    Annotazioni

    Questo segreto client viene usato per generare token Microsoft Entra ID per l'autenticazione delle entità servizio Microsoft Entra ID con Azure Databricks. Per determinare se uno strumento o un SDK di Azure Databricks può usare i token ID di Microsoft Entra, vedere la documentazione dello strumento o dell'SDK.

  10. Nella scheda Segreti client selezionare Nuovo segreto client.

    Nuovo segreto del client

  11. Nel riquadro Aggiungi un segreto client, alla voce Descrizione immettere una descrizione del segreto client.

  12. Per Scadenza selezionare un periodo di scadenza per il segreto client e quindi fare clic su Aggiungi.

  13. Copiare e archiviare il valore del segreto client in un luogo sicuro, perché questo segreto client è la password per l'applicazione.

Effettuare il provisioning di un'entità servizio con l'interfaccia della riga di comando di Azure

Vedi Creare un'entità principale Microsoft Entra ID (precedentemente Azure Active Directory) con l'Azure CLI.

Ottenere un token di accesso di Microsoft Entra ID con l'API REST di Microsoft Identity Platform

Importante

Questa sezione descrive come ottenere manualmente un token ID Entra di Microsoft per un'entità servizio usando l'API REST di Microsoft Identity Platform.

Databricks non raccomanda di creare manualmente i token Microsoft Entra ID per i principali del servizio Microsoft Entra ID. Ciò è dovuto al fatto che ogni token ID di Microsoft Entra è di breve durata, in genere scaduto entro un'ora. Dopo questa volta, è necessario generare manualmente un token ID Microsoft Entra sostitutivo. Usa invece uno degli strumenti o degli SDK partecipanti che implementano lo standard di autenticazione unificata del client Databricks. Questi strumenti e SDK generano e sostituiscono automaticamente i token ID Microsoft Entra scaduti, sfruttando i tipi di autenticazione di Databricks seguenti:

Per accedere all'API REST di Databricks con l'entità servizio, si ottiene e quindi si usa un token di accesso MICROSOFT Entra ID per l'entità servizio. Per altre informazioni, vedere Primo caso: Richiesta di token di accesso con un segreto condiviso.

Suggerimento

È anche possibile usare l'interfaccia della riga di comando di Azure per ottenere il token di accesso microsoft Entra ID. Consulta Ottenere un token di accesso Microsoft Entra ID con l'interfaccia delle righe di comando di Azure.

  1. Raccogliere le seguenti informazioni:

    Parametro Descrizione
    Tenant ID Il Directory (tenant) ID per l'applicazione correlata registrata in Microsoft Entra ID.
    Client ID Il Application (client) ID per l'applicazione correlata registrata in Microsoft Entra ID.
    Client secret Il valore Value del segreto client per l'applicazione correlata registrata in Microsoft Entra ID.
  2. Usare le informazioni precedenti insieme a curl per ottenere il token di accesso 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>'
    

    Sostituire:

    • <tenant-id> con l'ID tenant dell'applicazione registrata.
    • <client-id> con l'ID client dell'applicazione registrata.
    • <client-secret> con il valore del segreto client dell'applicazione registrata.

    Non modificare il valore del scope parametro. Rappresenta l'ID programmatico per Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) insieme all'ambito predefinito (/.defaultcon codifica URL come %2f.default).

    Per esempio:

    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'
    

    Il token di accesso microsoft Entra ID è nel access_token valore all'interno dell'output della chiamata.

Ottenere un token di accesso di Microsoft Entra ID con l'interfaccia della riga di comando di Azure

Importante

Questa sezione descrive come ottenere manualmente un token ID Entra di Microsoft per un'entità servizio usando l'interfaccia della riga di comando di Azure.

Databricks non raccomanda di creare manualmente i token Microsoft Entra ID per i principali del servizio Microsoft Entra ID. Ciò è dovuto al fatto che ogni token ID di Microsoft Entra è di breve durata, in genere scaduto entro un'ora. Dopo questa volta, è necessario generare manualmente un token ID Microsoft Entra sostitutivo. Usa invece uno degli strumenti o degli SDK partecipanti che implementano lo standard di autenticazione unificata del client Databricks. Questi strumenti e SDK generano e sostituiscono automaticamente i token ID Microsoft Entra scaduti, sfruttando i tipi di autenticazione di Databricks seguenti:

Per accedere all'API REST di Databricks con l'entità servizio, si ottiene e quindi si usa un token di accesso MICROSOFT Entra ID per l'entità servizio.

  1. Raccogliere le seguenti informazioni:

    Parametro Descrizione
    Tenant ID Il Directory (tenant) ID per l'applicazione correlata registrata in Microsoft Entra ID.
    Client ID Il Application (client) ID per l'applicazione correlata registrata in Microsoft Entra ID.
    Client secret Il valore Value del segreto client per l'applicazione correlata registrata in Microsoft Entra ID.
  2. Ottenere l'ID sottoscrizione di Azure corretto per il principale del servizio Microsoft Entra ID, se non si conosce già questo ID, eseguendo una delle seguenti operazioni:

    • Nella barra di spostamento superiore dell'area di lavoro di Azure Databricks fare clic sul nome utente e quindi su Portale di Azure. Nella pagina della risorsa dell'area di lavoro di Azure Databricks visualizzata, fare clic su Panoramica nella barra laterale. Cerca quindi il campo ID abbonamento, che contiene l'ID dell'abbonamento.

    • Usare Azure CLI per eseguire il comando az databricks workspace list, utilizzando le opzioni --query, -o o --output per limitare i risultati. Sostituire adb-0000000000000000.0.azuredatabricks.net con il nome dell'istanza dell'area di lavoro, senza includere il https://. In questo esempio, il 00000000-0000-0000-0000-000000000000 dopo /subscriptions/ nell'output è l'ID dell'abbonamento.

      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
      

      Se viene visualizzato il seguente messaggio, si è connessi al tenant errato: The subscription of '<subscription-id>' doesn't exist in cloud 'AzureCloud'. Per accedere al tenant corretto, è necessario eseguire di nuovo il comando az login, usando l'opzione -t o --tenant per specificare l'ID tenant corretto.

      È possibile ottenere l'ID tenant per un'area di lavoro di Azure Databricks eseguendo il comando curl -v <per-workspace-URL>/aad/auth e cercando nell'output < location: https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000, dove 00000000-0000-0000-0000-000000000000 è l'ID tenant. Consultare anche Ottenere gli ID abbonamento e tenant nel portale di Azure.

      az login -t <tenant-id>
      
  3. Dopo aver ottenuto l'ID tenant di Azure corretto, l'ID client, il segreto client e l'ID sottoscrizione per l'entità servizio Microsoft Entra ID, accedi ad Azure utilizzando l'Azure CLI per eseguire il comando az login. Usare l'opzione --service-principal insieme alla specifica dei valori per i parametri di Tenant ID (Directory (tenant) ID), Client ID (Application (client) ID) e Client secret (Value) per l'applicazione correlata registrata in Microsoft Entra ID.

    az login \
    --service-principal \
    -t <Tenant-ID> \
    -u <Client-ID> \
    -p <Client-secret>
    
  4. Conferma di aver effettuato l'accesso alla sottoscrizione corretta per il principale del servizio Microsoft Entra ID a cui hai effettuato l'accesso. A tale scopo, eseguire il comando az account set usando l'opzione -s o --subscription per specificare l'ID sottoscrizione corretto.

    az account set -s <subscription-id>
    
  5. Generare il token di accesso Microsoft Entra ID per il service principal di Microsoft Entra ID autenticato eseguendo il comando az account get-access-token. Usare l'opzione --resource per specificare l'ID risorsa univoco per il servizio Azure Databricks, che è 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d. È possibile visualizzare solo il valore del token MICROSOFT Entra ID nell'output del comando usando le --query opzioni e -o o --output .

    az account get-access-token \
    --resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d \
    --query "accessToken" \
    -o tsv
    

Usare il token di accesso dell'entità servizio Microsoft Entra ID per accedere all'API REST di Databricks

Importante

Questa sezione descrive come usare curl e il token di accesso Microsoft Entra ID di un'entità servizio per accedere all'API REST di Databricks.

Invece di curl, è possibile usare uno degli strumenti o degli SDK partecipanti che implementano lo standard di autenticazione unificata del client Databricks . Questi strumenti e SDK generano e sostituiscono automaticamente i token ID Microsoft Entra scaduti, sfruttando i tipi di autenticazione di Databricks seguenti:

Un'entità servizio che è un utente di Databricks può eseguire l'autenticazione all'API REST di Databricks con token ID Microsoft Entra.

Un'entità servizio può anche aggiungersi come amministratore dell'area di lavoro a un'area di lavoro se ha il ruolo Collaboratore o Proprietario nella risorsa dell'area di lavoro di destinazione in Azure. Se l'entità servizio è un Collaboratore o un Proprietario nell'area di lavoro di destinazione e si vuole aggiungerla a un'area di lavoro usando il token ID Microsoft Entra, vai a Accesso API a livello di area di lavoro per le entità servizio che non sono utenti di Azure Databricks.

In caso contrario, continuare ad accedere alle API per le entità servizio che sono utenti e amministratori di Azure Databricks.

Accesso api per le entità servizio che sono utenti e amministratori di Azure Databricks

Per completare questa procedura, è prima necessario aggiungere l'entità servizio all'account o all'area di lavoro di Azure Databricks. È possibile aggiungere l'entità servizio direttamente all'account, senza concedere l'accesso all'area di lavoro, usando l'API SCIM (Account).

È possibile aggiungere l'entità servizio a un'area di lavoro usando l'endpoint DELL'API Entità servizio. Verrà aggiunta anche l'entità servizio all'account Azure Databricks. Per esempio:

Usando l'interfaccia della riga di comando di Databricks versione 0.205 o successiva (scelta consigliata):

Aggiungere l'entità servizio:

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>

Aggiorna le autorizzazioni dell'area di lavoro del principale del servizio.

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"]
}

Consultare Autenticazione per il Databricks CLI.

curlUsando :

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
}

Passare direttamente all'accesso API a livello di area di lavoro per i principali del servizio che non sono utenti di Azure Databricks se una delle condizioni seguenti è vera:

  • L'API REST di Azure Databricks che si vuole chiamare richiede l'accesso amministratore dell'area di lavoro e l'entità servizio è membro dell'area di lavoro, ma attualmente non ha accesso amministratore all'area di lavoro.
  • L'entità servizio non è già stata aggiunta all'area di lavoro di Azure Databricks di destinazione.
  1. Raccogliere le seguenti informazioni.

    Parametro Descrizione
    Token di accesso di Microsoft Entra ID Token di accesso di Microsoft Entra ID restituito dalla richiesta in Ottenere un token di accesso di Microsoft Entra ID con l'API REST di Microsoft Identity Platform o Ottenere un token di accesso di Microsoft Entra ID con l'interfaccia a riga di comando di Azure.
  2. Usare il token di accesso microsoft Entra ID insieme curl a per chiamare l'API REST di Databricks. Per esempio:

    Usando l'interfaccia della riga di comando di Databricks versione 0.205 o successiva (scelta consigliata):

    databricks clusters list -p <profile-name-that-references-azure-ad-access-token>
    

    Consultare Autenticazione per il Databricks CLI.

    curlUsando :

    curl -X GET \
    -H 'Authorization: Bearer <access-token>' \
    https://<databricks-instance>/api/2.0/clusters/list
    

    Sostituire:

    • <access-token> con il token di accesso Microsoft Entra ID.
    • <databricks-instance>con l'URL per area di lavoro della distribuzione di Azure Databricks.
    • GET e /api/2.0/clusters/list con l'operazione HTTP e l'endpoint appropriati per l'API REST di Databricks di destinazione.

    Per esempio:

    curl -X GET \
    -H 'Authorization: Bearer <access-token>' \
    https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/list
    

Accesso api a livello di area di lavoro per le entità servizio che non sono utenti di Azure Databricks

Seguire questa procedura se una delle condizioni seguenti è vera:

  • L'API REST di Azure Databricks che si vuole chiamare richiede l'accesso amministratore dell'area di lavoro e l'entità servizio è membro dell'area di lavoro, ma attualmente non ha accesso amministratore all'area di lavoro.
  • L'entità servizio non è già stata aggiunta all'area di lavoro di Azure Databricks di destinazione.
  • Il principale del servizio sta creando o aggiornando una credenziale di archiviazione o di servizio per il catalogo Unity.

Requisiti:

  • L'entità servizio richiede il ruolo Collaboratore o Proprietario nella risorsa dell'area di lavoro di destinazione in Azure.
  1. Raccogliere le seguenti informazioni:

    Parametro Descrizione
    ID del locatario ID directory (tenant) per l'applicazione correlata registrata in Microsoft Entra ID in Effettuare il provisioning di un'entità servizio nel portale di Azure.
    ID cliente ID dell'applicazione (client) dell'applicazione correlata registrata in Microsoft Entra ID.
    Segreto del cliente Valore del segreto client per l'applicazione correlata registrata in Microsoft Entra ID, che hai creato in Configurare un'entità servizio nel portale di Azure.
    Token di accesso di Microsoft Entra ID Token di accesso di Microsoft Entra ID restituito dalla richiesta in Ottenere un token di accesso di Microsoft Entra ID con l'API REST di Microsoft Identity Platform o Ottenere un token di accesso di Microsoft Entra ID con l'interfaccia a riga di comando di Azure.
    ID sottoscrizione ID (non il nome) della sottoscrizione di Azure associata all'area di lavoro di Azure Databricks di destinazione. Per ottenere questo e le informazioni seguenti, vedere Aprire le risorse. Per aprire la risorsa di destinazione, è possibile cercare il tipo di servizio Azure Databricks e tutte le altre informazioni in Azure che si conoscono sull'area di lavoro di Azure Databricks di destinazione.
    Nome del gruppo di risorse Nome del gruppo di risorse di Azure associato all'area di lavoro di Azure Databricks di destinazione.
    Nome dell'area di lavoro Nome in Azure dell'area di lavoro di Azure Databricks di destinazione.
  2. Usare alcune delle informazioni precedenti insieme curl a per ottenere un token di accesso all'endpoint di gestione di 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>'
    

    Sostituire:

    • <tenant-id> con l'ID tenant dell'applicazione registrata.
    • <client-id> con l'ID client dell'applicazione registrata.
    • <client-secret> con il valore del segreto client dell'applicazione registrata.

    Non modificare il valore del resource parametro. Rappresenta l'endpoint di gestione di Microsoft Entra ID (https://management.core.windows.net/con codifica URL come https%3A%2F%2Fmanagement.core.windows.net%2F).

    Per esempio:

    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'
    

    Il token di accesso all'endpoint di gestione di Microsoft Entra ID è nel access_token valore all'interno dell'output della chiamata.

  3. Usare il token di accesso dell'endpoint di gestione di Microsoft Entra ID insieme al resto delle informazioni precedenti e curl per chiamare l'API REST di Databricks, ad esempio:

     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
    

    Sostituire:

    • <access-token> con il token di accesso Microsoft Entra ID.

      • <management-access-token> con il token di accesso dell'endpoint di gestione di Microsoft Entra ID.
      • <subscription-id> con l'ID della sottoscrizione associata all'area di lavoro di Azure Databricks di destinazione.
      • <resource-group-name> con il nome del gruppo di risorse associato all'area di lavoro di Azure Databricks di destinazione.
      • <workspace-name> con il nome dell'area di lavoro di Azure Databricks di destinazione.
      • <databricks-instance>con l'URL per area di lavoro della distribuzione di Azure Databricks.
      • GET e /api/2.0/clusters/list con l'operazione HTTP e l'endpoint appropriati per l'API REST di Databricks di destinazione.

      Per esempio:

      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
      

    Dopo l'autenticazione nell'area di lavoro, l'entità servizio diventa un amministratore dell'area di lavoro di Azure Databricks e non richiede più il ruolo Collaboratore o Proprietario per accedere all'area di lavoro.