Aan de slag met Azure Data Lake Storage Gen2

U kunt eenvoudig Azure Data Lake Storage Gen2-opslagaccounts (ADLS Gen2) verifiëren en openen met behulp van een toegangssleutel voor een Azure-opslagaccount.

Het gebruik van een toegangssleutel is minder veilig dan het gebruik van een service-principal of referentiepassthrough, maar kan handig zijn voor niet-productiescenario's zoals het ontwikkelen of testen van notebooks.

Hoewel u een toegangssleutel rechtstreeks vanuit uw werkruimte Azure Databricks gebruiken, biedt het opslaan van de sleutel in een geheim bereik een extra beveiligingslaag. Geheime bereiken bieden veilige opslag en beheer van geheimen en bieden u de mogelijkheid om de toegangssleutel te gebruiken voor verificatie zonder deze rechtstreeks op te nemen in Azure Databricks werkruimte.

In dit artikel wordt uitgelegd hoe u een toegangssleutel voor een Azure-opslagaccount verkrijgt, die toegangssleutel opgeslagen in een geheim bereik met Azure Key Vault-ondersteuningen deze gebruikt voor toegang tot een ADLS Gen2-opslagaccount vanuit een Azure Databricks-notebook. Hier volgt een overzicht van de taken voor het configureren van een toegangssleutel en deze gebruiken om toegang te krijgen tot ADLS Gen2 opslagaccount:

  1. Een toegangssleutel verkrijgen uit het Azure-opslagaccount.
  2. Maak een Azure-sleutelkluis.
  3. Voeg de Azure-toegangssleutel toe aan de Azure-sleutelkluis.
  4. Maak een geheim bereik in uw werkruimte Azure Databricks wordt ondersteuning voor de Azure-sleutelkluis.
  5. Gebruik de toegangssleutel van het geheime bereik om te verifiëren bij het opslagaccount.

In dit artikel wordt het gebruik van Azure Key Vault geheim bereik beschreven, maar u kunt ook een geheim bereik met Databricks-back-to-date gebruiken om de toegangssleutel op te slaan.

Vereisten

Een Azure ADLS-toegangssleutel op halen

U verkrijgt een toegangssleutel voor ADLS Gen2 opslagaccount met behulp van Azure Portal:

  1. Ga naar uw ADLS Gen2 opslagaccount in de Azure Portal.

  2. Selecteer onder Instellingen de optie Toegangssleutels.

  3. Kopieer de waarde voor een van de beschikbare toegangssleutels.

    Toegangssleutel op halen

Een Azure-sleutelkluis en geheim bereik maken

De Azure-sleutelkluis en een Azure Databricks geheime bereik maken die door die sleutelkluis worden back-by:

  1. Maak een Azure Key Vault-exemplaar in de Azure Portal.
  2. Maak het Azure Databricks geheime bereik dat wordt Azure Key Vault het Azure Key Vault maken.

Stap 1: een Azure Key Vault maken

  1. Selecteer in Azure Portal sleutelkluizen + Toevoegen en geef uw sleutelkluis een naam.

  2. Klik op Controleren + maken.

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

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

  5. Kopieer de Kluis-URI en resource-id en sla deze op.

    Azure Key Vault-eigenschappen

Stap 2: een geheim bereik Azure Key Vault back-Azure Key Vault maken

Azure Databricks-resources kunnen verwijzen naar geheimen die zijn opgeslagen in een Azure-sleutelkluis door een geheim bereik met Key Vault back-Key Vault te maken. U kunt de Azure Databricks UI, de Databricks Secrets CLIof de Databricks Secrets API 2.0 gebruiken om het geheime bereik met Azure Key Vault back-Azure Key Vault maken. In dit artikel wordt beschreven hoe u de gebruikersinterface en CLI gebruikt.

Het geheime bereik Azure Databricks de Azure Databricks maken
  1. Ga naar de pagina Azure Databricks Geheime bereik maken op . Vervang per-workspace-url door de unieke URL per per-workspace-url voor uw Azure Databricks werkruimte.

  2. Voer een bereiknaam in.

  3. Voer de waarden voor Kluis-URI en Resource-id in voor de Azure-sleutelkluis die u hebt gemaakt in Stap 1: een Azure Key Vault maken.

  4. Klik op Create.

    Geheim bereik maken

Het geheime bereik Azure Databricks maken in de CLI

Als u een geheim bereik wilt maken dat wordt gebacked door de Azure-sleutelkluis met behulp van de Databricks CLI, opent u een terminal en voer u de volgende opdracht uit:

databricks secrets create-scope \
--scope <scope-name> \
--scope-backend-type AZURE_KEYVAULT \
--resource-id <azure-keyvault-resource-id> \
--dns-name <azure-keyvault-dns-name>

Vervangen

  • <scope-name> door een naam voor het nieuwe bereik.
  • <azure-keyvault-resource-id>met de resource-id <azure-keyvault-resource-id>
  • <azure-keyvault-dns-name> met de <azure-keyvault-dns-name>.

Een voorbeeld van het gebruik van de waarden uit stap 1: een Azure Key Vault maken:

databricks secrets create-scope \
--scope example-akv-scope \
--scope-backend-type AZURE_KEYVAULT \
--resource-id /subscriptions/… \
--dns-name https://example-akv.vault.azure.net/

De toegangssleutel voor het opslagaccount opslaan in de Azure-sleutelkluis

  1. Ga in Azure Portal naar de service Sleutelkluizen.

  2. Selecteer de sleutelkluis die u hebt gemaakt in Stap 1: een Azure Key Vault maken.

  3. Klik Instellingen geheimenop Genereren/importeren.

  4. Selecteer de optie Handmatig uploaden en voer de toegangssleutel voor het opslagaccount in het veld Waarde in.

    Een geheim maken

