Delen via


Een taak uitvoeren met een Microsoft Entra ID-service-principal

Taken bieden een niet-interactieve manier om toepassingen uit te voeren in een Azure Databricks-cluster, bijvoorbeeld een ETL-taak of gegevensanalysetaak die op geplande basis moet worden uitgevoerd. Normaal gesproken worden deze taken uitgevoerd als de gebruiker die ze heeft gemaakt, maar dit kan enkele beperkingen hebben:

  • Het maken en uitvoeren van taken is afhankelijk van de juiste machtigingen van gebruiker having.
  • Alleen de gebruiker die de taak heeft gemaakt, heeft toegang tot de taak.
  • De gebruiker kan worden verwijderd uit de Azure Databricks-werkruimte.

Het gebruik van een serviceaccount, een account dat is gekoppeld aan een toepassing in plaats van een specifieke gebruiker, is een veelgebruikte methode om deze beperkingen aan te pakken. In Azure kunt u een Microsoft Entra ID-toepassing en service-principal gebruiken om een serviceaccount te maken.

Een voorbeeld van where dit is belangrijk wanneer service-principals de toegang tot gegevens beheren die zijn opgeslagen in een Azure Data Lake Storage Gen2-account. Door taken met deze service-principals uit te voeren, hebben de taken toegang tot gegevens in het opslagaccount en hebben ze controle over het bereik van gegevenstoegang.

In deze zelfstudie wordt beschreven hoe u een Microsoft Entra ID-toepassing en service-principal maakt en die service-principal de eigenaar van een taak maakt. U leert tevens hoe u taakuitvoeringsmachtigingen kunt verlenen aan andere groepen die geen eigenaar zijn van de taak. Hier volgt een algemeen overzicht van de taken die in deze zelfstudie worden doorlopen:

  1. Maak een service-principal in Microsoft Entra ID.
  2. Maak een persoonlijk toegangstoken (PAT) in Azure Databricks. U gebruikt de PAT om te verifiëren bij de Databricks REST API.
  3. Voeg de service-principal toe als een gebruiker zonder beheerdersrechten aan Azure Databricks met behulp van de SCIM-API van Databricks.
  4. Maak een geheim bereik met Azure Key Vault-ondersteuning in Azure Databricks.
  5. Grant de leestoegang van de service-principal tot het geheime bereik.
  6. Maak een taak in Azure Databricks en configureer het taakcluster om geheimen uit het geheime bereik te lezen.
  7. Eigendom van de taak overdragen aan de service-principal.
  8. Test de taak door deze uit te voeren als de service-principal.

Als u nog geen abonnement op Azure hebt, maakt u een gratis account aan voordat u begint.

Notitie

U kunt een cluster waarvoor referentiepassthrough is ingeschakeld, niet gebruiken om een taak uit te voeren die eigendom is van een service-principal. Als voor uw taak een service-principal is vereist voor toegang tot Azure Storage, raadpleegt u Verbinding maken met Azure Data Lake Storage Gen2 of Blob Storage met behulp van Azure credentials.

Vereisten

U hebt het volgende nodig voor deze zelfstudie:

  • Een gebruikersaccount met de machtigingen die nodig zijn om een toepassing te registreren in uw Microsoft Entra ID-tenant.
  • Beheerdersbevoegdheden in de Azure Databricks-werkruimte where waar u taken uitvoert.
  • Een hulpprogramma voor het maken van API-aanvragen naar Azure Databricks. In deze zelfstudie wordt cURL gebruikt, maar u kunt elk hulpprogramma gebruiken waarmee u REST API-aanvragen kunt indienen.

Een service-principal maken in Microsoft Entra-id

Een service-principal is de identiteit van een Microsoft Entra ID-toepassing. De service-principal maken die wordt gebruikt om taken uit te voeren:

  1. select Microsoft Entra ID > App-registraties > Nieuwe registratiein het Azure-portaal. Voer een naam in voor de toepassing en klik op Registreren.
  2. Ga naar Certificaten & geheimen, klik op Nieuw clientgeheimen generate een nieuw clientgeheim. Kopieer en sla het geheim op een veilige plaats op.
  3. Ga naar Overzicht en noteer de id van de toepassing (client) en de map-id (tenant).

Het persoonlijke toegangstoken van Azure Databricks maken

U gebruikt een persoonlijk toegangstoken (PAT) van Azure Databricks om te verifiëren bij de Databricks REST API. Een PAT maken die kan worden gebruikt voor het maken van API-aanvragen:

  1. Ga naar uw Azure Databricks-werkruimte.
  2. Klik op uw gebruikersnaam in de rechterbovenhoek van het scherm en klik op Instellingen.
  3. Klik op Ontwikkelaars.
  4. Klik naast Access-tokens op Beheren.
  5. Klik op Generate nieuw token.
  6. Kopieer en sla de tokenwaarde op.

