Bagikan melalui


Memprovisikan perwakilan layanan dengan menggunakan Terraform

Catatan

Untuk menyediakan perwakilan layanan terkelola ID Microsoft Entra dengan menggunakan portal Azure dan antarmuka pengguna Azure Databricks sebagai gantinya, lihat Mengelola perwakilan layanan.

Perwakilan layanan terkelola ID Microsoft Entra berbeda dari identitas terkelola untuk sumber daya Azure, yang juga didukung Azure Databricks untuk autentikasi. Untuk mempelajari cara menggunakan identitas terkelola untuk sumber daya Azure alih-alih perwakilan layanan terkelola ID Microsoft Entra untuk autentikasi Azure Databricks, lihat Menyiapkan dan menggunakan autentikasi identitas terkelola Azure untuk otomatisasi Azure Databricks.

Perwakilan layanan adalah identitas untuk alat dan sistem otomatis seperti skrip, aplikasi, dan platform CI/CD. Databricks merekomendasikan penggunaan perwakilan layanan dan token OAuth atau token akses pribadinya alih-alih akun pengguna Azure Databricks dan token akses pribadi Anda. Manfaatnya mencakup:

  • Memberikan dan membatasi akses ke sumber daya secara independen dari pengguna.
  • Memungkinkan pengguna untuk melindungi token akses mereka dengan lebih baik.
  • Menonaktifkan atau menghapus perwakilan layanan tanpa memengaruhi pengguna lain.
  • Menghapus pengguna saat mereka meninggalkan organisasi tanpa memengaruhi perwakilan layanan apa pun.

Ikuti instruksi ini untuk menggunakan Terraform untuk membuat perwakilan layanan terkelola ID Microsoft Entra di Azure, gunakan penyedia Databricks Terraform untuk menautkan perwakilan layanan ID Microsoft Entra ke ruang kerja Azure Databricks Anda, lalu secara opsional membuat token ID Microsoft Entra atau token OAuth Azure Databricks untuk perwakilan layanan.

Persyaratan

  • CLI Terraform. Lihat Mengunduh Terraform.
  • Azure CLI, masuk ke langganan MICROSOFT Entra ID (sebelumnya Azure Active Directory) target dengan menjalankan az login perintah . Untuk masuk dengan menggunakan perwakilan layanan ID Microsoft Entra, lihat Login Azure CLI dengan perwakilan layanan ID Microsoft Entra. Untuk masuk dengan menggunakan akun pengguna Azure Databricks, lihat Masuk Azure CLI dengan akun pengguna Azure Databricks.

Langkah 1: Membuat perwakilan layanan

Jika Anda sudah memiliki perwakilan layanan terkelola ID Microsoft Entra yang tersedia, lewati ke Langkah 2.

  1. Di terminal Anda, buat direktori kosong lalu beralih ke sana. (Setiap set file konfigurasi Terraform yang terpisah harus berada di direktorinya sendiri.) Misalnya: 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. Di direktori kosong ini, buat file bernama main.tf. Tambahkan konten berikut ke file ini, lalu simpan file.

    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. Di direktori yang sama, buat file bernama terraform.tfvars. Tambahkan konten berikut ke file ini, ganti nilai berikut, lalu simpan file:

    • azure_service_principal_display_name Ganti nilai dengan nama tampilan untuk perwakilan layanan ID Microsoft Entra.
    azure_service_principal_display_name = "<A display name for the <entra-service-principal>>"
    
  4. Menginisialisasi direktori kerja yang main.tf berisi file dengan menjalankan terraform init perintah. Untuk informasi selengkapnya, lihat Perintah: init di situs web Terraform.

    terraform init
    
  5. Periksa apakah ada kesalahan sintaks dalam konfigurasi dengan menjalankan terraform validate perintah . Untuk informasi selengkapnya, lihat Perintah: memvalidasi di situs web Terraform.

    terraform validate
    
  6. Terapkan perubahan yang diperlukan untuk mencapai status konfigurasi yang diinginkan dengan menjalankan terraform apply perintah. Untuk informasi selengkapnya, lihat Perintah: init di situs web Terraform.

    terraform apply
    

Setelah Anda membuat perwakilan layanan, salin azure_client_id nilai output dan azure_client_secret , karena Anda akan membutuhkannya nanti.

Untuk mendapatkan azure_client_secret nilai, lihat nilai outputs.client_secret.value dalam terraform.tfstate file, yang ada di direktori kerja yang berisi main.tf file.

Langkah 2: Tambahkan perwakilan layanan ke ruang kerja Azure Databricks

Catatan

