Delen via


Zelfstudie: verbinden met Azure Data Lake Storage Gen2

Notitie

In dit artikel worden verouderde patronen beschreven voor het configureren van toegang tot Azure Data Lake Storage Gen2. Databricks raadt het gebruik van Unity Catalog aan. Zie Een Unity Catalog-metastore maken en Verbinding maken naar opslag van cloudobjecten met behulp van Unity Catalog.

In deze zelfstudie wordt u begeleid bij alle stappen die nodig zijn om vanuit Azure Databricks verbinding te maken met Azure Data Lake Storage Gen2 met behulp van OAuth 2.0 met een Microsoft Entra ID-service-principal.

Vereisten

Voltooi deze taken voordat u aan deze zelfstudie begint:

Stap 1: Een Microsoft Entra ID-service-principal maken

Als u service-principals wilt gebruiken om verbinding te maken met Azure Data Lake Storage Gen2, moet een beheerder een nieuwe Microsoft Entra ID-toepassing (voorheen Azure Active Directory) maken. Als u al een Microsoft Entra ID-service-principal beschikbaar hebt, gaat u verder met stap 2: een clientgeheim voor uw service-principal maken.

Volg deze instructies om een Service-principal voor Microsoft Entra ID te maken:

  1. Meld u aan bij het Azure-portaal.

    Notitie

    De portal die moet worden gebruikt, is afhankelijk van of uw Microsoft Entra ID-toepassing wordt uitgevoerd in de openbare Azure-cloud of in een nationale of onafhankelijke cloud. Zie Nationale clouds voor meer informatie.

  2. Als u toegang hebt tot meerdere tenants, abonnementen of mappen, klikt u op het pictogram Mappen en abonnementen (directory met filter) in het bovenste menu om over te schakelen naar de map waarin u de service-principal wilt inrichten.

  3. Zoek <Microsoft Entra ID en selecteer deze.

  4. Klik in Beheren op App-registraties > Nieuwe registratie.

  5. Voer bij Naam een naam in voor de toepassing.

  6. Selecteer in de sectie Ondersteunde accounttypen alleen Accounts in deze organisatiemap (één tenant).

  7. Klik op Registreren.

Stap 2: Een clientgeheim voor uw service-principal maken

  1. Klik in Beheren op Certificaten en geheimen.

  2. Klik op het tabblad Clientgeheimen op Nieuw clientgeheim.

    Nieuw clientgeheim

  3. Voer in het deelvenster Een clientgeheim toevoegen voor Beschrijving een beschrijving in voor het clientgeheim.

  4. Voor Verlopen selecteert u een verloopperiode voor het clientgeheim en klikt u op Toevoegen.

  5. Kopieer en sla de waarde van het clientgeheim op een veilige plaats op, omdat dit clientgeheim het wachtwoord is voor uw toepassing.

  6. Kopieer op de overzichtspagina van de toepassingspagina in de sectie Essentials de volgende waarden:

    • Toepassings-id (client)
    • Map-id (tenant)

    Overzicht van geregistreerde Azure-apps

Stap 3: De service-principal toegang verlenen tot Azure Data Lake Storage Gen2

U verleent toegang tot opslagbronnen door rollen toe te wijzen aan uw service-principal. In deze zelfstudie wijst u de inzender voor opslagblobgegevens toe aan de service-principal in uw Azure Data Lake Storage Gen2-account. Mogelijk moet u andere rollen toewijzen, afhankelijk van specifieke vereisten.

  1. Ga in Azure Portal naar de service Opslagaccounts .
  2. Selecteer een Azure-opslagaccount dat u wilt gebruiken.
  3. Klik op Toegangsbeheer (IAM).
  4. Klik op + Toevoegen en selecteer Roltoewijzing toevoegen in de vervolgkeuzelijst.
  5. Stel het veld Selecteren in op de naam van de Microsoft Entra-id-toepassing die u in stap 1 hebt gemaakt en stel Rol in op Inzender voor opslagblobgegevens.
  6. Klik op Opslaan.

Stap 4: Het clientgeheim toevoegen aan Azure Key Vault

U kunt het clientgeheim opslaan vanuit stap 1 in Azure Key Vault.

  1. Ga in Azure Portal naar de Key Vault-service .
  2. Selecteer een Azure Key Vault die u wilt gebruiken.
  3. Selecteer op de Key Vault-instellingspagina Geheimen.
  4. Klik op + Genereren/importeren.
  5. Selecteer Handmatig bij Uploadopties.
  6. Voer bij Naam een naam in voor het geheim. De geheime naam moet uniek zijn binnen een Key Vault.
  7. Plak voor waarde het clientgeheim dat u in stap 1 hebt opgeslagen.
  8. Klik op Create.

Stap 5: Een geheim bereik met Azure Key Vault-ondersteuning maken in uw Azure Databricks-werkruimte