Gebruik de Geheimen CLI om te controleren of het geheim is gemaakt:

databricks secrets list --scope example-akv-scope
Key name               Last updated
--------------------   --------------
example-adls2-secret   1605122724000

Verifiëren met de toegangssleutel

De manier waarop u referenties voor verificatie in stelt, is afhankelijk van of u de DataFrame- of Gegevensset-API of de RDD-API wilt gebruiken.

DataFrame of DataSet-API

Als u Spark DataFrame of Gegevensset-API's gebruikt, raadt Databricks u aan om uw accountreferenties in te stellen in de sessie-configuraties van uw notebook:

spark.conf.set(
    "fs.azure.account.key.<storage-account-name>.dfs.core.windows.net",
    dbutils.secrets.get(scope="<scope-name>",key="<storage-account-access-key-name>"))

Vervangen

  • <storage-account-name> door de ADLS Gen2 naam van het opslagaccount.
  • <scope-name> door de Azure Databricks naam van het geheime bereik.
  • <storage-account-access-key-name> door de naam van de sleutel die de toegangssleutel voor het Azure-opslagaccount bevat.

RDD-API

Als u de RDD API gebruikt voor toegang tot ADLS Gen2, hebt u geen toegang tot hadoop-configuratieopties die zijn ingesteld met spark.conf.set() . U moet de referenties instellen met een van de volgende methoden:

  • Geef de Hadoop-configuratieopties op als Spark-configuraties wanneer u het cluster maakt. U moet het voorvoegsel toevoegen aan de bijbehorende Hadoop-configuratiesleutels om ze door te geven aan de spark.hadoop. Hadoop-configuraties voor uw RDD-taken:

    spark.hadoop.fs.azure.account.key.<storage-account-name>.dfs.core.windows.net <storage-account-access-key>
    

    Vervangen

    • <storage-account-name> door de ADLS Gen2 naam van het opslagaccount.
    • <storage-account-access-key> met de toegangssleutel die u hebt opgehaald in <storage-account-access-key>

    Waarschuwing

    Deze referenties zijn beschikbaar voor alle gebruikers die toegang hebben tot het cluster.

  • Scala-gebruikers kunnen de referenties instellen in spark.sparkContext.hadoopConfiguration :

    spark.sparkContext.hadoopConfiguration.set("fs.azure.account.key.<storage-account-name>.dfs.core.windows.net", "<storage-account-access-key>")
        dbutils.secrets.get(scope="<scope-name>",
        key="<storage-account-access-key-name>")
    )
    

Vervangen

  • <storage-account-name> door de ADLS Gen2 naam van het opslagaccount.
  • <scope-name> door de Azure Databricks naam van het geheime bereik.
  • <storage-account-access-key-name> door de naam van de sleutel die de toegangssleutel voor het Azure-opslagaccount bevat.

Een container maken

Net als directories in een bestandssysteem bieden containers een manier om objecten in een Azure-opslagaccount te organiseren. U moet een of meer containers maken voordat u toegang hebt tot een ADLS Gen2-opslagaccount.

U kunt een container rechtstreeks vanuit een Azure Databricks maken door de volgende opdrachten uit te voeren. Verwijder de eerste instructie als u de instructies in Verifiëren met de toegangssleutel al hebt gevolgd.

spark.conf.set(
   "fs.azure.account.key.<storage-account-name>.dfs.core.windows.net",
   dbutils.secrets.get(scope="<scope-name>",
   key="<storage-account-access-key-name>"))
spark.conf.set("fs.azure.createRemoteFileSystemDuringInitialization", "true")
dbutils.fs.ls("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/")
spark.conf.set("fs.azure.createRemoteFileSystemDuringInitialization", "false")

Vervangen

  • <storage-account-name> door de ADLS Gen2 naam van het opslagaccount.
  • <scope-name> door de Azure Databricks naam van het geheime bereik.
  • <storage-account-access-key-name> door de naam van de sleutel die de toegangssleutel voor het Azure-opslagaccount bevat.
  • <container-name> door de naam voor de nieuwe container.

U kunt ook een container maken via de Azure-opdrachtregelinterface, de Azure-API of de Azure Portal. Een container maken in de portal:

  1. Ga in Azure Portal naar Storage accounts.

  2. Selecteer uw ADLS Gen2 account en klik op Containers.

  3. Klik op + Container.

  4. Voer een naam in voor de container en klik op Maken.

    Een container maken

Toegang ADLS Gen2 opslag

Na de authenticatie bij het ADLS Gen2 opslagaccount, kunt u standaard Spark- en Databricks-API's gebruiken om gegevens uit het account te lezen:


val df = spark.read.parquet("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<directory-name>")
dbutils.fs.ls("abfss://<file-system-name>@<storage-account-name>.dfs.core.windows.net/<directory-name>")

Voorbeeld van notebook

In dit notebook wordt het gebruik van een toegangssleutel voor opslagaccounts gedemonstreerd voor:

  1. Verifiëren bij een ADLS Gen2 opslagaccount.
  2. Maak een nieuwe container in het opslagaccount.
  3. Schrijf een JSON-bestand met IoT-gegevens (Internet of Things) naar de nieuwe container.
  4. Lijst met bestanden in de container.
  5. Lees en geef het IoT-bestand uit de container weer.

Aan de slag met ADLS Gen2 notebook

Notebook downloaden