Kurz: Připojení Dataverse k Azure Data Lake Storage Gen2

Poznámka:

Tento článek popisuje starší vzory konfigurace přístupu ke službě Azure Data Lake Storage Gen2. Databricks doporučuje používat katalog Unity. Viz Vytvoření metastoru katalogu Unity a Připojení do cloudového úložiště objektů pomocí katalogu Unity.

Tento kurz vás provede všemi kroky potřebnými k připojení z Azure Databricks k Azure Data Lake Storage Gen2 pomocí OAuth 2.0 s instančním objektem Microsoft Entra ID.

Požadavky

Než začnete s tímto kurzem, proveďte tyto úkoly:

Krok 1: Vytvoření instančního objektu Microsoft Entra ID

Pokud chcete použít instanční objekty pro připojení k Azure Data Lake Storage Gen2, musí uživatel správce vytvořit novou aplikaci Microsoft Entra ID (dříve Azure Active Directory). Pokud už máte k dispozici instanční objekt Microsoft Entra ID, přeskočte k kroku 2: Vytvoření tajného klíče klienta pro instanční objekt.

Pokud chcete vytvořit instanční objekt Microsoft Entra ID, postupujte podle těchto pokynů:

  1. Přihlaste se k portálu Azure.

    Poznámka:

    Portál, který se má použít, se liší v závislosti na tom, jestli vaše aplikace Microsoft Entra ID běží ve veřejném cloudu Azure nebo v národním nebo suverénním cloudu. Další informace najdete v tématu Národní cloudy.

  2. Pokud máte přístup k více tenantům, předplatným nebo adresářům, klikněte v horní nabídce na ikonu Adresáře a předplatná (adresář s filtrem) a přepněte do adresáře, ve kterém chcete zřídit instanční objekt.

  3. Vyhledejte a vyberte <Microsoft Entra ID.

  4. Ve správě klikněte na Registrace aplikací > Nová registrace.

  5. Jako Název zadejte název aplikace.

  6. V části Podporované typy účtů vyberte Účty pouze v tomto organizačním adresáři (jeden tenant).

  7. Klikněte na Zaregistrovat.

Krok 2: Vytvoření tajného klíče klienta pro instanční objekt

  1. Ve správě klikněte na Certifikáty a tajné kódy.

  2. Na kartě Tajné kódy klienta klikněte na Nový tajný klíč klienta.

    Nový tajný klíč klienta

  3. V podokně Přidat tajný klíč klienta zadejte popis tajného klíče klienta.

  4. V případě vypršení platnosti vyberte časové období vypršení platnosti tajného klíče klienta a klikněte na tlačítko Přidat.

  5. Zkopírujte a uložte hodnotu tajného klíče klienta na bezpečném místě, protože tento tajný klíč klienta je heslo pro vaši aplikaci.

  6. Na stránce Přehled stránky aplikace zkopírujte v části Základy následující hodnoty:

    • ID aplikace (klienta)
    • ID adresáře (tenanta)

    Přehled zaregistrovaných aplikací Azure

Krok 3: Udělení přístupu instančního objektu k Azure Data Lake Storage Gen2

Přístup k prostředkům úložiště udělíte přiřazením rolí k instančnímu objektu. V tomto kurzu přiřadíte přispěvatel dat objektů blob služby Storage instančnímu objektu ve vašem účtu Azure Data Lake Storage Gen2. V závislosti na konkrétních požadavcích možná budete muset přiřadit jiné role.

  1. Na webu Azure Portal přejděte do služby Účty úložiště.
  2. Vyberte účet úložiště Azure, který chcete použít.
  3. Klikněte na Řízení přístupu (IAM).
  4. V rozevírací nabídce klikněte na + Přidat a vyberte Přidat přiřazení role.
  5. Nastavte pole Vybrat na název aplikace Microsoft Entra ID, kterou jste vytvořili v kroku 1, a nastavte roli na Přispěvatel dat objektů blob služby Storage.
  6. Klikněte na Uložit.

Krok 4: Přidání tajného klíče klienta do služby Azure Key Vault

Tajný klíč klienta můžete uložit v kroku 1 ve službě Azure Key Vault.

  1. Na webu Azure Portal přejděte do služby Key Vault .
  2. Vyberte službu Azure Key Vault, která se má použít.
  3. Na stránkách nastavení služby Key Vault vyberte Tajné kódy.
  4. Klikněte na + Generovat/Importovat.
  5. V možnostech nahrání vyberte Ručně.
  6. Do pole Název zadejte název tajného kódu. Název tajného kódu musí být v rámci služby Key Vault jedinečný.
  7. Jako hodnotu vložte tajný klíč klienta, který jste uložili v kroku 1.
  8. Klikněte na Vytvořit.

Krok 5: Vytvoření oboru tajných kódů založených na službě Azure Key Vault v pracovním prostoru Azure Databricks

