Zřízení instančního objektu pomocí Terraformu
Poznámka:
Pokud chcete zřídit spravovaný instanční objekt Microsoft Entra ID pomocí webu Azure Portal a uživatelského rozhraní Azure Databricks, přečtěte si téma Správa instančních objektů.
Spravované instanční objekty Microsoft Entra ID se liší od spravovaných identit pro prostředky Azure, které Azure Databricks podporuje také pro ověřování. Informace o používání spravovaných identit pro prostředky Azure místo instančních objektů spravovaných pomocí Microsoft Entra ID pro ověřování Azure Databricks najdete v tématu Nastavení a použití ověřování spravovaných identit Azure pro automatizaci Azure Databricks.
Instanční objekt je identita pro automatizované nástroje a systémy, jako jsou skripty, aplikace a platformy CI/CD. Databricks doporučuje používat instanční objekt a jeho token OAuth nebo osobní přístupový token místo vašeho uživatelského účtu Azure Databricks a tokenu patového přístupu. Výhody zahrnují:
- Udělení a omezení přístupu k prostředkům nezávisle na uživateli
- Umožňuje uživatelům lépe chránit vlastní přístupové tokeny.
- Zakázání nebo odstranění instančního objektu, aniž by to mělo vliv na ostatní uživatele
- Odebrání uživatele, když opustí organizaci, aniž by to mělo vliv na instanční objekt
Podle těchto pokynů použijte Terraform k vytvoření instančního objektu spravovaného id Microsoft Entra ID v Azure, pomocí zprostředkovatele Databricks Terraform propojte instanční objekt Microsoft Entra ID s pracovním prostorem Azure Databricks a pak volitelně vytvořte token ID Microsoft Entra nebo token Azure Databricks OAuth pro instanční objekt.
Požadavky
- Rozhraní příkazového řádku Terraformu Viz Stažení Terraformu.
- Azure CLI, přihlášený k cílovému předplatnému Microsoft Entra ID spuštěním
az login
příkazu. Pokud se chcete přihlásit pomocí instančního objektu Microsoft Entra ID, přečtěte si téma Přihlášení k Azure CLI pomocí instančního objektu Microsoft Entra ID. Pokud se chcete přihlásit pomocí uživatelského účtu Azure Databricks, podívejte se na azure CLI s uživatelským účtem Azure Databricks.
Krok 1: Vytvoření instančního objektu
Pokud už máte k dispozici spravovaný instanční objekt Microsoft Entra ID, přeskočte k kroku 2.
V terminálu vytvořte prázdný adresář a přepněte na něj. (Každá samostatná sada konfiguračních souborů Terraformu musí být ve vlastním adresáři.) Příklad:
mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo
.mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo
V tomto prázdném adresáři vytvořte soubor s názvem
main.tf
. Do tohoto souboru přidejte následující obsah a pak soubor uložte.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 }
Ve stejném adresáři vytvořte soubor s názvem
terraform.tfvars
. Do tohoto souboru přidejte následující obsah, nahraďte následující hodnotu a pak soubor uložte:azure_service_principal_display_name
Nahraďte hodnotu zobrazovaným názvem instančního objektu Microsoft Entra ID.
azure_service_principal_display_name = "<A display name for the <entra-service-principal>>"
Spuštěním
terraform init
příkazu inicializujete pracovní adresář obsahujícímain.tf
soubor. Další informace najdete v tématu Příkaz: init na webu Terraformu.terraform init
Spuštěním
terraform validate
příkazu zkontrolujte, jestli v konfiguraci nedošlo k nějakým chybám syntaxe. Další informace najdete v tématu Příkaz: Ověření na webu Terraformu.terraform validate
Spuštěním
terraform apply
příkazu použijte změny potřebné k dosažení požadovaného stavu konfigurace. Další informace najdete v tématu Příkaz: Použití na webu Terraformu.terraform apply
Po vytvoření instančního objektu zkopírujte azure_client_id
a azure_client_secret
výstupní hodnoty, protože je budete potřebovat později.
Pokud chcete získat azure_client_secret
hodnotu, podívejte se na hodnotu outputs.client_secret.value
v terraform.tfstate
souboru, který je v pracovním adresáři obsahujícím main.tf
soubor.
Krok 2: Přidání instančního objektu do pracovního prostoru Azure Databricks
Poznámka:
Následující obsah přidá instanční objekt na úrovni pracovního prostoru Azure Databricks. Pokud je váš pracovní prostor Azure Databricks povolený pro federaci identit, následující obsah také automaticky synchronizuje instanční objekt se souvisejícím účtem Azure Databricks.
V terminálu vytvořte prázdný adresář a přepněte na něj. Každá samostatná sada konfiguračních souborů Terraformu musí být ve vlastním adresáři. Například:
mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo
.mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo
V tomto prázdném adresáři vytvořte soubor s názvem
main.tf
. Do tohoto souboru přidejte následující obsah a pak soubor uložte.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." }
Poznámka:
Pokud chcete přidat tento instanční objekt do skupin a přidat oprávnění k tomuto instančnímu objektu, podívejte se na databricks_service_principal na webu Terraformu.
Ve stejném adresáři vytvořte soubor s názvem
terraform.tfvars
. Do tohoto souboru přidejte následující obsah, nahraďte následující hodnoty a pak soubor uložte:databricks_host
Nahraďte hodnotu adresou URL pracovního prostoru Azure Databricks.azure_client_id
Nahraďte hodnotuazure_client_id
hodnotou z kroku 1.databricks_service_principal_display_name
Nahraďte hodnotu zobrazovaným názvem pracovního prostoru pro instanční objekt 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>"
Spuštěním
terraform init
příkazu inicializujete pracovní adresář obsahujícímain.tf
soubor. Další informace najdete v tématu Příkaz: init na webu Terraformu.terraform init
Spuštěním
terraform validate
příkazu zkontrolujte, jestli v konfiguraci nedošlo k nějakým chybám syntaxe. Další informace najdete v tématu Příkaz: Ověření na webu Terraformu.terraform validate
Spuštěním
terraform apply
příkazu použijte změny potřebné k dosažení požadovaného stavu konfigurace. Další informace najdete v tématu Příkaz: Použití na webu Terraformu.terraform apply
Po vytvoření instančního objektu zkopírujte databricks_service_principal_application_id
výstupní hodnotu, protože ji budete potřebovat k vytvoření tokenu ID Microsoft Entra pro instanční objekt.
(Volitelné) Krok 3: Vytvoření přístupového tokenu MICROSOFT Entra ID pro instanční objekt Microsoft Entra ID
Databricks nedoporučuje vytvářet tokeny ID Microsoft Entra pro instanční objekty Microsoft Entra ID ručně. Důvodem je to, že každý token Microsoft Entra ID je krátkodobý, obvykle vyprší do jedné hodiny. Po této době musíte ručně vygenerovat náhradní token Microsoft Entra ID. Místo toho použijte jeden z zúčastněných nástrojů nebo sad SDK, které implementují jednotný ověřovací standard klienta Databricks. Tyto nástroje a sady SDK automaticky generují a nahrazují tokeny Microsoft Entra ID pro vás a využívají následující typy ověřování Databricks:
- Ověřování spravovaných identit Azure
- Ověřování instančního objektu MS Entra
- Ověřování přes Azure CLI
Pokud potřebujete ručně vytvořit token ID Microsoft Entra pro instanční objekt Microsoft Entra ID, shromážděte následující informace a pak postupujte podle pokynů v tématu Získání přístupového tokenu Microsoft Entra ID pomocí rozhraní REST API platformy Microsoft Identity Platform nebo získání přístupového tokenu Microsoft Entra ID pomocí Azure CLI:
- ID tenanta pro instanční objekt Microsoft Entra ID, který použijete jako ID tenanta / ID /
<tenant-id>
adresáře (tenanta) v pokynech. Id tenanta získáte v tématu Zřízení instančního objektu na webu Azure Portal. - Hodnota
databricks_service_principal_application_id
z kroku 2, kterou použijete jako ID /<client-id>
klienta nebo aplikace (klienta) v pokynech. - Hodnota
azure_client_secret
z kroku 1, kterou použijete jako tajný klíč klienta nebo hodnotu /<client-secret>
v pokynech.
Po vytvoření tokenu Microsoft Entra ID zkopírujte access_token
hodnotu, protože ji budete muset zadat do skriptu, aplikace nebo systému.
(Volitelné) Krok 4: Vytvoření tokenu Azure Databricks OAuth pro instanční objekt Microsoft Entra ID
Databricks nedoporučuje vytvářet tokeny Azure Databricks OAuth pro instanční objekty spravované microsoftem Entra ID ručně. Důvodem je to, že každý token Azure Databricks OAuth je krátkodobý, obvykle vyprší do jedné hodiny. Po této době musíte ručně vygenerovat náhradní token Azure Databricks OAuth. Místo toho použijte jeden z zúčastněných nástrojů nebo sad SDK, které implementují jednotný ověřovací standard klienta Databricks. Tyto nástroje a sady SDK za vás automaticky generují a nahrazují tokeny Azure Databricks OAuth, které využívají ověřování přístupu k Azure Databricks pomocí instančního objektu pomocí OAuth (OAuth M2M).
Pokud potřebujete ručně vytvořit token Azure Databricks OAuth pro instanční objekt Microsoft Entra ID, přečtěte si téma Ruční generování a používání přístupových tokenů pro ověřování OAuth M2M.