Share via


Terraform kullanarak hizmet sorumlusu sağlama

Not

Bunun yerine Azure portalını ve Azure Databricks kullanıcı arabirimini kullanarak Microsoft Entra Id yönetilen hizmet sorumlusu sağlamak için bkz . Hizmet sorumlularını yönetme.

Microsoft Entra Id yönetilen hizmet sorumluları, Azure databricks'in kimlik doğrulaması için de desteklediği Azure kaynakları için yönetilen kimliklerden farklıdır. Azure Databricks kimlik doğrulaması için Microsoft Entra ID yönetilen hizmet sorumluları yerine Azure kaynakları için yönetilen kimliklerin nasıl kullanılacağını öğrenmek için bkz . Azure Databricks otomasyonu için Azure yönetilen kimlikleri kimlik doğrulamasını ayarlama ve kullanma.

Hizmet sorumlusu, betikler, uygulamalar ve CI/CD platformları gibi otomatik araçlara ve sistemlere yönelik bir kimliktir. Databricks, Azure Databricks kullanıcı hesabınız ve kişisel erişim belirteciniz yerine bir hizmet sorumlusu ve OAuth belirteci veya kişisel erişim belirteci kullanmanızı önerir. Avantajlar arasında şunlar bulunmaktadır:

  • Bir kullanıcıdan bağımsız olarak kaynaklara erişim verme ve kaynaklara erişimi kısıtlama.
  • Kullanıcıların kendi erişim belirteçlerini daha iyi korumasını sağlama.
  • Diğer kullanıcıları etkilemeden hizmet sorumlusunu devre dışı bırakma veya silme.
  • Herhangi bir hizmet sorumlusunu etkilemeden kuruluştan ayrılan bir kullanıcıyı kaldırma.

Terraform'u kullanarak Azure'da Microsoft Entra ID yönetilen hizmet sorumlusu oluşturmak için bu yönergeleri izleyin, Databricks Terraform sağlayıcısını kullanarak Microsoft Entra ID hizmet sorumlusunu Azure Databricks çalışma alanınıza bağlayın ve ardından isteğe bağlı olarak hizmet sorumlusu için bir Microsoft Entra ID belirteci veya Azure Databricks OAuth belirteci oluşturun.

Gereksinimler

1. Adım: Hizmet sorumlusunu oluşturma

