Samouczek: Połącz Dataverse z Azure Data Lake Storage Gen2

Uwaga

W tym artykule opisano starsze wzorce konfigurowania dostępu do usługi Azure Data Lake Storage Gen2. Usługa Databricks zaleca korzystanie z wykazu aparatu Unity. Zobacz Tworzenie magazynu metadanych wykazu aparatu Unity i Połączenie do magazynu obiektów w chmurze przy użyciu wykazu aparatu Unity.

Ten samouczek przeprowadzi Cię przez wszystkie kroki niezbędne do nawiązania połączenia z usługi Azure Databricks z usługą Azure Data Lake Storage Gen2 przy użyciu protokołu OAuth 2.0 z jednostką usługi Microsoft Entra ID.

Wymagania

Przed rozpoczęciem tego samouczka wykonaj następujące zadania:

Krok 1. Tworzenie jednostki usługi Microsoft Entra ID

Aby używać jednostek usługi do nawiązywania połączenia z usługą Azure Data Lake Storage Gen2, administrator musi utworzyć nową aplikację Microsoft Entra ID (dawniej Azure Active Directory). Jeśli masz już dostępną jednostkę usługi Microsoft Entra ID, przejdź do kroku 2: Tworzenie wpisu tajnego klienta dla jednostki usługi.

Aby utworzyć jednostkę usługi Microsoft Entra ID, wykonaj następujące instrukcje:

  1. Zaloguj się w witrynie Azure Portal.

    Uwaga

    Portal, który ma być używany, różni się w zależności od tego, czy aplikacja Microsoft Entra ID działa w chmurze publicznej platformy Azure, czy w chmurze krajowej lub suwerennej. Aby uzyskać więcej informacji, zobacz Chmury krajowe.

  2. Jeśli masz dostęp do wielu dzierżaw, subskrypcji lub katalogów, kliknij ikonę Katalogi i subskrypcje (katalog z filtrem) w górnym menu, aby przełączyć się do katalogu, w którym chcesz aprowizować jednostkę usługi.

  3. Wyszukaj i wybierz <Tożsamość Microsoft Entra.

  4. W obszarze Zarządzanie kliknij pozycję Rejestracje aplikacji > Nowa rejestracja.

  5. W polu Nazwa wprowadź nazwę aplikacji.

  6. W sekcji Obsługiwane typy kont wybierz pozycję Konta w tym katalogu organizacyjnym (tylko jedna dzierżawa).

  7. Kliknij pozycję Zarejestruj.

Krok 2. Tworzenie wpisu tajnego klienta dla jednostki usługi

  1. W obszarze Zarządzanie kliknij pozycję Certyfikaty i wpisy tajne.

  2. Na karcie Wpisy tajne klienta kliknij pozycję Nowy klucz tajny klienta.

    Nowy wpis tajny klienta

  3. W okienku Dodawanie wpisu tajnego klienta w polu Opis wprowadź opis wpisu tajnego klienta.

  4. W obszarze Wygasa wybierz okres wygaśnięcia wpisu tajnego klienta, a następnie kliknij przycisk Dodaj.

  5. Skopiuj i zapisz wartość wpisu tajnego klienta w bezpiecznym miejscu, ponieważ ten klucz tajny klienta jest hasłem dla aplikacji.

  6. Na stronie Przegląd aplikacji w sekcji Podstawy skopiuj następujące wartości:

    • Identyfikator aplikacji (klienta)
    • Identyfikator katalogu (dzierżawy)

    Omówienie zarejestrowanej aplikacji platformy Azure

Krok 3. Udzielanie jednostce usługi dostępu do usługi Azure Data Lake Storage Gen2

Dostęp do zasobów magazynu można udzielić, przypisując role do jednostki usługi. W tym samouczku przypiszesz współautora danych obiektu blob usługi Storage do jednostki usługi na koncie usługi Azure Data Lake Storage Gen2. Może być konieczne przypisanie innych ról w zależności od określonych wymagań.

  1. W witrynie Azure Portal przejdź do usługi Konta magazynu.
  2. Wybierz konto usługi Azure Storage do użycia.
  3. Kliknij pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami).
  4. Kliknij pozycję + Dodaj i wybierz pozycję Dodaj przypisanie roli z menu rozwijanego.
  5. Ustaw pole Wybierz na nazwę aplikacji Microsoft Entra ID, która została utworzona w kroku 1, i ustaw pozycję Rola na Współautor danych obiektu blob usługi Storage.
  6. Kliknij przycisk Zapisz.

