Condividi tramite


Ottenere i token ID Di Microsoft Entra per le entità 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. Le entità servizio gestite da Microsoft Entra ID vengono gestite in Microsoft Entra ID, 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 le entità servizio gestite con ID Microsoft Entra nei casi in cui è necessario eseguire l'autenticazione con Azure Databricks e altre risorse di Azure contemporaneamente.

Per creare un'entità servizio gestita di Azure Databricks anziché un'entità servizio gestita con ID Microsoft Entra, vedere Gestire le entità servizio.

Databricks non consiglia di creare manualmente token ID Microsoft Entra per le entità 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. Usare 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'entità servizio funge da ruolo 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. Vedere Ottenere i token ID Di Microsoft Entra per gli utenti tramite MSAL.

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

  1. Accedere al portale di Azure.

    Nota

    Il portale da usare è diverso a seconda che l'applicazione 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 si ha accesso a più tenant, sottoscrizioni o directory, fare clic sull'icona Directory e sottoscrizioni (directory con filtro) nel menu in alto per passare alla directory in cui si vuole effettuare il provisioning dell'entità 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 selezionare Account solo in questa directory organizzativa (tenant singolo).

  7. Fare clic su Registra.

  8. Nella pagina Panoramica della pagina dell'applicazione copiare i valori seguenti nella sezione Informazioni di base:

    • ID applicazione (client)
    • ID della directory (tenant)

    Panoramica dell'app registrata in Azure

  9. Per generare un segreto client, in Gestisci fare clic su Certificati e segreti.

    Nota

    Questo segreto client viene usato per generare token ID Microsoft Entra 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 fare clic su Nuovo segreto client.

    Nuovo segreto client

  11. Nel riquadro Aggiungi un segreto client immettere una descrizione per il 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

Vedere Creare un'entità servizio Microsoft Entra ID (in precedenza Azure Active Directory) con l'interfaccia della riga di comando di Azure.

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 consiglia di creare manualmente token ID Microsoft Entra per le entità 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. Usare 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. Vedere Ottenere un token di accesso microsoft Entra ID con l'interfaccia della riga di comando di Azure.

  1. Raccogliere le seguenti informazioni:

    Parametro Descrizione
    Tenant ID Oggetto Directory (tenant) ID per l'applicazione correlata registrata in Microsoft Entra ID.
    Client ID Oggetto Application (client) ID per l'applicazione correlata registrata in Microsoft Entra ID.
    Client secret Oggetto 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>'
    

    Replace:

    • <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).

    Ad 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 consiglia di creare manualmente token ID Microsoft Entra per le entità 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. Usare 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 Oggetto Directory (tenant) ID per l'applicazione correlata registrata in Microsoft Entra ID.
    Client ID Oggetto Application (client) ID per l'applicazione correlata registrata in Microsoft Entra ID.
    Client secret Oggetto Value del segreto client per l'applicazione correlata registrata in Microsoft Entra ID.
  2. Ottenere l'ID sottoscrizione di Azure corretto per l'entità servizio Microsoft Entra ID, se non si conosce già questo ID, eseguendo una delle operazioni seguenti:

    • 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. Cercare quindi il campo ID sottoscrizione, che contiene l'ID sottoscrizione.

    • Usare l'interfaccia della riga di comando di Azure per eseguire il comando az databricks workspace list usando le --query opzioni e -o e --output per limitare i risultati. Sostituire adb-0000000000000000.0.azuredatabricks.net con il nome dell'istanza dell'area di lavoro, non incluso .https:// In questo esempio, il 00000000-0000-0000-0000-000000000000 valore after /subscriptions/ nell'output è l'ID sottoscrizione.

      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 messaggio seguente, 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 az login comando 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. Vedere anche Ottenere gli ID sottoscrizione 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, accedere ad Azure usando l'interfaccia della riga di comando di Azure 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. Verificare di aver eseguito l'accesso alla sottoscrizione corretta per l'entità servizio Microsoft Entra ID connesso. 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 l'entità servizio Microsoft Entra ID connesso eseguendo il comando az account get-access-token . Usare l'opzione --resource per specificare l'ID risorsa univoco per il servizio Azure Databricks, ovvero 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, passare 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. Ad 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>

Aggiornare i diritti dell'area di lavoro dell'entità 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"
  ]
}

Vedere Autenticazione per l'interfaccia della riga di comando di Databricks.

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 le entità 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 microsoft Entra ID con l'API REST di Microsoft Identity Platform o Ottenere un token di accesso Microsoft Entra ID con l'interfaccia della riga di comando di Azure.
  2. Usare il token di accesso microsoft Entra ID insieme curl a per chiamare l'API REST di Databricks. Ad 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>
    

    Vedere Autenticazione per l'interfaccia della riga di comando di Databricks.

    curlUsando :

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

    Replace:

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

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

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 tenant ID directory (tenant) per l'applicazione correlata registrata in Microsoft Entra ID in Effettuare il provisioning di un'entità servizio in portale di Azure.
    ID client ID applicazione (client) per l'applicazione correlata registrata in Microsoft Entra ID.
    Segreto client Valore del segreto client per l'applicazione correlata registrata in Microsoft Entra ID, creato in Effettuare il provisioning di un'entità servizio in 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 microsoft Entra ID con l'API REST di Microsoft Identity Platform o Ottenere un token di accesso Microsoft Entra ID con l'interfaccia della 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 gruppo di risorse Nome del gruppo di risorse di Azure associato all'area di lavoro di Azure Databricks di destinazione.
    Nome 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>'
    

    Replace:

    • <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).

    Ad 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
    

    Replace:

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

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