Zelfstudie: Verbinding maken met Azure Data Lake Storage
Notitie
In dit artikel worden verouderde patronen beschreven voor het configureren van toegang tot Azure Data Lake Storage. Databricks raadt het gebruik van Unity Catalog aan. Zie Een Unity Catalog-metastore maken en verbinding maken met opslag en services voor cloudobjecten met behulp van Unity Catalog.
Deze tutorial leidt je door alle stappen die nodig zijn om vanuit Azure Databricks te verbinden met Azure Data Lake Storage met behulp van OAuth 2.0 met een service-principal voor Microsoft Entra ID.
Vereisten
Voltooi deze taken voordat u aan deze zelfstudie begint:
- Een Azure Databricks-werkruimte maken. Zie quickstart: Een Azure Databricks-werkruimte maken
- Maak een Azure Data Lake Storage-opslagaccount. Zie quickstart: Een Azure Data Lake Storage-opslagaccount maken.
- Maak een Azure Key Vault. Zie quickstart: Een Azure Key Vault maken
Stap 1: Een Microsoft Entra ID-service-principal maken
Als u service-principals wilt gebruiken om verbinding te maken met Azure Data Lake Storage, moet een beheerder een nieuwe Microsoft Entra ID-toepassing 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 stappen om een serviceprincipal voor Microsoft Entra ID aan te maken:
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.
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.
Zoek naar <Microsoft Entra ID en selecteer deze.
Klik in Beheren op App-registraties > Nieuwe registratie.
Voer bij Naam een naam in voor de toepassing.
Selecteer in de sectie Ondersteunde accounttypen alleen Accounts in deze organisatiemap (één tenant).
Klik op Registreren.
Stap 2: Een clientgeheim voor uw service-principal maken
Klik in Beheren op Certificaten en geheimen.
Klik op het tabblad Clientgeheimen op Nieuw clientgeheim.
Voer in het deelvenster Een clientgeheim toevoegen voor Beschrijving een beschrijving in voor het clientgeheim.
Voor Verlopen selecteert u een verloopperiode voor het clientgeheim en klikt u op Toevoegen.
Kopieer en sla de waarde van het clientgeheim op een veilige plaats op, omdat dit clientgeheim het wachtwoord is voor uw toepassing.
Op de Overzicht pagina van de toepassingspagina, in de sectie Essentials, kopieert u de volgende waarden:
- Toepassings-id (client)
- Directory-ID (tenant)
stap 3: de service-principal toegang verlenen tot Azure Data Lake Storage
U verleent toegang tot opslagbronnen door rollen toe te wijzen aan uw service-principal. In deze zelfstudie wijst u de Storage Blob Data Contributor-rol toe aan de service-principal van uw Azure Data Lake Storage-account. Mogelijk moet u andere rollen toewijzen, afhankelijk van specifieke vereisten.
- Ga in de Azure-portal naar de service Opslagaccounts.
- Selecteer een Azure-opslagaccount dat u wilt gebruiken.
- Klik op Toegangsbeheer (IAM).
- Klik op + Toevoegen en selecteer Roltoewijzing toevoegen in de vervolgkeuzelijst.
- 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.
- Klik op Opslaan.
Stap 4: Het clientgeheim toevoegen aan Azure Key Vault
U kunt het clientgeheim opslaan vanuit stap 1 in Azure Key Vault.
- Ga in Azure Portal naar de Key Vault-service .
- Selecteer een Azure Key Vault die u wilt gebruiken.
- Selecteer op de Key Vault-instellingspagina Geheimen.
- Klik op + Genereren/importeren.
- Selecteer Handmatig bij Uploadopties.
- Voer bij Naam een naam in voor het geheim. De geheime naam moet uniek zijn binnen een Key Vault.
- Voor waarde plakt u de client secret die u in stap 1 hebt opgeslagen.
- Klik op Create.
Stap 5: Uw Azure Key Vault-exemplaar configureren voor Azure Databricks
Ga in Azure Portal naar het Azure Key Vault-exemplaar.
Selecteer onder Instellingen het tabblad Access-configuratie .
Stel machtigingsmodel in op Vault-toegangsbeleid.
Notitie
Het maken van een door Azure Key Vault ondersteunde geheime rol verleent de Get en List machtigingen aan de applicatie-id voor de Azure Databricks-service, gebruikmakend van key vault-toegangsbeleid. Het machtigingsmodel voor op rollen gebaseerd toegangsbeheer van Azure wordt niet ondersteund met Azure Databricks.
Selecteer onder Instellingende optie Netwerken.
Stel in firewalls en virtuele netwerkenToegang toestaan vanaf: tot Openbare toegang vanaf specifieke virtuele netwerken en IP-adressen toestaan.
Onder Uitzondering, selecteer Vertrouwde Microsoft-services toestaan om deze firewall te omzeilen.
Notitie
U kunt ook Toegang toestaan vanaf: instellen naar Openbare toegang toestaan vanuit alle netwerken.
Stap 6: 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.
Ga naar
https://<databricks-instance>#secrets/createScope
. Deze URL is hoofdlettergevoelig; het woord binnencreateScope
moet in hoofdletters staan.Voer de naam van de geheime scope in. Namen van geheime scopnamen zijn hoofdletterongevoelig.
Gebruik het beheer vervolgkeuzemenu om op te geven of alle gebruikers toestemming hebben voor het geheime gedeelte of alleen de maker van het geheime gedeelte (dat wil zeggen u).
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 via de *Instellingen > eigenschappen tabblad van een Azure Key Vault in uw Azure-portal.
Klik op de knop Maken.
stap 7: verbinding maken met Azure Data Lake Storage met behulp van Python
U kunt nu veilig toegang krijgen tot gegevens in het Azure-storageaccount met behulp van OAuth 2.0 en de service-principal van uw Microsoft Entra ID-applicatie voor verificatie vanuit een Azure Databricks-notebook.
Navigeer naar uw Azure Databricks-werkruimte en maak een nieuw Python-notebook.
Voer de volgende Python-code uit, met de onderstaande vervangingen, om verbinding te maken met Azure Data Lake Storage.
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")
Vervangen
-
<scope>
met de naam van de geheime scope 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 Application (client) ID voor de Microsoft Entra ID-toepassing. -
<directory-id>
met de Directory-ID (tenant) voor de Microsoft Entra ID-toepassing.
U hebt nu uw Azure Databricks-werkruimte verbonden met uw Azure Data Lake Storage-account.
-
uw Azure Databricks-werkruimte toegang verlenen tot Azure Data Lake Storage
Als u een firewall in Azure Data Lake Storage configureert, moet u netwerkinstellingen configureren om uw Azure Databricks-werkruimte verbinding te laten maken met Azure Data Lake Storage. 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 configureren of toegang vanuit uw virtuele netwerk om verbindingen van uw subnetten met uw Azure Data Lake Storage-account toe te staan.
Als u serverloze rekenkracht gebruikt, zoals serverloze SQL-warehouses, moet u toegang verlenen vanuit het serverloze rekenvlak naar Azure Data Lake Storage. Zie Serverloze rekenvlaknetwerken.
Toegang verlenen met behulp van privé-eindpunten
U kunt privé-eindpunten voor uw Azure Data Lake Storage-account gebruiken om uw Azure Databricks-werkruimte veilig toegang te geven tot gegevens via een private link.
Als u een privé-eindpunt wilt maken met behulp van Azure Portal, raadpleegt u zelfstudie: Verbinding maken met 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 beveiligen zodat deze alleen toegankelijk zijn vanuit uw virtuele netwerken. 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.
- Meld u aan bij Azure Portal als gebruiker met de rol Inzender voor opslagaccounts in uw Azure Data Lake Storage-account.
- Navigeer naar uw Azure Storage-account en ga naar het tabblad Netwerken .
- Controleer of u hebt geselecteerd om toegang toe te staan vanuit geselecteerde virtuele netwerken en IP-adressen.
- Selecteer Onder Virtuele netwerken de optie Bestaand virtueel netwerk toevoegen.
- Selecteer in het zijpaneel onder Abonnement het abonnement waarin uw virtuele netwerk zich bevindt.
- Selecteer onder Virtuele netwerken het virtuele netwerk waarin uw Azure Databricks-werkruimte is geïmplementeerd.
- Kies Alles selecteren onder Subnetten.
- Klik op Inschakelen.
- 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 door Databricks ondersteunde bereik 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.