Udostępnij przez


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

Uwaga

Aby aprowizować jednostkę usługi zarządzanej Microsoft Entra ID za pomocą portalu Azure oraz interfejsu użytkownika Azure Databricks, zobacz Jednostki 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 zasad obsługi zarządzanej Microsoft Entra ID na potrzeby uwierzytelniania usługi Azure Databricks, zobacz temat Używanie tożsamości zarządzanych platformy Azure z usługą Azure Databricks.

„Service principal” to tożsamość dla zautomatyzowanych narzędzi i systemów, takich jak skrypty, aplikacje i platformy CI/CD. 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ć zarządzaną główną jednostkę usługi Microsoft Entra ID w Azure, użyj dostawcy Terraform dla Databricks, aby połączyć główną jednostkę usługi Microsoft Entra ID z obszarem roboczym Azure Databricks, a następnie opcjonalnie utworzyć token Microsoft Entra ID lub token OAuth Azure Databricks dla głównej 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 na stronie 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 na stronie internetowej 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 narzędzia 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 na stronie 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 na stronie internetowej 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

Ważne

Usługa Databricks nie zaleca ręcznego tworzenia tokenów identyfikatora Entra firmy Microsoft. Wygasają w ciągu jednej godziny i wymagają ręcznego zastąpienia. Zamiast tego użyj narzędzi lub zestawów SDK z ujednoliconym uwierzytelnianiem , aby automatycznie obsługiwać zarządzanie tokenami.

Jeśli musisz ręcznie utworzyć token Microsoft Entra ID dla głównego obiektu usługi Microsoft Entra ID, zbierz następujące informacje, a następnie postępuj zgodnie z instrukcjami w Generowanie tokenu:

  • Identyfikator dzierżawy jednostki usługi Microsoft Entra ID, który będzie używany jako identyfikatoridentyfikator katalogu (dzierżawy) w instrukcjach. Aby uzyskać identyfikator dzierżawy, zobacz Tworzenie jednostki usługi.
  • Wartość databricks_service_principal_application_id z kroku 2, która będzie używana jako identyfikatoraplikacja (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

Ważne

Usługa Databricks nie zaleca ręcznego tworzenia tokenów OAuth dla usługi Azure Databricks dla zarządzanych przez Microsoft Entra ID jednostek usługi. Wygasają w ciągu jednej godziny i wymagają ręcznego zastąpienia. Zamiast tego użyj narzędzi lub zestawów SDK, które implementują ujednolicone uwierzytelnianie , aby automatycznie generować i zastępować tokeny przy użyciu autoryzacji dostępu jednostki usługi do usługi Azure Databricks za pomocą protokołu OAuth.

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