Bereitstellen eines Dienstprinzipals mithilfe von Terraform
Hinweis
Informationen zum Bereitstellen eines verwalteten Dienstprinzipals in Microsoft Entra ID mithilfe des Azure-Portals und der Benutzeroberfläche von Azure Databricks finden Sie stattdessen unter Verwalten von Dienstprinzipalen.
Verwaltete Dienstprinzipale in Microsoft Entra ID unterscheiden sich von verwalteten Identitäten für Azure-Ressourcen, die von Azure Databricks für die Authentifizierung ebenfalls unterstützt werden. Informationen zum Verwenden verwalteter Identitäten für Azure-Ressourcen anstelle von verwalteten Dienstprinzipalen in Microsoft Entra ID für die Azure Databricks-Authentifizierung finden Sie unter Einrichten und Verwenden der Authentifizierung mit von Azure verwalteten Identitäten für die Automatisierung von Azure Databricks.
Ein Dienstprinzipal ist eine Identität für automatisierte Tools und Systeme wie Skripts, Apps und CI/CD-Plattformen. Databricks empfiehlt, einen Dienstprinzipal und seinen OAuth-Token oder persönlichen Zugriffstoken anstelle Ihres Azure Databricks-Benutzerkontos und persönlichen Zugriffstokens zu verwenden. Dies hat unter anderem folgende Vorteile:
- Gewähren und Einschränken des Zugriffs auf Ressourcen unabhängig von Benutzer*innen.
- Benutzer*innen ermöglichen, ihre eigenen Zugriffstoken besser zu schützen.
- Deaktivieren oder Löschen eines Dienstprinzipals, ohne dass sich dies auf andere Benutzer*innen auswirkt.
- Entfernen von Benutzer*innen, wenn sie die Organisation verlassen, ohne dadurch Dienstprinzipale zu beeinträchtigen.
Befolgen Sie diese Anweisungen, um Terraform zum Erstellen eines verwalteten Microsoft Entra ID-Dienstprinzipals in Azure zu verwenden: Verwenden Sie den Terraform-Anbieter von Databricks, um den Microsoft Entra ID-Dienstprinzipal mit Ihrem Azure Databricks-Arbeitsbereich zu verknüpfen, und erstellen Sie für den Dienstprinzipal anschließend optional ein Token in Microsoft Entra ID oder ein OAuth-Token in Azure Databricks.
Anforderungen
- Die Terraform-Befehlszeilenschnittstelle. Weitere Informationen finden Sie unter Herunterladen von Terraform.
- Die Azure CLI, die durch das Ausführen des
az login
-Befehls beim Microsoft Entra ID-Zielabonnement angemeldet ist. Informationen zum Anmelden mit einem Microsoft Entra ID-Dienstprinzipal finden Sie unter Azure CLI-Anmeldung mit einem Microsoft Entra ID-Dienstprinzipal. Informationen zum Anmelden mit einem Azure Databricks-Benutzerkonto finden Sie unter Azure CLI-Anmeldung mit einem Azure Databricks-Benutzerkonto.
Schritt 1: Erstellen des Dienstprinzipals
Wenn Sie bereits über einen verwalteten Dienstprinzipal in Microsoft Entra ID verfügen, fahren Sie mit Schritt 2 fort.
Erstellen Sie in Ihrem Terminal ein leeres Verzeichnis, und wechseln Sie dann in dieses Verzeichnis. (Jeder separate Satz von Terraform-Konfigurationsdateien muss sich in einem eigenen Verzeichnis befinden.) Beispiel:
mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo
.mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo
Erstellen Sie in diesem leeren Verzeichnis eine Datei namens
main.tf
. Fügen Sie dieser Datei den folgenden Inhalt hinzu, und speichern Sie dann die Datei.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 }
Erstellen Sie im selben Verzeichnis eine Datei namens
terraform.tfvars
. Fügen Sie den folgenden Inhalt zu dieser Datei hinzu, indem Sie den folgenden Wert ersetzen, und speichern Sie die Datei dann:- Ersetzen Sie den
azure_service_principal_display_name
-Wert durch einen Anzeigenamen für den Microsoft Entra ID-Dienstprinzipal.
azure_service_principal_display_name = "<A display name for the <entra-service-principal>>"
- Ersetzen Sie den
Initialisieren Sie das Arbeitsverzeichnis, das die Datei
main.tf
enthält, indem Sie den Befehlterraform init
ausführen. Weitere Informationen finden Sie auf der Terraform-Website unter Befehl: init.terraform init
Überprüfen Sie, ob Syntaxfehler in der Konfiguration vorhanden sind, indem Sie den Befehl
terraform validate
ausführen. Weitere Informationen finden Sie auf der Terraform-Website unter Befehl: validate.terraform validate
Wenden Sie durch Ausführen des Befehls
terraform apply
die erforderlichen Änderungen an, um den gewünschten Zustand der Konfiguration zu erreichen. Weitere Informationen finden Sie auf der Terraform-Website unter Befehl: apply.terraform apply
Nachdem Sie den Dienstprinzipal erstellt haben, kopieren Sie die Ausgabewerte azure_client_id
und azure_client_secret
, da Sie diese später noch benötigen.
Um den azure_client_secret
-Wert abzurufen, sehen Sie sich den Wert von outputs.client_secret.value
in der Datei terraform.tfstate
an, die sich in dem Arbeitsverzeichnis befindet, das die main.tf
-Datei enthält.
Schritt 2: Hinzufügen des Dienstprinzipals zum Azure Databricks-Arbeitsbereich
Hinweis
Im Folgenden wird beschrieben, wie ein Dienstprinzipal auf Azure Databricks-Arbeitsbereichsebene hinzugefügt wird. Wenn Ihr Azure Databricks-Arbeitsbereich für den Identitätsverbund aktiviert ist, synchronisiert der folgende Inhalt auch automatisch den Dienstprinzipal mit dem zugehörigen Azure Databricks-Konto.
Erstellen Sie in Ihrem Terminal ein leeres Verzeichnis, und wechseln Sie dann in dieses Verzeichnis. Jeder separate Gruppe von Terraform-Konfigurationsdateien muss sich in einem eigenen Verzeichnis befinden. Beispiel:
mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo
.mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo
Erstellen Sie in diesem leeren Verzeichnis eine Datei namens
main.tf
. Fügen Sie dieser Datei den folgenden Inhalt hinzu, und speichern Sie dann die Datei.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." }
Hinweis
Informationen zum Hinzufügen dieses Dienstprinzipals zu Gruppen und zum Hinzufügen von Berechtigungen für dieses Dienstprinzipal finden Sie unter databricks_service_principal auf der Terraform-Website.
Erstellen Sie im selben Verzeichnis eine Datei namens
terraform.tfvars
. Fügen Sie den folgenden Inhalt zu dieser Datei hinzu, indem Sie die folgenden Werte ersetzen, und speichern Sie die Datei dann:- Ersetzen Sie den
databricks_host
-Wert durch die URL des Azure Databricks-Arbeitsbereichs. - Ersetzen Sie den
azure_client_id
-Wert durch denazure_client_id
-Wert aus Schritt 1. - Ersetzen Sie den
databricks_service_principal_display_name
-Wert durch einen Arbeitsbereichsanzeigenamen für den Azure Databricks-Dienstprinzipal.
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>"
- Ersetzen Sie den
Initialisieren Sie das Arbeitsverzeichnis, das die Datei
main.tf
enthält, indem Sie den Befehlterraform init
ausführen. Weitere Informationen finden Sie auf der Terraform-Website unter Befehl: init.terraform init
Überprüfen Sie, ob Syntaxfehler in der Konfiguration vorhanden sind, indem Sie den Befehl
terraform validate
ausführen. Weitere Informationen finden Sie auf der Terraform-Website unter Befehl: validate.terraform validate
Wenden Sie durch Ausführen des Befehls
terraform apply
die erforderlichen Änderungen an, um den gewünschten Zustand der Konfiguration zu erreichen. Weitere Informationen finden Sie auf der Terraform-Website unter Befehl: apply.terraform apply
Nachdem Sie den Dienstprinzipal erstellt haben, kopieren Sie den databricks_service_principal_application_id
-Ausgabewert, da Sie ihn benötigen, um ein Microsoft Entra ID-Token für den Dienstprinzipal zu erstellen.
(Optional) Schritt 3: Erstellen eines Microsoft Entra ID-Zugriffstokens für einen Microsoft Entra ID-Dienstprinzipal
Databricks empfiehlt nicht, Microsoft Entra ID-Tokens für Microsoft Entra ID-Dienstprinzipale manuell zu erstellen. Der Grund dafür ist, dass jedes Microsoft Entra ID-Token kurzlebig ist und normalerweise innerhalb einer Stunde abläuft. Nach diesem Zeitpunkt müssen Sie manuell ein Microsoft Entra ID-Ersatztoken generieren. Verwenden Sie stattdessen eines der teilnehmenden Tools oder SDKs, die den Databricks-Clientstandard für die einheitliche Authentifizierung implementieren. Diese Tools und SDKs generieren und ersetzen automatisch abgelaufene Microsoft Entra ID-Tokens für Sie, wobei die folgenden Databricks-Authentifizierungstypen verwendet werden:
- Authentifizierung von von Azure verwalteten Identitäten
- Microsoft Entra ID-Dienstprinzipalauthentifizierung
- Azure CLI-Authentifizierung
Wenn Sie manuell ein Microsoft Entra ID-Token für einen Microsoft Entra ID-Dienstprinzipal erstellen müssen, sammeln Sie die folgenden Informationen, und befolgen Sie dann die Anweisungen unter Abrufen eines Microsoft Entra ID-Zugriffstokens mit der REST-API der Microsoft Identity Platform oder Abrufen eines Microsoft Entra ID-Zugriffstokens mit der Azure CLI:
- Die Mandanten-ID für Ihren Microsoft Entra ID-Dienstprinzipal, die Sie in den Anweisungen als Mandanten-ID/Verzeichnis-ID (Mandant) /
<tenant-id>
verwenden werden. Informationen zum Abrufen der Mandanten-ID finden Sie unter Bereitstellen eines Dienstprinzipals im Azure-Portal. - Der
databricks_service_principal_application_id
-Wert aus Schritt 2, den Sie in den Anweisungen als Client-ID/Anwendungs-ID (Client) /<client-id>
verwenden. - Der
azure_client_secret
-Wert aus Schritt 1, den Sie in den Anweisungen als geheimen Clientschlüssel/Wert /<client-secret>
verwenden werden.
Kopieren Sie nach dem Erstellen des Microsoft Entra ID-Tokens den access_token
-Wert, da Sie ihn Ihrem Skript, Ihrer App oder Ihrem System bereitstellen müssen.
(Optional) Schritt 4: Erstellen eines Azure Databricks-OAuth-Tokens für einen Microsoft Entra ID-Dienstprinzipal
Databricks empfiehlt nicht, OAuth-Token in Azure Databricks für verwaltete Dienstprinzipale in Microsoft Entra ID manuell zu erstellen. Dies liegt daran, dass jedes Azure Databricks-OAuth-Token kurzlebig ist und normalerweise innerhalb einer Stunde abläuft. Nach diesem Zeitpunkt müssen Sie manuell ein Azure Databricks-OAuth-Ersatztoken generieren. Verwenden Sie stattdessen eines der teilnehmenden Tools oder SDKs, die den Databricks-Clientstandard für die einheitliche Authentifizierung implementieren. Diese Tools und SDKs generieren und ersetzen abgelaufene Azure Databricks-OAuth-Token automatisch für Sie. Dabei wird Authentifizierung des Zugriffs bei Azure Databricks mit einem Dienstprinzipal unter Verwendung von OAuth (OAuth M2M) verwendet.
Wenn Sie ein OAuth-Token in Azure Databricks für einen Microsoft Entra ID-Dienstprinzipal manuell erstellen müssen, lesen Sie den Artikel Manuelles Generieren und Verwenden von Zugriffstoken für die OAuth-Computer-zu-Computer-Authentifizierung (M2M).