Öğretici: Azure Data Lake Storage 2. Nesil'e bağlanma

Not

Bu makalede, Azure Data Lake Storage 2. Nesil erişimi yapılandırmaya yönelik eski desenler açıklanmaktadır. Databricks, Unity Kataloğu'nu kullanmanızı önerir. Bkz. Unity Kataloğu meta veri deposu oluşturma ve Unity Kataloğu'nu kullanarak bulut nesne depolamasına Bağlan.

Bu öğretici, Microsoft Entra ID hizmet sorumlusuyla OAuth 2.0 kullanarak Azure Databricks'ten Azure Data Lake Storage 2. Nesil bağlanmak için gereken tüm adımlarda size yol gösterir.

Gereksinimler

Bu öğreticiye başlamadan önce bu görevleri tamamlayın:

1. Adım: Microsoft Entra ID hizmet sorumlusu oluşturma

Hizmet sorumlularını kullanarak Azure Data Lake Storage 2. Nesil bağlanmak için yönetici kullanıcının yeni bir Microsoft Entra Id (eski adıYla Azure Active Directory) uygulaması oluşturması gerekir. Zaten bir Microsoft Entra Id hizmet sorumlunuz varsa, 2. Adım: Hizmet sorumlunuz için istemci gizli dizisi oluşturma bölümüne atlayın.

Microsoft Entra ID hizmet sorumlusu oluşturmak için şu yönergeleri izleyin:

  1. Azure Portal’ında oturum açın.

    Not

    Kullanılacak portal, Microsoft Entra ID uygulamanızın Azure genel bulutunda mı yoksa ulusal veya bağımsız bir bulutta mı çalıştığına bağlı olarak farklılık gösterir. Daha fazla bilgi için bkz . Ulusal bulutlar.

  2. Birden çok kiracıya, aboneliğe veya dizine erişiminiz varsa, üst menüdeki Dizinler + abonelikler (filtreli dizin) simgesine tıklayarak hizmet sorumlusunu sağlamak istediğiniz dizine geçin.

  3. <Microsoft Entra ID öğesini arayıp seçin.

  4. Yönet'te Yeni kayıt Uygulama kayıtları'e > tıklayın.

  5. Ad alanına uygulama için bir ad girin.

  6. Desteklenen hesap türleri bölümünde Yalnızca bu kuruluş dizinindeki hesaplar (Tek kiracı) öğesini seçin.

  7. Kaydet’e tıklayın.

2. Adım: Hizmet sorumlunuz için bir istemci gizli dizisi oluşturma

  1. Yönet'te Sertifikalar ve gizli diziler'e tıklayın.

  2. İstemci gizli dizileri sekmesinde Yeni istemci gizli dizisi'ne tıklayın.

    Yeni gizli anahtar

  3. İstemci gizli dizisi ekle bölmesinde, Açıklama için istemci gizli dizisi için bir açıklama girin.

  4. Süre Sonu için, istemci gizli dizisi için bir süre sonu süresi seçin ve ekle'ye tıklayın.

  5. Bu istemci gizli dizisi uygulamanızın parolası olduğundan istemci gizli dizisinin Değerini kopyalayın ve güvenli bir yerde depolayın.

  6. Uygulama sayfasının Genel Bakış sayfasının Temel Parçalar bölümünde aşağıdaki değerleri kopyalayın:

    • Uygulama (istemci) kimliği
    • Dizin (kiracı) kimliği

    Azure kayıtlı uygulamaya genel bakış

3. Adım: Hizmet sorumlusuna Azure Data Lake Storage 2. Nesil erişimi verme

Hizmet sorumlunuza roller atayarak depolama kaynaklarına erişim verirsiniz. Bu öğreticide, Azure Data Lake Storage 2. Nesil hesabınızdaki hizmet sorumlusuna Depolama Blob Verileri Katkıda Bulunanı'nı atarsınız. Belirli gereksinimlere bağlı olarak başka roller atamanız gerekebilir.

  1. Azure portalında Depolama hesapları hizmetine gidin.
  2. Kullanılacak azure depolama hesabını seçin.
  3. Erişim Denetimi (IAM) öğesine tıklayın.
  4. + Ekle'ye tıklayın ve açılan menüden Rol ataması ekle'yi seçin.
  5. Select alanını, 1. adımda oluşturduğunuz Microsoft Entra Id uygulama adı olarak ayarlayın ve Roledeğerini blob veri katkıda bulunanı Depolama olarak ayarlayın.
  6. Kaydet'e tıklayın.

