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
- Interfejs wiersza polecenia narzędzia Terraform. Zobacz Pobieranie narzędzia Terraform.
- Interfejs wiersza polecenia platformy Azure zalogowany do docelowej subskrypcji microsoft Entra ID, uruchamiając
az login
polecenie . Aby zalogować się przy użyciu jednostki usługi Microsoft Entra ID, zobacz Logowanie interfejsu wiersza polecenia platformy Azure przy użyciu jednostki usługi Microsoft Entra ID. Aby zalogować się przy użyciu konta użytkownika usługi Azure Databricks, zobacz Logowanie interfejsu wiersza polecenia platformy Azure przy użyciu konta użytkownika usługi Azure Databricks.
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.
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
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 }
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>>"
Zainicjuj katalog roboczy zawierający
main.tf
plik, uruchamiającterraform init
polecenie . Aby uzyskać więcej informacji, zobacz Command: init w witrynie internetowej programu Terraform.terraform init
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
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.
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
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.
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>"
- Zastąp
Zainicjuj katalog roboczy zawierający
main.tf
plik, uruchamiającterraform init
polecenie . Aby uzyskać więcej informacji, zobacz Command: init w witrynie internetowej programu Terraform.terraform init
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
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:
- Uwierzytelnianie tożsamości zarządzanych platformy Azure
- Uwierzytelnianie jednostki usługi MS Entra
- Uwierzytelnianie interfejsu wiersza polecenia platformy Azure
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.