Pokud chcete odkazovat na tajný klíč klienta uložený ve službě Azure Key Vault, můžete vytvořit obor tajných kódů založený na službě Azure Key Vault v Azure Databricks.

  1. Přejděte na https://<databricks-instance>#secrets/createScope. V této adrese URL se rozlišují malá a velká písmena; createScope musí být velkými písmeny.

    Vytvoření oboru

  2. Zadejte název oboru tajného kódu. V názvech rozsahů tajných kódů se nerozlišují malá a velká písmena.

  3. Pomocí rozevírací nabídky Spravovat objekt zabezpečení určete, jestli mají MANAGE všichni uživatelé oprávnění k tomuto oboru tajných kódů, nebo jenom autor oboru tajného kódu (to znamená, že jste).

  4. Zadejte název DNS (napříkladhttps://databrickskv.vault.azure.net/) a ID prostředku, například:

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

    Tyto vlastnosti jsou k dispozici na kartě Vlastnosti služby Azure Key Vault na webu Azure Portal.

    Karta Vlastnosti služby Azure Key Vault

  5. Klikněte na tlačítko Vytvořit.

Krok 6: Připojení do Azure Data Lake Storage Gen2 pomocí Pythonu

Teď můžete bezpečně přistupovat k datům v účtu úložiště Azure pomocí OAuth 2.0 s instančním objektem aplikace Microsoft Entra ID pro ověřování z poznámkového bloku Azure Databricks.

  1. Přejděte do pracovního prostoru Azure Databricks a vytvořte nový poznámkový blok Pythonu.

  2. Spuštěním následujícího kódu Pythonu s níže náhražkovými náhradami se připojte k 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")
    

    Nahradit

    • <scope> s názvem oboru tajného kódu z kroku 5.
    • <service-credential-key> s názvem klíče obsahujícího tajný klíč klienta.
    • <storage-account> s názvem účtu úložiště Azure.
    • <application-id>s ID aplikace (klienta) pro aplikaci Microsoft Entra ID.
    • <directory-id>s ID adresáře (tenanta) pro aplikaci Microsoft Entra ID.

    Pracovní prostor Azure Databricks jste teď úspěšně připojili ke svému účtu Azure Data Lake Storage Gen2.

Udělení přístupu k pracovnímu prostoru Azure Databricks ke službě Azure Data Lake Storage Gen2

Pokud nakonfigurujete bránu firewall ve službě Azure Data Lake Storage Gen2, musíte nakonfigurovat nastavení sítě, aby se váš pracovní prostor Azure Databricks mohl připojit k Azure Data Lake Storage Gen2. Nejprve se ujistěte, že je váš pracovní prostor Azure Databricks nasazený ve vaší vlastní virtuální síti, a to po nasazení Azure Databricks ve virtuální síti Azure (injektáž virtuální sítě). Pak můžete nakonfigurovat privátní koncové body nebo přístup z virtuální sítě , aby umožňovaly připojení z vašich podsítí k vašemu účtu Azure Data Lake Storage Gen2.

Pokud používáte bezserverové výpočetní prostředky, jako jsou bezserverové služby SQL Warehouse, musíte udělit přístup z bezserverové výpočetní roviny do Azure Data Lake Storage Gen2. Viz Sítě bezserverové výpočetní roviny.

Udělení přístupu pomocí privátních koncových bodů

Privátní koncové body pro svůj účet Azure Data Lake Storage Gen2 můžete použít k tomu, aby váš pracovní prostor Azure Databricks mohl bezpečně přistupovat k datům přes privátní propojení.

Pokud chcete vytvořit privátní koncový bod pomocí webu Azure Portal, přečtěte si kurz: Připojení k účtu úložiště pomocí privátního koncového bodu Azure. Ujistěte se, že chcete vytvořit privátní koncový bod ve stejné virtuální síti, ve které je nasazený váš pracovní prostor Azure Databricks.

Udělení přístupu z virtuální sítě

Koncové body služby pro virtuální síť umožňují zabezpečit důležité prostředky služby Azure pouze pro vaše virtuální sítě. Koncový bod služby pro Azure Storage můžete povolit v rámci virtuální sítě, kterou jste použili pro pracovní prostor Azure Databricks.

Další informace, včetně Azure CLI a pokynů k PowerShellu, najdete v tématu Udělení přístupu z virtuální sítě.

  1. Přihlaste se k webu Azure Portal jako uživatel s rolí Přispěvatel účtu úložiště ve vašem účtu Azure Data Lake Storage Gen2.
  2. Přejděte ke svému účtu Azure Storage a přejděte na kartu Sítě .
  3. Zkontrolujte, že jste vybrali možnost povolit přístup z vybraných virtuálních sítí a IP adres.
  4. V části Virtuální sítě vyberte Přidat existující virtuální síť.
  5. Na bočním panelu v části Předplatné vyberte předplatné, ve které je vaše virtuální síť.
  6. V části Virtuální sítě vyberte virtuální síť, ve které je nasazený váš pracovní prostor Azure Databricks.
  7. V části Podsítě vyberte Vybrat vše.
  8. Klikněte na Povolit.
  9. Výběrem možnosti Uložit se vaše změny uplatní.

Řešení problému

Chyba: IllegalArgumentException: Tajný kód neexistuje s oborem: KeyVaultScope a klíč

Tato chyba pravděpodobně znamená:

  • Obor založený na Databricks, na který se odkazuje v kódu, není platný.

Zkontrolujte název tajného kódu z kroku 4 v tomto článku.

Chyba: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_STATE: Databricks nemohl získat přístup ke službě KeyVault

Tato chyba pravděpodobně znamená:

  • Obor založený na Databricks, na který se odkazuje v kódu, není platný. nebo vypršela platnost tajného kódu uloženého ve službě Key Vault.

Projděte si krok 3 a ujistěte se, že je tajný klíč služby Azure Key Vault platný. Zkontrolujte název tajného kódu z kroku 4 v tomto článku.

Chyba: ADAuthenticator$HttpException: Chyba HTTP 401: Token selhal pro získání tokenu z odpovědi AzureAD

Tato chyba pravděpodobně znamená:

  • Platnost tajného klíče klienta instančního objektu vypršela.

Vytvořte nový tajný klíč klienta podle kroku 2 v tomto článku a aktualizujte tajný kód ve službě Azure Key Vault.

Zdroje informací