Databricks'te Azure DevOps ile kimlik doğrulaması

Azure DevOps işlem hatlarınızı, otomasyonunuzda Databricks CLI komutları ve API çağrıları için kimlik doğrulaması sağlayacak şekilde yapılandırmayı öğrenin.

Azure DevOps kimlik doğrulaması

Azure DevOps'ta kimlik doğrulamasını (birinci taraf ve üçüncü taraf) yönetme işlemi hizmet bağlantılarıyla yapılır. Azure DevOps portalında, Proje ayarları altındaki herhangi bir proje sayfasında hizmet bağlantılarına erişebilirsiniz.

Azure DevOps'ta Proje ayarları'nın altında Hizmet bağlantıları'nı seçin

Databricks CLI kimliğini doğrulamak için Azure Resource Manager hizmet bağlantı türünü kullanın. Bu tür için aşağıdaki kimlik doğrulama yöntemlerinden birini seçin:

  • Microsoft Entra iş yükü kimliği federasyonu
    • Hizmet sorumlusu adına belirteçler almak için OpenID Connect (OIDC) protokolunu kullanır.
    • Azure DevOps tarafından oluşturulan sorunları ve konu tanımlayıcısını kullanmayı planladığınız hizmet sorumlusuyla yapılandırmanızı gerektirir.
    • Geçerli kimlik doğrulama mekanizması: Azure CLI.
  • Microsoft Entra hizmet sorumlusu
    • Kısa süreli bir OAuth belirteci oluşturmak için bir istemci kimliği ve MS Entra istemci gizli dizisi kullanır.
    • Hizmet bağlantısı için kullanmayı planladığınız hizmet sorumlusu için bir gizli dizi oluşturmanızı gerektirir.
    • Geçerli kimlik doğrulama mekanizmaları: Azure CLI, Microsoft Entra istemci gizli dizileri.
  • Microsoft Entra Id yönetilen kimliği
    • CLI'nın yürütüldiği kaynağa (işlem gibi) atanan kimliği kullanır. Azure DevOps bağlamında, bu yalnızca şirket içinde barındırılan runners kullanıyorsanız geçerlidir. Bkz. Yönetilen kimlik kullanan bir VM'ye Azure Resource Manager hizmet bağlantısı oluşturma.
    • Geçerli kimlik doğrulama mekanizmaları: Azure CLI, Microsoft Entra tarafından yönetilen kimlikler (eski adıyla "MSI").

Projenizin gereksinimlerine en uygun kimlik doğrulama mekanizmasını seçtikten sonra Azure DevOps işlem hattı tanımınızda (pipeline.yml) Azure Databricks CLI ile çalışacak şekilde yapılandırmanız gerekir.

Azure DevOps işlem hattınızı kimlik doğrulaması için Azure CLI'yi kullanacak şekilde yapılandırma

Varsayılan olarak, Azure Databricks CLI, Azure Databricks ile kimlik doğrulama mekanizması olarak Azure CLI'yi kullanır.

Kimlik doğrulaması için Azure CLI'nın kullanılması için Azure Databricks CLI'ya yapılan tüm çağrıların içinde AzureCLI@2 taskyapılması gerektiğini unutmayın. Bu, sonraki görevlerde kimliği doğrulanmış bir oturumu paylaşmanın hiçbir yolu olmadığı anlamına gelir. Her görev bağımsız olarak kimlik doğrulaması yapar ve bu da çalıştırılırken gecikme süresi sağlar.

Aşağıdaki Azure Pipelines örnek yapılandırması, Azure Databricks CLI komutunun kimliğini doğrulamak ve çalıştırmak için Azure CLI'yi bundle deploy kullanır:

- task: AzureCLI@2
  inputs:
    azureSubscription: {your-azure-subscription-id-here}
    useGlobalConfig: true
    scriptType: bash
    scriptLocation: inlineScript
    inlineScript: |
      export DATABRICKS_HOST=https://adb...
      databricks bundle deploy

Azure DevOps işlem hattınızı Azure Databricks CLI komutlarını çalıştırmak için Azure CLI kullanacak şekilde yapılandırırken aşağıdakileri yapın:

  • Kullanmak istediğiniz hizmet bağlantısını yapılandırmak için kullanın azureSubscription .
  • Komutlar alt işlemler için ortam değişkeni filtreleme kullandığından databricks bundle varsayılanı AZURE_CONFIG_FILE kullanacak şekilde yapılandırınuseGlobalConfig. Bu ayar yapılmazsa, bu alt işlemler kimliği doğrulanmış oturumun ayrıntılarını bulamaz.
  • Henüz dışarı aktarılmadıysa (önceki bir adımda veya paket yapılandırmasında olduğu gibi) ortam değişkenini dışarı aktarın DATABRICKS_HOST .

Azure DevOps işlem hattınızı kimlik doğrulaması için Microsoft Entra istemci gizli dizisini kullanacak şekilde yapılandırma

Azure CLI'yı çok fazla gecikme süresi eklediği için kimlik doğrulaması için kullanmak istemiyorsanız veya Azure CLI'yi farklı bir görev türünde kullanmanız gerektiğinden Microsoft Entra istemci gizli dizisini kullanın. Kimlik doğrulama ayrıntıları hizmet bağlantısından alınmalıdır, bu nedenle görevi işlem hattınızın bildiriminde kullanmanız AzureCLI@2 gerekir.

