Aprowizuj jednostkę usługi przy użyciu narzędzia Terraform

Uwaga

Aby aprowizować jednostkę usługi zarządzanej microsoft Entra ID przy użyciu witryny Azure Portal i interfejsu użytkownika usługi Azure Databricks, zobacz Zarządzanie jednostkami usługi.

Jednostki usługi zarządzanej microsoft Entra ID różnią się od tożsamości zarządzanych dla zasobów platformy Azure, które usługa Azure Databricks obsługuje również na potrzeby uwierzytelniania. Aby dowiedzieć się, jak używać tożsamości zarządzanych dla zasobów platformy Azure zamiast jednostek usługi zarządzanej Microsoft Entra ID na potrzeby uwierzytelniania usługi Azure Databricks, zobacz Konfigurowanie i używanie uwierzytelniania tożsamości zarządzanych platformy Azure na potrzeby automatyzacji usługi Azure Databricks.

Jednostka usługi to tożsamość zautomatyzowanych narzędzi i systemów, takich jak skrypty, aplikacje i platformy ciągłej integracji/ciągłego wdrażania. Usługa Databricks zaleca używanie jednostki usługi i tokenu OAuth lub osobistego tokenu dostępu zamiast osobistego konta użytkownika usługi Azure Databricks i osobistego tokenu dostępu. Korzyści obejmują:

  • Udzielanie i ograniczanie dostępu do zasobów niezależnie od użytkownika.
  • Umożliwienie użytkownikom lepszej ochrony własnych tokenów dostępu.
  • Wyłączanie lub usuwanie jednostki usługi bez wpływu na innych użytkowników.
  • Usunięcie użytkownika, gdy opuszcza organizację bez wpływu na jednostkę usługi.

Postępuj zgodnie z tymi instrukcjami, aby utworzyć jednostkę usługi zarządzanej identyfikatora entra firmy Microsoft na platformie Azure, użyj dostawcy narzędzia Terraform usługi Databricks, aby połączyć jednostkę usługi Microsoft Entra ID z obszarem roboczym usługi Azure Databricks, a następnie opcjonalnie utworzyć token identyfikatora entra firmy Microsoft lub token OAuth usługi Azure Databricks dla jednostki usługi.

Wymagania

Krok 1. Tworzenie jednostki usługi

Jeśli masz już dostępną jednostkę usługi zarządzanej identyfikatora entra firmy Microsoft, przejdź do kroku 2.

  1. W terminalu utwórz pusty katalog, a następnie przejdź do niego. (Każdy oddzielny zestaw plików konfiguracji programu Terraform musi znajdować się we własnym katalogu). Na przykład: 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. W tym pustym katalogu utwórz plik o nazwie main.tf. Dodaj następującą zawartość do tego pliku, a następnie zapisz plik.

    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. W tym samym katalogu utwórz plik o nazwie terraform.tfvars. Dodaj następującą zawartość do tego pliku, zastępując następującą wartość, a następnie zapisz plik:

    • azure_service_principal_display_name Zastąp wartość nazwą wyświetlaną jednostki usługi Microsoft Entra ID.
    azure_service_principal_display_name = "<A display name for the <entra-service-principal>>"
    
  4. Zainicjuj katalog roboczy zawierający main.tf plik, uruchamiając terraform init polecenie . Aby uzyskać więcej informacji, zobacz Command: init w witrynie internetowej programu Terraform.

    terraform init
    
  5. Sprawdź, czy w konfiguracji występują błędy składniowe, uruchamiając terraform validate polecenie . Aby uzyskać więcej informacji, zobacz Polecenie: validate w witrynie internetowej programu Terraform.

    terraform validate
    
  6. Zastosuj zmiany wymagane do osiągnięcia żądanego stanu konfiguracji, uruchamiając terraform apply polecenie . Aby uzyskać więcej informacji, zobacz Polecenie: apply w witrynie internetowej programu Terraform.

    terraform apply
    

Po utworzeniu jednostki usługi skopiuj azure_client_id wartości i azure_client_secret wyjściowe, ponieważ będą one potrzebne później.

Aby uzyskać azure_client_secret wartość, zobacz wartość outputs.client_secret.value w terraform.tfstate pliku, który znajduje się w katalogu roboczym zawierającym main.tf plik.

Krok 2. Dodawanie jednostki usługi do obszaru roboczego usługi Azure Databricks

Uwaga

