Usare un'entità servizio Microsoft Entra per autenticare l'accesso alle cartelle Git di Azure Databricks
Informazioni su come configurare l'accesso autenticato alle cartelle Git di Azure Databricks ospitate da Azure DevOps (Azure Repos) con un'entità servizio Microsoft Entra.
Se nel progetto Databricks sono presenti cartelle Git di Databricks supportate dai repository Git di Azure Repos e si vogliono gestirle nell'automazione, è possibile usare le informazioni contenute in questo articolo per configurare l'autenticazione usando un'entità servizio Microsoft Entra e Azure DevOps. Dopo aver completato questa attività, si avranno credenziali Git di Databricks autenticate che è possibile usare nell'automazione.
Perché usare Microsoft Entra e non un PAT?
In passato, i token di accesso personale (PAT) erano il modo migliore per eseguire l'autenticazione quando si chiama un'API che richiede accesso e autorizzazioni specifiche per le risorse. Questi token di connessione rappresentano un nome utente e una password e richiedono una rotazione regolare per ridurre al minimo il rischio di sicurezza presentato. I token di accesso di Microsoft Entra ID risolvano questo problema gestendo automaticamente la rotazione di questi token ogni ora e Databricks le consiglia come procedura consigliata quando si lavora con le risorse di Azure. Creando un'entità servizio Microsoft Entra, è possibile gestire le autorizzazioni concesse per l'accesso a queste risorse senza usare un account utente di Microsoft Azure.
Requisiti
Devi avere:
- Accesso a un progetto Azure DevOps con un repository Git Azure Repos connesso a una cartella Git di Databricks.
- Autorizzazioni per l'account Azure per creare un'entità servizio MS Entra.
- L'installazione dell'Interfaccia della riga di comando di Azure.
- Interfaccia della riga di comando di Databricks installata.
Passaggio 1: Creare un'entità servizio Microsoft Entra
È possibile ignorare questo passaggio se si dispone già di un'entità servizio Microsoft Entra configurata.
Per creare un'entità servizio Microsoft Entra, seguire la procedura descritta nella documentazione di Microsoft Azure: Registrare un'app Microsoft Entra e creare un'entità servizio. Nella sezione "Configura autenticazione" di questo articolo ignorare le prime due opzioni e seguire i passaggi descritti in "Opzione 3: Creare un nuovo segreto client".
Dopo averla configurata, si avrà:
- Segreto client. Verrà presente come una lunga stringa di caratteri visualizzati casualmente.
-
- ID entità servizio. Si tratta del nome univoco assegnato all'entità servizio MS Entra. Come procedura consigliata, il nome deve anche informazioni che indicano come e quando deve essere usato (ad esempio,
Databricks_CICD_SP
).
- ID entità servizio. Si tratta del nome univoco assegnato all'entità servizio MS Entra. Come procedura consigliata, il nome deve anche informazioni che indicano come e quando deve essere usato (ad esempio,
È possibile ignorare l'interfaccia utente di reindirizzamento facoltativa nella finestra di dialogo di configurazione di MS Entra perché non verrà usata in questa configurazione.
Copiarli da qualche parte come li userai nei passaggi futuri. Dopo aver completato correttamente il processo in questa documentazione, proteggere o eliminare queste informazioni.
Passaggio 2: Configurare le autorizzazioni di Azure DevOps per l'entità servizio MS Entra
Prima di tutto, è necessario concedere all'entità servizio MS Entra l'autorizzazione per accedere alle risorse di Azure DevOps. A tale scopo, è necessario usare il portale di Azure DevOps.
Accedere all'account Azure DevOps e passare al progetto.
In Autorizzazioni impostazioni>progetto fare clic su Lettori.
Fare clic sulla scheda Membri , fare clic su Aggiungi e quindi aggiungere il nome dell'entità servizio MS Entra creata.
Nella console tornare al livello di organizzazione dell'organizzazione Di Azure DevOps e fare clic su Impostazioni organizzazione nella parte inferiore del riquadro sinistro.
Fare clic su Utenti>Aggiungi utente e quindi configurare l'accesso per l'entità servizio come indicato di seguito:
- Aggiungere l'entità servizio MS Entra usando l'ID creato in precedenza.
- Configurare l'accesso per l'entità servizio al livello minimo necessario per eseguire operazioni in Azure Repos. In genere, le autorizzazioni di base sono sufficienti. Se non si è certi del livello da usare, contattare l'amministratore dell'organizzazione di Azure DevOps.
- Aggiungere l'entità servizio al progetto Azure DevOps.
- Assegnare l'entità servizio al gruppo Collaboratori progetto .
Passaggio 3: Assegnare le autorizzazioni all'entità servizio in Azure Databricks
È anche necessario assegnare autorizzazioni in Azure Databricks all'entità servizio Microsoft Entra.
- Accedere alla console di amministrazione dell'account Azure Databricks per l'account.
- Fare clic su Utenti e gruppi.
- Fare clic sulla scheda Entità servizio e quindi su Aggiungi entità servizio.
- Nella pagina Aggiungi entità servizio fare clic su Microsoft Entra ID gestito, quindi aggiungere l'ID applicazione Microsoft Entra e il nome dell'entità servizio da "Passaggio 1: Creare un'entità servizio Microsoft Entra". Al termine, fare clic su Aggiungi .
- Fare clic sull'entità servizio Microsoft Entra aggiunta per visualizzare la scheda Informazioni sull'entità.
- Fare clic su Genera segreto sul lato inferiore sinistro della pagina per generare un segreto OAuth. Questo segreto consente di autenticare le chiamate API di Azure Databricks usando l'interfaccia della riga di comando di Databricks.
- Copiare la stringa privata e l'ID client, quindi fare clic su Fine. Entrambi verranno usati nel passaggio successivo. Selezionare Fatto.
- Nella barra laterale sinistra fare clic su Aree di lavoro, scegliere l'area di lavoro e quindi fare clic sulla scheda Autorizzazioni .
- Concedere all'entità servizio le autorizzazioni "Utente" e quindi fare clic su Aggiungi autorizzazioni.
Importante
Se la scheda Autorizzazioni è disattivata, l'area di lavoro di Azure Databricks non viene assegnata a un metastore di Unity Catalog. Contattare l'amministratore di Databricks.
Creare quindi le credenziali Git di Azure Databricks.
Passaggio 4: Creare un token di accesso di Microsoft Entra ID e archiviarlo come credenziale Git di Azure Databricks.
Nota
Questo passaggio richiede l'uso delle interfacce della riga di comando di Azure e Databricks.
Per eseguire l'autenticazione in Azure Databricks, è necessario avere un profilo di configurazione (.databrickscfg
) configurato con il segreto OAuth creato nel passaggio precedente. Per configurare questa configurazione, aprire il .databrickscfg
file nell'editor e aggiungere quanto segue al file:
[DEFAULT]
host = https://<workspace-url>.azuredatabricks.net/
client_id = <service principal ID>
client_secret = <Databricks OAuth token value>
Dove host
è l'URL dell'area di lavoro di Databricks, client_id
è l'ID dell'entità servizio Microsoft Entra ed client_secret
è il segreto client OAuth creato in "Passaggio 3: Assegnare le autorizzazioni all'entità servizio in Azure Databricks".
A questo processo dovrebbero essere disponibili i valori seguenti per fornire alle chiamate dell'interfaccia della riga di comando:
- L'ID client dell'entità servizio dei passaggi 1 o 3 deve essere lo stesso. (
sp_id
negli esempi seguenti dell'interfaccia della riga di comando. - Nome dell'entità servizio del passaggio 1. (
sp_name
) - Stringa del segreto client dell'entità servizio del passaggio 1. (
sp_secret
) - Nome dell'organizzazione di Azure DevOps. (
devops_org
) - Nome del progetto Azure DevOps. (
devops_project
) - Nome del repository Azure Repos. (
devops_repo
)
È anche necessario l'ID tenant di Azure (tenant_id
negli esempi seguenti) per la sottoscrizione di Azure. Seguire queste istruzioni per ottenerlo dal portale di Azure.
È ora possibile creare credenziali Git dall'interfaccia della riga di comando di Azure.
- Aprire una finestra della riga di comando con accesso alle interfacce della riga di comando di Azure e Databricks.
- Eseguire il comando seguente dell'interfaccia della riga di comando di Azure per accedere come entità servizio Microsoft Entra:
az login --allow-no-subscriptions --service-principal -u $sp_id -p $sp_secret --tenant $tenant_id
- Come entità servizio Microsoft Entra, richiedere un token di accesso a Microsoft Entra ID e assegnarlo a una variabile:
ENTRA_ID_TOKEN=$(az account get-access-token --resource "499b84ac-1321-427f-aa17-267ca6975798" --query "accessToken" --output tsv)
- Usare il token di accesso per creare credenziali Git per l'accesso ad Azure Databricks usando i livelli di autorizzazione configurati per l'accesso:
databricks git-credentials create azureDevOpsServices --personal-access-token $ENTRA_ID_TOKEN --git-username $sp_name
- Creare infine una nuova cartella Git usando l'entità servizio Microsoft Entra:
databricks repos create \https://$sp_name@dev.azure.com/$devops_org/$devops_project/_git/$devops_repo
La cartella Git corrispondente per questo repository Azure DevOps è ora disponibile nell'area di lavoro di Azure Databricks. È possibile fornire le credenziali Git per gestirle dal codice usando le API REST Databricks Repos o l'interfaccia della riga di comando di Databricks.
Si è appreso come generare un token di accesso a Microsoft Entra ID con ambito Azure DevOps e archiviarlo come credenziale Git di Databricks.
Procedure consigliate
Il token di accesso entra ID è di breve durata, quindi la pipeline deve aggiornare le credenziali Git di Databricks usando git-credentials update
. È quindi possibile attivare una richiesta pull usando databricks repos update
.
Importante
In un'impostazione di produzione sono necessarie misure di sicurezza aggiuntive. In un ambiente di produzione è necessario archiviare il segreto client dell'entità servizio e il token OAuth di Databricks in un archivio segreto sicuro, ad esempio Azure Key Vault.
Vedi anche
Autenticazione con interfaccia della riga di comando di Azure
Aggiungere le credenziali del provider Git a un'area di lavoro di Azure Databricks
Usare entità servizio e identità gestite (documentazione di Microsoft Azure DevOps)