Tip

In dit voorbeeld wordt een persoonlijk toegangstoken gebruikt, maar u kunt een Microsoft Entra ID-token gebruiken voor de meeste API's. Een best practice is dat een PAT geschikt is voor beheerconfiguratietaken, maar Microsoft Entra ID-tokens hebben de voorkeur voor productieworkloads.

U kunt het genereren van PAW's alleen beperken tot beheerders voor beveiligingsdoeleinden. Zie Monitor en revoke persoonlijke toegangstokens voor meer informatie.

De service-principal toevoegen aan de Azure Databricks-werkruimte

U voegt de Microsoft Entra ID-service-principal toe aan een werkruimte met behulp van de Service Principals-API. U moet de service-principal ook toestemming geven om geautomatiseerde taakclusters te starten. U kunt dit grant via de machtiging allow-cluster-create. Open een terminal en gebruik de Databricks CLI om de volgende opdracht uit te voeren om de service-principal toe te voegen en de vereiste machtigingen grant:

databricks service-principals create --json '{
  "schemas":[
    "urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal"
  ],
  "applicationId":"<application-id>",
  "displayName": "test-sp",
  "entitlements":[
    {
      "value":"allow-cluster-create"
    }
  ]
}'

Vervang <application-id> door de Application (client) ID registratie van de Microsoft Entra ID-toepassing.

Een geheim bereik met Azure Key Vault-ondersteuning maken in Azure Databricks

Geheime bereiken beheren bieden veilige opslag en beheer van geheimen. U slaat het geheim op dat is gekoppeld aan de service-principal in een geheim bereik. U kunt geheimen opslaan in een geheim bereik van Azure Databricks of een geheim bereik met Azure Key Vault-ondersteuning. In deze instructies wordt de optie met Azure Key Vault-ondersteuning beschreven:

  1. Maak een Azure Key Vault-exemplaar in Azure Portal.
  2. Maak het geheime bereik van Azure Databricks dat wordt ondersteund door het Azure Key Vault-exemplaar.

Stap 1: Een Azure Key Vault-exemplaar maken

  1. In de Azure Portal, selectKey Vaults > + Toevoegen en geef de Key Vault een naam.

  2. Klik op Controleren + maken.

  3. Nadat de validatie is voltooid, klikt u op Maken .

  4. Nadat u de sleutelkluis hebt gemaakt, gaat u naar de pagina Eigenschappen voor de nieuwe sleutelkluis.

  5. Kopieer en sla de kluis-URI en resource-id op.

    Eigenschappen van Azure Key Vault

Stap 2: Een geheim bereik met Azure Key Vault-ondersteuning maken

Azure Databricks-resources kunnen verwijzen naar geheimen die zijn opgeslagen in een Azure Key Vault door een geheim bereik met Key Vault-ondersteuning te maken. Ga als volgende te werk om het geheime bereik van Azure Databricks te maken:

  1. Ga naar de pagina Geheim bereik van Azure Databricks maken op https://<per-workspace-url>/#secrets/createScope. Vervang door per-workspace-url de unieke URL per werkruimte voor uw Azure Databricks-werkruimte.

  2. Voer een bereiknaam in.

  3. Voer de Vault-URI- in en resource-idvalues voor de Azure Key Vault die u in stap 1 hebt gemaakt: een Azure Key Vault-exemplaar maken.

  4. Klik op Create.

    Geheim bereik maken

Het clientgeheim opslaan in Azure Key Vault

  1. Ga in Azure Portal naar de sleutelkluizenservice .

  2. Select de sleutelkluis die is gemaakt in stap 1: een Azure Key Vault-exemplaar maken.

  3. Klik onder Settings > Secretsop Generate/Import.

  4. Select de optie Handmatig uploaden en voer het cliëntgeheim in bij het veld Waarde.

    Geheim maken

  5. Klik op Create.

Grant de leestoegang van de service-principal tot het geheime bereik

U hebt een geheim bereik gemaakt en het clientgeheim van de service-principal in dat bereik opgeslagen. Nu geeft u de service-principal toegang om het geheim uit het geheime bereik te lezen.

Open een terminal en gebruik de Databricks CLI om de volgende opdracht uit te voeren:

databricks secrets put-acl <scope-name> <application-id> READ
  • Vervang door <scope-name> de naam van het Azure Databricks-geheimbereik dat het clientgeheim bevat.
  • Vervang <application-id> door de Application (client) ID registratie van de Microsoft Entra ID-toepassing.