Poniższa zawartość dodaje jednostkę usługi na poziomie obszaru roboczego usługi Azure Databricks. Jeśli obszar roboczy usługi Azure Databricks jest włączony na potrzeby federacji tożsamości, następująca zawartość automatycznie synchronizuje jednostkę usługi z powiązanym kontem usługi Azure Databricks.

  1. W terminalu utwórz pusty katalog, a następnie przejdź do niego. Każdy oddzielny zestaw plików konfiguracji programu Terraform musi znajdować się we własnym katalogu. Na przykład: 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. W tym pustym katalogu utwórz plik o nazwie main.tf. Dodaj następującą zawartość do tego pliku, a następnie zapisz plik.

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

    Uwaga

    Aby dodać tę jednostkę usługi do grup i dodać uprawnienia do tej jednostki usługi, zobacz databricks_service_principal w witrynie internetowej programu Terraform.

  3. W tym samym katalogu utwórz plik o nazwie terraform.tfvars. Dodaj następującą zawartość do tego pliku, zastępując następujące wartości, a następnie zapisz plik:

    • Zastąp databricks_host wartość adresem URL obszaru roboczego usługi Azure Databricks.
    • azure_client_id Zastąp wartość wartością azure_client_id z kroku 1.
    • databricks_service_principal_display_name Zastąp wartość nazwą wyświetlaną obszaru roboczego jednostki usługi 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. Zainicjuj katalog roboczy zawierający main.tf plik, uruchamiając terraform init polecenie . Aby uzyskać więcej informacji, zobacz Command: init w witrynie internetowej programu Terraform.

    terraform init
    
  5. Sprawdź, czy w konfiguracji występują błędy składniowe, uruchamiając terraform validate polecenie . Aby uzyskać więcej informacji, zobacz Polecenie: validate w witrynie internetowej programu Terraform.

    terraform validate
    
  6. Zastosuj zmiany wymagane do osiągnięcia żądanego stanu konfiguracji, uruchamiając terraform apply polecenie . Aby uzyskać więcej informacji, zobacz Polecenie: apply w witrynie internetowej programu Terraform.

    terraform apply
    

Po utworzeniu jednostki usługi skopiuj databricks_service_principal_application_id wartość wyjściową, ponieważ będzie ona potrzebna do utworzenia tokenu identyfikatora Entra firmy Microsoft dla jednostki usługi.

(Opcjonalnie) Krok 3. Tworzenie tokenu dostępu identyfikatora entra firmy Microsoft dla jednostki usługi Microsoft Entra ID

Usługa Databricks nie zaleca ręcznego tworzenia tokenów identyfikatora Entra firmy Microsoft dla jednostek usługi Microsoft Entra ID. Dzieje się tak, ponieważ każdy token identyfikatora Entra firmy Microsoft jest krótkotrwały, zazwyczaj wygasa w ciągu jednej godziny. Po tym czasie należy ręcznie wygenerować zastępczy token identyfikatora entra firmy Microsoft. Zamiast tego należy użyć jednego z uczestniczących narzędzi lub zestawów SDK, które implementują ujednolicony standard uwierzytelniania klienta usługi Databricks. Te narzędzia i zestawy SDK automatycznie generują i zastępują wygasłe tokeny identyfikatorów Entra firmy Microsoft, korzystając z następujących typów uwierzytelniania usługi Databricks:

Jeśli musisz ręcznie utworzyć token identyfikatora entra firmy Microsoft dla jednostki usługi Microsoft Entra ID, zbierz następujące informacje, a następnie postępuj zgodnie z instrukcjami w temacie Uzyskiwanie tokenu dostępu identyfikatora Entra firmy Microsoft przy użyciu interfejsu API REST Platforma tożsamości Microsoft lub Pobierz token dostępu identyfikatora entra firmy Microsoft za pomocą interfejsu wiersza polecenia platformy Azure:

  • Identyfikator dzierżawy jednostki usługi Microsoft Entra ID, który będzie używany jako identyfikator / <tenant-id> dzierżawy /identyfikator katalogu (dzierżawy) w instrukcjach. Aby uzyskać identyfikator dzierżawy, zobacz Aprowizuj jednostkę usługi w witrynie Azure Portal.
  • Wartość databricks_service_principal_application_id z kroku 2, która będzie używana jako identyfikator / <client-id> klienta /aplikacja (klient) w instrukcjach.
  • Wartość azure_client_secret z kroku 1, która będzie używana jako klucz tajny klienta / wartość / <client-secret> w instrukcjach.

Po utworzeniu tokenu identyfikatora Entra firmy Microsoft skopiuj access_token wartość, ponieważ musisz podać ją skryptowi, aplikacji lub systemowi.

(Opcjonalnie) Krok 4. Tworzenie tokenu OAuth usługi Azure Databricks dla jednostki usługi Microsoft Entra ID

Usługa Databricks nie zaleca ręcznego tworzenia tokenów OAuth usługi Azure Databricks dla jednostek usługi zarządzanej identyfikatora Entra firmy Microsoft. Dzieje się tak, ponieważ każdy token OAuth usługi Azure Databricks jest krótkotrwały, zazwyczaj wygasa w ciągu jednej godziny. Po tym czasie należy ręcznie wygenerować zastępczy token OAuth usługi Azure Databricks. Zamiast tego należy użyć jednego z uczestniczących narzędzi lub zestawów SDK, które implementują ujednolicony standard uwierzytelniania klienta usługi Databricks. Te narzędzia i zestawy SDK automatycznie generują i zastępują wygasłe tokeny OAuth usługi Azure Databricks, korzystając z uwierzytelniania dostępu do usługi Azure Databricks przy użyciu jednostki usługi przy użyciu protokołu OAuth (OAuth M2M).

Jeśli musisz ręcznie utworzyć token OAuth usługi Azure Databricks dla jednostki usługi Microsoft Entra ID, zobacz Ręczne generowanie i używanie tokenów dostępu do uwierzytelniania OAuth M2M.