Als u wilt verwijzen naar het clientgeheim dat is opgeslagen in een Azure Key Vault, kunt u een geheim bereik maken dat wordt ondersteund door Azure Key Vault in Azure Databricks.

  1. Ga naar https://<databricks-instance>#secrets/createScope. Deze URL is hoofdlettergevoelig; het bereik moet createScope hoofdletters bevatten.

    Bereik maken

  2. Voer de naam van het geheime bereik in. Namen van geheime bereiken zijn niet hoofdlettergevoelig.

  3. Gebruik het vervolgkeuzemenu Principal beheren om op te geven of alle gebruikers gemachtigd zijn MANAGE voor dit geheime bereik of alleen de maker van het geheime bereik (dat wil zeggen u).

  4. Voer de DNS-naam (bijvoorbeeld https://databrickskv.vault.azure.net/) en de resource-id in, bijvoorbeeld:

    /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
    

    Deze eigenschappen zijn beschikbaar op het tabblad Eigenschappen van een Azure Key Vault in uw Azure-portal.

    Tabblad Eigenschappen van Azure Key Vault

  5. Klik op de knop Maken.

Stap 6: Verbinding maken naar Azure Data Lake Storage Gen2 met behulp van Python

U kunt nu veilig toegang krijgen tot gegevens in het Azure-opslagaccount met behulp van OAuth 2.0 met de service-principal van uw Microsoft Entra ID-toepassing voor verificatie vanuit een Azure Databricks-notebook.

  1. Navigeer naar uw Azure Databricks-werkruimte en maak een nieuw Python-notebook.

  2. Voer de volgende Python-code uit, met de onderstaande vervangingen, om verbinding te maken met Azure Data Lake Storage Gen2.

    service_credential = dbutils.secrets.get(scope="<scope>",key="<service-credential-key>")
    
    spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth")
    spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
    spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net", "<application-id>")
    spark.conf.set("fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net", service_credential)
    spark.conf.set("fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")
    

    Replace

    • <scope> met de naam van het geheime bereik uit stap 5.
    • <service-credential-key> met de naam van de sleutel die het clientgeheim bevat.
    • <storage-account> met de naam van het Azure-opslagaccount.
    • <application-id> met de toepassings-id (client) voor de Microsoft Entra ID-toepassing.
    • <directory-id> met de map-id (tenant) voor de Microsoft Entra ID-toepassing.

    U hebt nu uw Azure Databricks-werkruimte verbonden met uw Azure Data Lake Storage Gen2-account.

Uw Azure Databricks-werkruimte toegang verlenen tot Azure Data Lake Storage Gen2

Als u een firewall in Azure Data Lake Storage Gen2 configureert, moet u netwerkinstellingen configureren om uw Azure Databricks-werkruimte verbinding te laten maken met Azure Data Lake Storage Gen2. Zorg er eerst voor dat uw Azure Databricks-werkruimte wordt geïmplementeerd in uw eigen virtuele netwerk na Azure Databricks implementeren in uw virtuele Azure-netwerk (VNet-injectie). U kunt vervolgens privé-eindpunten of toegang vanuit uw virtuele netwerk configureren om verbindingen van uw subnetten met uw Azure Data Lake Storage Gen2-account toe te staan.

Als u serverloze rekenkracht gebruikt, zoals serverloze SQL-warehouses, moet u toegang verlenen vanaf het serverloze rekenvlak naar Azure Data Lake Storage Gen2. Zie Serverloze rekenvlaknetwerken.

Toegang verlenen met behulp van privé-eindpunten

U kunt privé-eindpunten gebruiken voor uw Azure Data Lake Storage Gen2-account, zodat uw Azure Databricks-werkruimte veilig toegang heeft tot gegevens via een privékoppeling.

Als u een privé-eindpunt wilt maken met behulp van Azure Portal, raadpleegt u zelfstudie: Verbinding maken naar een opslagaccount met behulp van een privé-eindpunt van Azure. Zorg ervoor dat u het privé-eindpunt maakt in hetzelfde virtuele netwerk waarin uw Azure Databricks-werkruimte is geïmplementeerd.

Toegang verlenen vanuit uw virtuele netwerk

Met service-eindpunten voor virtuele netwerken kunt u uw kritieke Azure-serviceresources alleen naar uw virtuele netwerken beveiligen. U kunt een service-eindpunt inschakelen voor Azure Storage in het VNet dat u hebt gebruikt voor uw Azure Databricks-werkruimte.

Zie Toegang verlenen vanuit een virtueel netwerk voor meer informatie, waaronder Azure CLI en PowerShell-instructies.

  1. Meld u aan bij Azure Portal als gebruiker met de rol Inzender voor opslagaccounts in uw Azure Data Lake Storage Gen2-account.
  2. Navigeer naar uw Azure Storage-account en ga naar het tabblad Netwerken .
  3. Controleer of u hebt geselecteerd om toegang toe te staan vanuit geselecteerde virtuele netwerken en IP-adressen.
  4. Selecteer Onder Virtuele netwerken de optie Bestaand virtueel netwerk toevoegen.
  5. Selecteer in het zijpaneel onder Abonnement het abonnement waarin uw virtuele netwerk zich bevindt.
  6. Selecteer onder Virtuele netwerken het virtuele netwerk waarin uw Azure Databricks-werkruimte is geïmplementeerd.
  7. Kies Alles selecteren onder Subnetten.
  8. Klik op Inschakelen.
  9. Selecteer Opslaan om uw wijzigingen toe te passen.

Probleemoplossing

Fout: IllegalArgumentException: Geheim bestaat niet met bereik: KeyVaultScope en sleutel

Deze fout betekent waarschijnlijk:

  • Het door Databricks ondersteunde bereik waarnaar in de code wordt verwezen, is ongeldig.

Bekijk de naam van uw geheim uit stap 4 in dit artikel.

Fout: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_STATE: Databricks heeft geen toegang tot keyvault

Deze fout betekent waarschijnlijk:

  • Het bereik met databricks-ondersteuning waarnaar in de code wordt verwezen, is ongeldig. of het geheim dat is opgeslagen in de sleutelkluis is verlopen.

Bekijk stap 3 om te controleren of uw Azure Key Vault-geheim geldig is. Bekijk de naam van uw geheim uit stap 4 in dit artikel.

Fout: ADAuthenticator$HttpException: HTTP-fout 401: token is mislukt voor het ophalen van een token vanuit het AzureAD-antwoord

Deze fout betekent waarschijnlijk:

  • De clientgeheimsleutel van de service-principal is verlopen.

Maak een nieuw clientgeheim na stap 2 in dit artikel en werk het geheim bij in uw Azure Key Vault.

Resources