Een taak maken in Azure Databricks en het cluster configureren om geheimen te lezen vanuit het geheime bereik

U kunt nu een taak maken die kan worden uitgevoerd als de nieuwe service-principal. U gebruikt een notebook die is gemaakt in de Gebruikersinterface van Azure Databricks en voegt de configuratie toe zodat het taakcluster het geheim van de service-principal kan ophalen.

  1. Ga naar de landingspagina van Azure Databricks en selectNew > Notebook. Geef uw notebook een naam en selectSQL- als de standaardtaal.

  2. Voer SELECT 1 in de eerste cel van het notitieblok in. Dit is een eenvoudige opdracht waarmee alleen 1 wordt weergegeven als deze slaagt. Als u uw service-principal toegang hebt verleend tot bepaalde bestanden of paden in Azure Data Lake Storage Gen 2, kunt u deze paden lezen.

  3. Ga naar Werkstromen en klik op Taak maken. Geef de baan en taak een naam, klik op Select Notitiebloken select het notitieblok dat u zojuist hebt gemaakt.

  4. Klik op Bewerken naast de clustergegevens.

  5. Klik op de pagina Cluster configureren op Geavanceerde opties.

  6. Voer op het tabblad Spark de volgende Spark-configuratie in:

    fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
    fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
    fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
    fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope-name>/<secret-name>}}
    fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<directory-id>/oauth2/token
    
    • Vervang door <storage-account> de naam van het opslagaccount met uw gegevens.
    • Vervang door <secret-scope-name> de naam van het Azure Databricks-geheimbereik dat het clientgeheim bevat.
    • Vervang <application-id> door de Application (client) ID registratie van de Microsoft Entra ID-toepassing.
    • Vervang <secret-name> door de naam die is gekoppeld aan de waarde van het clientgeheim in het geheime bereik.
    • Vervang <directory-id> door de Directory (tenant) ID registratie van de Microsoft Entra ID-toepassing.

Eigendom van de taak overdragen aan de service-principal

Een taak kan precies één eigenaar hebben, dus u moet het eigendom van de taak van uzelf overdragen naar de service-principal. Om ervoor te zorgen dat andere gebruikers de taak kunnen beheren, kunt u ook grant MACHTIGINGEN VOOR EEN groep BEHEREN. In dit voorbeeld gebruiken we de Machtigingen-API om deze machtigingen te set.

Open een terminal en gebruik de Databricks CLI om de volgende opdracht uit te voeren:

databricks permissions set jobs <job-id> --json '{
  "access_control_list": [
    {
      "service_principal_name": "<application-id>",
      "permission_level": "IS_OWNER"
    },
    {
      "group_name": "admins",
      "permission_level": "CAN_MANAGE"
    }
  ]
}'
  • Vervang <job-id> door de unieke identifier van de taak. Als u de taak-id wilt vinden, klikt u op Werkstromen in de zijbalk en klikt u op de taaknaam. De taak-id bevindt zich in het zijpaneel met taakdetails .
  • Vervang <application-id> door de Application (client) ID registratie van de Microsoft Entra ID-toepassing.

De taak heeft ook leesmachtigingen voor het notitieblok nodig. Gebruik de Databricks CLI om de volgende opdracht uit te voeren om de vereiste machtigingen te grant:

databricks permissions set notebooks <notebook-id> --json '{
  "access_control_list": [
    {
      "service_principal_name": "<application-id>",
      "permission_level": "CAN_READ"
    }
  ]
}'
  • Vervang door <notebook-id> de id van het notebook dat is gekoppeld aan de taak. Als u de id wilt vinden, gaat u naar het notebook in de Azure Databricks-werkruimte en zoekt u naar de numerieke id die volgt notebook/ in de URL van het notebook.
  • Vervang <application-id> door de Application (client) ID registratie van de Microsoft Entra ID-toepassing.

De taak testen

U voert taken uit met een service-principal op dezelfde manier als u taken uitvoert als een gebruiker, hetzij via de gebruikersinterface, API of CLI. De taak testen met behulp van de Gebruikersinterface van Azure Databricks:

  1. Ga naar Werkstromen in de gebruikersinterface van Azure Databricks en select de taak.
  2. Klik op Nu uitvoeren.

U ziet de status Geslaagd voor de taak als alles correct wordt uitgevoerd. U kunt de taak in de gebruikersinterface select om de uitvoer te controleren:

Taakuitvoer

Meer informatie

Zie Werkstromen plannen en organiseren voor meer informatie over het maken en uitvoeren van taken.