AzureCLI@2 Hizmet bağlantınızdan istemci kimliğini ve istemci gizli dizisini almak ve sonra bunları ortam değişkenleri olarak dışarı aktarmak için görevi kullanın. Sonraki görevler bunları doğrudan kullanabilir. Örnek için bkz . Databricks Git klasörlerini yönetmek için Microsoft Entra hizmet sorumlusu kullanma.

Aşağıdaki Azure Pipelines örnek yapılandırması, Azure Databricks CLI bundle deploy komutunun kimliğini doğrulamak ve çalıştırmak için bir Microsoft Entra istemci gizli dizisi kullanır:

- task: AzureCLI@2
  inputs:
    azureSubscription: {your-azure-subscription-id-here}
    addSpnToEnvironment: true
    scriptType: bash
    scriptLocation: inlineScript
    inlineScript: |
      echo "##vso[task.setvariable variable=ARM_CLIENT_ID]${servicePrincipalId}"
      echo "##vso[task.setvariable variable=ARM_CLIENT_SECRET]${servicePrincipalKey}"
      echo "##vso[task.setvariable variable=ARM_TENANT_ID]${tenantId}"

- script: |
    export DATABRICKS_HOST=https://adb...
    databricks bundle deploy

Azure DevOps işlem hattınızı Azure Databricks CLI komutlarını çalıştırmak için Microsoft Entra istemci gizli dizilerini kullanacak şekilde yapılandırırken aşağıdakileri yapın:

  • İlgili ortam değişkenlerini satır içi betikte dışarı aktaracak şekilde yapılandırın addSpnToEnvironment .
  • Satır içi betik, görev kapsamlı ortam değişkenlerini Azure Databricks CLI'nın otomatik olarak seçtiği adlar altında iş kapsamlı ortam değişkenleri olarak dışarı aktarır.
  • Henüz dışarı aktarılmadıysa (önceki bir adımda veya paket yapılandırmasında olduğu gibi) ortam değişkenini dışarı aktarın DATABRICKS_HOST .
  • Ortam değişkenini ARM_CLIENT_SECRET ile issecret=trueişaretlerseniz, bunu gerektiren sonraki her adıma açıkça eklemeniz gerekir.
    • Bunu yapmazsanız ortam değişkenine ARM_CLIENT_SECRET sonraki her adımda erişilebilir.
    • Ortam ARM_CLIENT_SECRET değişkeni, ayardan bağımsız olarak çıkışta maskelenmiştir.

Azure DevOps işlem hattınızı kimlik doğrulaması için Microsoft Entra yönetilen kimliği kullanacak şekilde yapılandırma

Azure yönetilen kimlik kimlik doğrulaması, Azure Databricks CLI'nın doğru kimlik altında yürütüleceğini garanti etmek için sanal makineye veya kapsayıcı yapılandırmasına bağlı olduğundan, Azure DevOps işlem hattı yapılandırmanız görevi belirtmenizi AzureCLI@2 gerektirmez.

Aşağıdaki Azure Pipelines örnek yapılandırması, Azure Databricks CLI bundle deploy komutunun kimliğini doğrulamak ve çalıştırmak için Microsoft Entra yönetilen kimliğini kullanır:

- script: |
    export DATABRICKS_AZURE_RESOURCE_ID=/subscriptions/<id>/resourceGroups/<name>/providers/Microsoft.Databricks/workspaces/<name>
    export ARM_CLIENT_ID=eda1f2c4-07cb-4c2c-a126-60b9bafee6d0
    export ARM_USE_MSI=true
    export DATABRICKS_HOST=https://adb...
    databricks current-user me --log-level trace

Azure DevOps işlem hattınızı Azure Databricks CLI komutlarını çalıştırmak için Microsoft Entra yönetilen kimliklerini kullanacak şekilde yapılandırırken aşağıdakileri yapın:

  • Microsoft Entra yönetilen kimliğine erişeceği Databricks çalışma alanında "Katkıda Bulunan" rolü atanmalıdır.
  • Ortam değişkeninin DATABRICKS_AZURE_RESOURCE_ID değeri, Azure portalındaki Azure Databricks örneğinin Özellikleri altında bulunur.
  • Ortam değişkeninin ARM_CLIENT_ID değeri, yönetilen kimliğin istemci kimliğidir.

Not

DATABRICKS_HOST Ortam değişkeni bu yapılandırmada belirtilmezse, değeri kaynağından DATABRICKS_AZURE_RESOURCE_IDçıkarılır.

Azure Pipelines işlem hattından Azure Databricks CLI'yi yükleme

Tercih ettiğiniz kimlik doğrulama mekanizmalarını yapılandırdıktan sonra, Azure Databricks CLI komutlarını çalıştıracak konak veya aracıya Azure Databricks CLI'yı yüklemeniz gerekir.

# Install Databricks CLI
- script: |
    curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
  displayName: 'Install Databricks CLI'

İpucu

  • Azure Databricks CLI'nın en son sürümünü otomatik olarak yüklemek istemiyorsanız, yükleyici URL'sindeki değerini main belirli bir sürümle değiştirin (örneğin, v0.224.0).

En iyi yöntemler

Ayrıca bkz.