Krok 4. Dodawanie wpisu tajnego klienta do usługi Azure Key Vault

Wpis tajny klienta można przechowywać w kroku 1 w usłudze Azure Key Vault.

  1. W witrynie Azure Portal przejdź do usługi Key Vault .
  2. Wybierz usługę Azure Key Vault do użycia.
  3. Na stronach ustawień usługi Key Vault wybierz pozycję Wpisy tajne.
  4. Kliknij pozycję + Generuj/Importuj.
  5. W obszarze Opcje przekazywania wybierz pozycję Ręczne.
  6. W polu Nazwa wprowadź nazwę wpisu tajnego. Nazwa wpisu tajnego musi być unikatowa w usłudze Key Vault.
  7. W polu Wartość wklej klucz tajny klienta przechowywany w kroku 1.
  8. Kliknij pozycję Utwórz.

Krok 5. Tworzenie zakresu wpisów tajnych opartych na usłudze Azure Key Vault w obszarze roboczym usługi Azure Databricks

Aby odwołać się do wpisu tajnego klienta przechowywanego w usłudze Azure Key Vault, możesz utworzyć zakres wpisów tajnych wspierany przez usługę Azure Key Vault w usłudze Azure Databricks.

  1. Przejdź do https://<databricks-instance>#secrets/createScope. W tym adresie URL jest uwzględniana wielkość liter; zakres w createScope musi być wielkimi literami.

    Tworzenie zakresu

  2. Wprowadź nazwę zakresu wpisu tajnego. W nazwach zakresów wpisów tajnych nie jest rozróżniana wielkość liter.

  3. Użyj menu rozwijanego Zarządzaj podmiotem zabezpieczeń , aby określić, czy wszyscy użytkownicy mają MANAGE uprawnienia do tego zakresu wpisu tajnego, czy tylko Twórca zakresu wpisu tajnego (to znaczy Ty).

  4. Wprowadź nazwę DNS (na przykład https://databrickskv.vault.azure.net/) i identyfikator zasobu, na przykład:

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

    Te właściwości są dostępne na karcie Właściwości usługi Azure Key Vault w witrynie Azure Portal.

    Karta Właściwości usługi Azure Key Vault

  5. Kliknij przycisk Utwórz.

Krok 6. Połączenie do usługi Azure Data Lake Storage Gen2 przy użyciu języka Python

Teraz możesz bezpiecznie uzyskiwać dostęp do danych na koncie usługi Azure Storage przy użyciu protokołu OAuth 2.0 z jednostką usługi aplikacji Microsoft Entra ID na potrzeby uwierzytelniania z poziomu notesu usługi Azure Databricks.

  1. Przejdź do obszaru roboczego usługi Azure Databricks i utwórz nowy notes języka Python.

  2. Uruchom następujący kod w języku Python, zastępując poniższe elementy, aby nawiązać połączenie z usługą 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> z nazwą zakresu wpisu tajnego z kroku 5.
    • <service-credential-key> z nazwą klucza zawierającego klucz tajny klienta.
    • <storage-account> z nazwą konta usługi Azure Storage.
    • <application-id>z identyfikatorem aplikacji (klienta) dla aplikacji Microsoft Entra ID.
    • <directory-id>z identyfikatorem katalogu (dzierżawy) dla aplikacji Microsoft Entra ID.

    Teraz pomyślnie połączono obszar roboczy usługi Azure Databricks z kontem usługi Azure Data Lake Storage Gen2.

Udzielanie obszarowi roboczemu usługi Azure Databricks dostępu do usługi Azure Data Lake Storage Gen2

Jeśli skonfigurujesz zaporę w usłudze Azure Data Lake Storage Gen2, musisz skonfigurować ustawienia sieci, aby umożliwić obszarowi roboczemu usługi Azure Databricks nawiązywanie połączenia z usługą Azure Data Lake Storage Gen2. Najpierw upewnij się, że obszar roboczy usługi Azure Databricks został wdrożony we własnej sieci wirtualnej, a następnie wdróż usługę Azure Databricks w sieci wirtualnej platformy Azure (iniekcja sieci wirtualnej).Najpierw upewnij się, że obszar roboczy usługi Azure Databricks jest wdrożony we własnej sieci wirtualnej. Następnie można skonfigurować prywatne punkty końcowe lub dostęp z sieci wirtualnej, aby zezwolić na połączenia z podsieci do konta usługi Azure Data Lake Storage Gen2.

Jeśli używasz bezserwerowych obliczeń, takich jak bezserwerowe magazyny SQL, musisz udzielić dostępu z bezserwerowej płaszczyzny obliczeniowej do usługi Azure Data Lake Storage Gen2. Zobacz Sieć bezserwerowej płaszczyzny obliczeniowej.

Udzielanie dostępu przy użyciu prywatnych punktów końcowych

Możesz użyć prywatnych punktów końcowych dla konta usługi Azure Data Lake Storage Gen2, aby umożliwić obszarowi roboczemu usługi Azure Databricks bezpieczny dostęp do danych za pośrednictwem łącza prywatnego.

Aby utworzyć prywatny punkt końcowy przy użyciu witryny Azure Portal, zobacz Samouczek: Połączenie do konta magazynu przy użyciu prywatnego punktu końcowego platformy Azure. Upewnij się, że utworzono prywatny punkt końcowy w tej samej sieci wirtualnej, w ramach którego wdrożono obszar roboczy usługi Azure Databricks.

Udzielanie dostępu z sieci wirtualnej

Punkty końcowe usługi dla sieci wirtualnej umożliwiają zabezpieczanie krytycznych zasobów usługi platformy Azure tylko do sieci wirtualnych. Punkt końcowy usługi dla usługi Azure Storage można włączyć w sieci wirtualnej, która była używana w obszarze roboczym usługi Azure Databricks.

Aby uzyskać więcej informacji, w tym instrukcje dotyczące interfejsu wiersza polecenia platformy Azure i programu PowerShell, zobacz Udzielanie dostępu z sieci wirtualnej.

  1. Zaloguj się do witryny Azure Portal jako użytkownik z rolą Współautor konta magazynu na koncie usługi Azure Data Lake Storage Gen2.
  2. Przejdź do konta usługi Azure Storage i przejdź do karty Sieć .
  3. Sprawdź, czy wybrano opcję zezwalania na dostęp z wybranych sieci wirtualnych i adresów IP.
  4. W obszarze Sieci wirtualne wybierz pozycję Dodaj istniejącą sieć wirtualną.
  5. W panelu bocznym w obszarze Subskrypcja wybierz subskrypcję, w ramach którego znajduje się sieć wirtualna.
  6. W obszarze Sieci wirtualne wybierz sieć wirtualną, w ramach którego wdrożono obszar roboczy usługi Azure Databricks.
  7. W obszarze Podsieci wybierz pozycję Wybierz wszystko.
  8. Kliknij przycisk Włącz.
  9. Wybierz pozycję Zapisz, aby zastosować zmiany.

Rozwiązywanie problemów

Błąd: IllegalArgumentException: Wpis tajny nie istnieje z zakresem: KeyVaultScope i klucz

Ten błąd prawdopodobnie oznacza:

  • Zakres oparty na usłudze Databricks, o którym mowa w kodzie, jest nieprawidłowy.

Przejrzyj nazwę wpisu tajnego z kroku 4 w tym artykule.

Błąd: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_STATE: Usługa Databricks nie może uzyskać dostępu do magazynu kluczy

Ten błąd prawdopodobnie oznacza:

  • Zakres oparty na usłudze Databricks, o którym mowa w kodzie, jest nieprawidłowy. lub wpis tajny przechowywany w usłudze Key Vault wygasł.

Przejrzyj krok 3, aby upewnić się, że wpis tajny usługi Azure Key Vault jest prawidłowy. Przejrzyj nazwę wpisu tajnego z kroku 4 w tym artykule.

Błąd: ADAuthenticator$HttpException: Błąd HTTP 401: token nie może uzyskać tokenu z odpowiedzi usługi AzureAD

Ten błąd prawdopodobnie oznacza:

  • Klucz tajny klienta jednostki usługi wygasł.

Utwórz nowy wpis tajny klienta w kroku 2 w tym artykule i zaktualizuj wpis tajny w usłudze Azure Key Vault.

Zasoby