Microsoft Entra Id yönetilen hizmet sorumlunuz zaten varsa 2. Adım'a geçin.

  1. Terminalinizde boş bir dizin oluşturun ve ardından bu dizine geçin. (Her ayrı Terraform yapılandırma dosyası kümesi kendi dizininde olmalıdır.) Örneğin: mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo.

    mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo
    
  2. Bu boş dizinde adlı main.tfbir dosya oluşturun. Bu dosyaya aşağıdaki içeriği ekleyin ve dosyayı kaydedin.

    variable "azure_service_principal_display_name" {
      description = "A display name for the <entra-service-principal>."
      type        = string
    }
    
    terraform {
      required_providers {
        azuread = {
          source  = "hashicorp/azuread"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
    resource "azuread_application" "this" {
      display_name = var.azure_service_principal_display_name
    }
    
    resource "azuread_service_principal" "this" {
      application_id = azuread_application.this.application_id
    }
    
    resource "time_rotating" "month" {
      rotation_days = 30
    }
    
    resource "azuread_service_principal_password" "this" {
      service_principal_id = azuread_service_principal.this.object_id
      rotate_when_changed  = { rotation = time_rotating.month.id }
    }
    
    output "azure_client_id" {
      description = "The Azure AD service principal's application (client) ID."
      value       = azuread_application.this.application_id
    }
    
    output "azure_client_secret" {
      description = "The Azure AD service principal's client secret value."
      value       = azuread_service_principal_password.this.value
      sensitive   = true
    }
    
  3. Aynı dizinde adlı terraform.tfvarsbir dosya oluşturun. Aşağıdaki içeriği bu dosyaya ekleyin, aşağıdaki değeri değiştirip dosyayı kaydedin:

    • azure_service_principal_display_name değerini Microsoft Entra ID hizmet sorumlusunun görünen adıyla değiştirin.
    azure_service_principal_display_name = "<A display name for the <entra-service-principal>>"
    
  4. komutunu çalıştırarak dosyayı içeren main.tf çalışma dizinini terraform init başlatın. Daha fazla bilgi için terraform web sitesindeki Command: init bölümüne bakın.

    terraform init
    
  5. komutunu çalıştırarak terraform validate yapılandırmada söz dizimi hataları olup olmadığını denetleyin. Daha fazla bilgi için bkz . Terraform web sitesinde Komut: doğrulama .

    terraform validate
    
  6. komutunu çalıştırarak terraform apply yapılandırmanın istenen durumuna ulaşmak için gereken değişiklikleri uygulayın. Daha fazla bilgi için Terraform web sitesinde Command: apply bölümüne bakın.

    terraform apply
    

Hizmet sorumlusunu oluşturduktan sonra ve azure_client_secret çıkış değerlerini kopyalayınazure_client_id; daha sonra bunlara ihtiyacınız olacaktır.

Değerini almak azure_client_secret için dosyasını içeren main.tf çalışma dizininde bulunan dosyasında değerini görün outputs.client_secret.valueterraform.tfstate.

2. Adım: Hizmet sorumlusunu Azure Databricks çalışma alanına ekleme

Not

Aşağıdaki içerik, Azure Databricks çalışma alanı düzeyinde bir hizmet sorumlusu ekler. Azure Databricks çalışma alanınız kimlik federasyonu için etkinleştirildiyse, aşağıdaki içerik de hizmet sorumlusunu ilgili Azure Databricks hesabıyla otomatik olarak eşitler.

  1. Terminalinizde boş bir dizin oluşturun ve ardından bu dizine geçin. Her ayrı Terraform yapılandırma dosyası kümesi kendi dizininde olmalıdır. Örneğin: mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo.

    mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo
    
  2. Bu boş dizinde adlı main.tfbir dosya oluşturun. Bu dosyaya aşağıdaki içeriği ekleyin ve dosyayı kaydedin.

    variable "databricks_host" {
      description = "The Azure Databricks workspace URL."
      type = string
    }
    
    variable "azure_client_id" {
      type        = string
      description = "The application (client) ID of the <entra-service-principal> to link to an Azure Databricks service principal. This application (client) ID will be the application ID of the Azure Databricks service principal."
    }
    
    variable "databricks_service_principal_display_name" {
      type        = string
      description = "A workspace display name for the Azure Databricks service principal."
    }
    
    terraform {
      required_providers {
        databricks = {
          source = "databricks/databricks"
        }
      }
    }
    
    provider "databricks" {
      host = var.databricks_host
    }
    
    resource "databricks_service_principal" "sp" {
      application_id = var.azure_client_id
      display_name   = var.databricks_service_principal_display_name
    }
    
    output "databricks_service_principal_application_id" {
      value       = databricks_service_principal.sp.application_id
      description = "Application ID of the Azure Databricks service principal."
    }
    
    output "databricks_service_principal_display_name" {
      value       = databricks_service_principal.sp.display_name
      description = "Workspace display name of the Azure Databricks service principal."
    }
    
    output "databricks_workspace_service_principal_id" {
      value       = databricks_service_principal.sp.id
      description = "Workspace ID of the Azure Databricks service principal. This ID is generated by Azure Databricks for this workspace."
    }
    

    Not

    Bu hizmet sorumlusunu gruplara eklemek ve bu hizmet sorumlusuna yetkilendirmeler eklemek için Terraform web sitesindeki databricks_service_principal bakın.

  3. Aynı dizinde adlı terraform.tfvarsbir dosya oluşturun. Bu dosyaya aşağıdaki içeriği ekleyin, aşağıdaki değerleri değiştirip dosyayı kaydedin:

    • databricks_host değerini Azure Databricks çalışma alanının URL'si ile değiştirin.
    • azure_client_id değerini 1. Adımdaki azure_client_id değerle değiştirin.
    • databricks_service_principal_display_name değerini Azure Databricks hizmet sorumlusunun çalışma alanı görünen adıyla değiştirin.
    databricks_host                           = "<The Azure Databricks workspace URL, starting with https://>"
    azure_client_id                           = "<The Azure client ID of the Azure Active AD service principal>"
    databricks_service_principal_display_name = "<A workspace display name for the Azure Databricks service principal>"
    
  4. komutunu çalıştırarak dosyayı içeren main.tf çalışma dizinini terraform init başlatın. Daha fazla bilgi için terraform web sitesindeki Command: init bölümüne bakın.

    terraform init
    
  5. komutunu çalıştırarak terraform validate yapılandırmada söz dizimi hataları olup olmadığını denetleyin. Daha fazla bilgi için bkz . Terraform web sitesinde Komut: doğrulama .

    terraform validate
    
  6. komutunu çalıştırarak terraform apply yapılandırmanın istenen durumuna ulaşmak için gereken değişiklikleri uygulayın. Daha fazla bilgi için Terraform web sitesinde Command: apply bölümüne bakın.

    terraform apply
    

Hizmet sorumlusunu oluşturduktan sonra, hizmet sorumlusu için bir Microsoft Entra Id belirteci oluşturmak için ihtiyacınız olacağı için çıkış değerini kopyalayın databricks_service_principal_application_id .

(İsteğe bağlı) 3. Adım: Microsoft Entra ID hizmet sorumlusu için Microsoft Entra Id (eski adıYla Azure Active Directory) erişim belirteci oluşturma

Databricks, Microsoft Entra Id hizmet sorumluları için Microsoft Entra Id (eski adı Azure Active Directory) belirteçlerini el ile oluşturmanızı önermez. Bunun nedeni, her Microsoft Entra Id belirtecinin kısa süreli olması ve genellikle bir saat içinde süresinin dolmasıdır. Bu süreden sonra, el ile yeni bir Microsoft Entra Id belirteci oluşturmanız gerekir. Bunun yerine, Databricks istemcisi birleşik kimlik doğrulama standardını uygulayan katılımcı araçlardan veya SDK'lardan birini kullanın. Bu araçlar ve SDK'lar, aşağıdaki Databricks kimlik doğrulama türlerinden yararlanarak süresi dolan Microsoft Entra ID belirteçlerini sizin için otomatik olarak oluşturur ve değiştirir:

Microsoft Entra ID hizmet sorumlusu için el ile Microsoft Entra ID belirteci oluşturmanız gerekiyorsa, aşağıdaki bilgileri toplayın ve Microsoft kimlik platformu REST API ile Microsoft Entra ID erişim belirteci alma veya Azure CLI ile Microsoft Entra ID erişim belirteci alma başlığı altındaki yönergeleri izleyin:

  • Yönergelerde Kiracı Kimliği / Dizin (kiracı) kimliği olarak kullanacağınız Microsoft Entra Id hizmet sorumlunuzun kiracı kimliği / <tenant-id>. Kiracı kimliğini almak için bkz . Azure portalında hizmet sorumlusu sağlama.
  • databricks_service_principal_application_id Adım 2'deki ve yönergelerde İstemci Kimliği / Uygulama (istemci) Kimliği / <client-id> olarak kullanacağınız değer.
  • azure_client_secret Adım 1'deki ve yönergelerde İstemci gizli anahtarı / Değer / <client-secret> olarak kullanacağınız değer.

Microsoft Entra Id belirtecini oluşturduktan sonra, betiğinize, uygulamanıza veya sisteminize sağlamanız gerekeceği için değeri kopyalayın access_token .

(İsteğe bağlı) 4. Adım: Microsoft Entra ID hizmet sorumlusu için Azure Databricks OAuth belirteci oluşturma

Databricks, Microsoft Entra ID yönetilen hizmet sorumluları için Azure Databricks OAuth belirteçlerini el ile oluşturmanızı önermez. Bunun nedeni, her Azure Databricks OAuth belirtecinin kısa süreli olması ve genellikle bir saat içinde süresi dolmasıdır. Bu süreden sonra, el ile yeni bir Azure Databricks OAuth belirteci oluşturmanız gerekir. Bunun yerine, Databricks istemcisi birleşik kimlik doğrulama standardını uygulayan katılımcı araçlardan veya SDK'lardan birini kullanın. Bu araçlar ve SDK'lar, OAuth makineden makineye (M2M) kimlik doğrulamasını kullanarak süresi dolan Azure Databricks OAuth belirteçlerini sizin için otomatik olarak oluşturur ve değiştirir.

Microsoft Entra ID hizmet sorumlusu için el ile Azure Databricks OAuth belirteci oluşturmanız gerekiyorsa bkz . OAuth makineden makineye (M2M) kimlik doğrulaması için el ile erişim belirteçleri oluşturma ve kullanma.