Konten berikut menambahkan perwakilan layanan di tingkat ruang kerja Azure Databricks. Jika ruang kerja Azure Databricks Anda diaktifkan untuk federasi identitas, konten berikut juga secara otomatis menyinkronkan perwakilan layanan ke akun Azure Databricks terkait.

  1. Di terminal Anda, buat direktori kosong lalu beralih ke sana. Setiap set file konfigurasi Terraform terpisah harus berada di direktorinya sendiri. Misalnya: 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. Di direktori kosong ini, buat file bernama main.tf. Tambahkan konten berikut ke file ini, lalu simpan file.

    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."
    }
    

    Catatan

    Untuk menambahkan perwakilan layanan ini ke grup, dan untuk menambahkan hak ke perwakilan layanan ini, lihat databricks_service_principal di situs web Terraform.

  3. Di direktori yang sama, buat file bernama terraform.tfvars. Tambahkan konten berikut ke file ini, ganti nilai berikut, lalu simpan file:

    • databricks_host Ganti nilai dengan URL ruang kerja Azure Databricks.
    • azure_client_id Ganti nilai dengan azure_client_id nilai dari Langkah 1.
    • databricks_service_principal_display_name Ganti nilai dengan nama tampilan ruang kerja untuk perwakilan layanan Azure Databricks.
    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. Menginisialisasi direktori kerja yang main.tf berisi file dengan menjalankan terraform init perintah. Untuk informasi selengkapnya, lihat Perintah: init di situs web Terraform.

    terraform init
    
  5. Periksa apakah ada kesalahan sintaks dalam konfigurasi dengan menjalankan terraform validate perintah . Untuk informasi selengkapnya, lihat Perintah: memvalidasi di situs web Terraform.

    terraform validate
    
  6. Terapkan perubahan yang diperlukan untuk mencapai status konfigurasi yang diinginkan dengan menjalankan terraform apply perintah. Untuk informasi selengkapnya, lihat Perintah: init di situs web Terraform.

    terraform apply
    

Setelah Anda membuat perwakilan layanan, salin databricks_service_principal_application_id nilai output, karena Anda akan membutuhkannya untuk membuat token ID Microsoft Entra untuk perwakilan layanan.

(Opsional) Langkah 3: Membuat token akses ID Microsoft Entra (sebelumnya Azure Active Directory) untuk perwakilan layanan ID Microsoft Entra

Databricks tidak menyarankan Anda membuat token MICROSOFT Entra ID (sebelumnya Azure Active Directory) untuk perwakilan layanan ID Microsoft Entra secara manual. Ini karena setiap token ID Microsoft Entra berumur pendek, biasanya kedaluwarsa dalam waktu satu jam. Setelah waktu ini, Anda harus membuat token ID Microsoft Entra pengganti secara manual. Sebagai gantinya, gunakan salah satu alat atau SDK yang berpartisipasi yang menerapkan standar autentikasi terpadu klien Databricks. Alat dan SDK ini secara otomatis menghasilkan dan mengganti token ID Microsoft Entra yang kedaluwarsa untuk Anda, memanfaatkan jenis autentikasi Databricks berikut:

Jika Anda perlu membuat token ID Microsoft Entra secara manual untuk perwakilan layanan ID Microsoft Entra, kumpulkan informasi berikut, lalu ikuti instruksi di Mendapatkan token akses ID Microsoft Entra dengan platform identitas Microsoft REST API atau Dapatkan token akses ID Microsoft Entra dengan Azure CLI:

  • ID penyewa untuk perwakilan layanan ID Microsoft Entra Anda, yang akan Anda gunakan sebagai ID / <tenant-id> Penyewa / Direktori (penyewa) dalam instruksi. Untuk mendapatkan ID penyewa, lihat Memprovisikan perwakilan layanan di portal Azure.
  • Nilai databricks_service_principal_application_id dari Langkah 2, yang akan Anda gunakan sebagai ID Klien / ID / <client-id> Aplikasi (klien) dalam instruksi.
  • Nilai azure_client_secret dari Langkah 1, yang akan Anda gunakan sebagai Rahasia klien / Nilai / <client-secret> dalam instruksi.

Setelah Anda membuat token ID Microsoft Entra, salin access_token nilainya, karena Anda harus memberikannya ke skrip, aplikasi, atau sistem Anda.

(Opsional) Langkah 4: Membuat token OAuth Azure Databricks untuk perwakilan layanan ID Microsoft Entra

Databricks tidak menyarankan Anda membuat token OAuth Azure Databricks untuk perwakilan layanan terkelola ID Microsoft Entra secara manual. Ini karena setiap token OAuth Azure Databricks berumur pendek, biasanya kedaluwarsa dalam waktu satu jam. Setelah waktu ini, Anda harus membuat token OAuth Azure Databricks pengganti secara manual. Sebagai gantinya, gunakan salah satu alat atau SDK yang berpartisipasi yang menerapkan standar autentikasi terpadu klien Databricks. Alat dan SDK ini secara otomatis menghasilkan dan mengganti token OAuth Azure Databricks yang kedaluwarsa untuk Anda, memanfaatkan autentikasi mesin-ke-mesin (M2M) OAuth.

Jika Anda perlu membuat token OAuth Azure Databricks secara manual untuk perwakilan layanan ID Microsoft Entra, lihat Membuat dan menggunakan token akses secara manual untuk autentikasi komputer-ke-mesin (M2M) OAuth.