4. Adım: İstemci gizli dizisini Azure Key Vault'a ekleme

1. adımdaki istemci gizli dizisini Azure Key Vault'ta depolayabilirsiniz.

  1. Azure portalında Anahtar kasası hizmetine gidin.
  2. Kullanmak için bir Azure Key Vault seçin.
  3. Key Vault ayarları sayfalarında Gizli Diziler'i seçin.
  4. + Oluştur/İçeri Aktar'a tıklayın.
  5. Karşıya yükleme seçenekleri'nde El ile'yi seçin.
  6. Ad alanına gizli dizi için bir ad girin. Gizli dizi adı, aynı Anahtar Kasası içinde benzersiz bir ad olmalıdır.
  7. Değer için, 1. Adımda depoladığınız İstemci Gizli Dizisini yapıştırın.
  8. Oluştur’a tıklayın.

5. Adım: Azure Databricks çalışma alanınızda Azure Key Vault destekli gizli dizi kapsamı oluşturma

Azure Key Vault'ta depolanan istemci gizli dizisine başvurmak için Azure Databricks'te Azure Key Vault tarafından yedeklenen bir gizli dizi kapsamı oluşturabilirsiniz.

  1. Şuraya git: https://<databricks-instance>#secrets/createScope. Bu URL büyük/küçük harfe duyarlıdır; içindeki createScope kapsamı büyük harf olmalıdır.

    Kapsam oluşturma

  2. Gizli dizi kapsamının adını girin. Gizli dizi kapsam adları büyük/küçük harfe duyarlı değildir.

  3. Tüm Kullanıcılar'ın bu gizli dizi kapsamı için izni olup olmadığını veya yalnızca gizli dizi kapsamının Oluşturucusu'na (siz) sahip MANAGE olup olmadığını belirtmek için Sorumluyu Yönet açılan menüsünü kullanın.

  4. DNS Adını (örneğin, https://databrickskv.vault.azure.net/) ve Kaynak Kimliğini girin, örneğin:

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

    Bu özellikler, Azure portalınızdaki bir Azure Key Vault'un Özellikler sekmesinden kullanılabilir.

    Azure Key Vault Özellikleri sekmesi

  5. Oluştur düğmesine tıklayın.

6. Adım: Python kullanarak Azure Data Lake Storage 2. Nesil Bağlan

Artık Azure Databricks not defterinden kimlik doğrulaması için Microsoft Entra ID uygulama hizmet sorumlunuzla OAuth 2.0 kullanarak Azure depolama hesabındaki verilere güvenli bir şekilde erişebilirsiniz.

  1. Azure Databricks çalışma alanınıza gidin ve yeni bir Python not defteri oluşturun.

  2. Azure Data Lake Storage 2. Nesil bağlanmak için aşağıdaki python kodunu aşağıdaki değiştirmelerle çalıştırın.

    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> 5. adımdaki gizli dizi kapsamı adıyla.
    • <service-credential-key> istemci gizli dizisini içeren anahtarın adıyla.
    • <storage-account> azure depolama hesabının adıyla birlikte.
    • <application-id>Microsoft Entra ID uygulamasının Uygulama (istemci) kimliğiyle.
    • <directory-id> Microsoft Entra Id uygulamasının Dizin (kiracı) kimliğiyle .

    Artık Azure Databricks çalışma alanınızı Azure Data Lake Storage 2. Nesil hesabınıza başarıyla bağladınız.

Azure Databricks çalışma alanınıza Azure Data Lake Storage 2. Nesil erişimi verme

Azure Data Lake Storage 2. Nesil bir güvenlik duvarı yapılandırıyorsanız Azure Databricks çalışma alanınızın Azure Data Lake Storage 2. Nesil bağlanmasına izin vermek için ağ ayarlarını yapılandırmanız gerekir. İlk olarak, Azure Databricks'i Azure sanal ağınıza dağıtma (VNet ekleme) sonrasında Azure Databricks çalışma alanınızın kendi sanal ağınıza dağıtıldığından emin olun. Ardından, alt ağlarınızdan Azure Data Lake Storage 2. Nesil hesabınıza bağlantılara izin vermek için özel uç noktaları veya sanal ağınızdan erişimi yapılandırabilirsiniz.

Sunucusuz SQL ambarları gibi sunucusuz işlem kullanıyorsanız sunucusuz işlem düzleminden Azure Data Lake Storage 2. Nesil erişim vermelisiniz. Bkz. Sunucusuz işlem düzlemi ağı.

Özel uç noktaları kullanarak erişim verme

Azure Databricks çalışma alanınızın özel bağlantı üzerinden verilere güvenli bir şekilde erişmesini sağlamak için Azure Data Lake Storage 2. Nesil hesabınız için özel uç noktaları kullanabilirsiniz.

Azure Portal'ı kullanarak özel uç nokta oluşturmak için bkz. Öğretici: Azure Özel Uç Noktası kullanarak depolama hesabına Bağlan. Azure Databricks çalışma alanınızın dağıtılacağı sanal ağda özel uç nokta oluşturduğunuzdan emin olun.

Sanal ağınızdan erişim izni verme

Sanal Ağ hizmet uç noktaları, kritik Azure hizmet kaynaklarınızı yalnızca sanal ağlarınızla güvenlik altına almanızı sağlar. Azure Databricks çalışma alanınız için kullandığınız sanal ağ içinde Azure Depolama için bir hizmet uç noktasını etkinleştirebilirsiniz.

Azure CLI ve PowerShell yönergeleri de dahil olmak üzere daha fazla bilgi için bkz . Sanal ağdan erişim verme.

  1. Azure Data Lake Storage 2. Nesil hesabınızda Depolama Hesap Katkıda Bulunanı rolüne sahip bir kullanıcı olarak Azure Portal'da oturum açın.
  2. Azure Depolama hesabınıza gidin ve Ağ sekmesine gidin.
  3. Seçili sanal ağlardan ve IP adreslerinden erişime izin vermek için seçtiğinizi denetleyin.
  4. Sanal ağlar'ın altında Var olan sanal ağı ekle'yi seçin.
  5. Yan paneldeki Abonelik'in altında sanal ağınızın içinde yer alan aboneliği seçin.
  6. Sanal ağlar'ın altında Azure Databricks çalışma alanınızın dağıtılacağı sanal ağı seçin.
  7. Alt ağlar'ın altında Tümünü seç'i seçin.
  8. Etkinleştir’e tıklayın.
  9. Yaptığınız değişiklikleri uygulamak için Kaydet'i seçin.

Sorun giderme

Hata: IllegalArgumentException: Gizli dizi kapsamla yok: KeyVaultScope ve anahtar

Bu hata büyük olasılıkla şu anlama gelir:

  • Kodda başvuruda bulunan Databricks destekli kapsam geçerli değil.

Bu makaledeki 4. adımdaki gizli dizinizin adını gözden geçirin.

Hata: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_STATE: Databricks keyvault'a erişemedi

Bu hata büyük olasılıkla şu anlama gelir:

  • Kodda başvuruda bulunılan Databricks destekli kapsam geçerli değil. veya Key Vault'ta depolanan gizli dizinin süresi doldu.

Azure Key Vault gizli dizinizin geçerli olduğundan emin olmak için 3. adımı gözden geçirin. Bu makaledeki 4. adımdaki gizli dizinizin adını gözden geçirin.

Hata: ADAuthenticator$HttpException: HTTP Hatası 401: belirteç AzureAD yanıtından belirteç alınamadı

Bu hata büyük olasılıkla şu anlama gelir:

  • Hizmet sorumlusunun istemci gizli anahtarı süresi doldu.

Bu makaledeki 2. adımın ardından yeni bir istemci gizli dizisi oluşturun ve Azure Key Vault'unuzda gizli diziyi güncelleştirin.

Kaynaklar