Approvisionner un principal de service en utilisant Terraform
Remarque
Pour approvisionner un principal de service géré Microsoft Entra ID à l’aide du Portail Azure et de l’interface utilisateur Azure Databricks à la place, consultez Gérer les principaux de service.
Les principaux de service gérés Microsoft Entra ID diffèrent des identités managées pour les ressources Azure. Azure Databricks les prend également en charge pour l’authentification. Pour découvrir comment utiliser les identités managées pour les ressources Azure plutôt que des principaux de service gérés Microsoft Entra ID pour l’authentification Azure Databricks, consultez Configurer et utiliser l’authentification des identités gérées Azure pour l’automatisation Azure Databricks.
Un principal de service est une identité créée pour être utilisée avec des outils et systèmes automatisés (comme les scripts, les applications et les plateformes CI/CD). Databricks recommande d’utiliser un principal de service et son jeton OAuth (ou son jeton d’accès personnel) plutôt que votre compte d’utilisateur Azure Databricks et votre jeton d’accès personnel. Voici les avantages :
- Accorder et restreindre l’accès aux ressources indépendamment de l’utilisateur.
- Permettre aux utilisateurs de mieux protéger leurs jetons d’accès.
- Désactiver ou supprimer un principal de service sans affecter les autres utilisateurs.
- Supprimer un utilisateur qui quitte l’organisation sans affecter le principal de service.
Suivez ces instructions pour utiliser Terraform afin de créer un principal de service géré Microsoft Entra ID dans Azure, utiliser le fournisseur Databricks Terraform pour ajouter le principal de service Microsoft Entra ID à votre espace de travail Azure Databricks, puis éventuellement créer un jeton Microsoft Entra ID ou un jeton OAuth Azure Databricks pour le principal de service.
Spécifications
- Interface CLI Terraform. Consultez Télécharger Terraform.
- Azure CLI, connecté à l’abonnement Microsoft Entra ID cible en exécutant la commande
az login
. Pour vous connecter en utilisant un principal de service Microsoft Entra ID, consultez Connexion Azure CLI avec un principal de service Microsoft Entra ID. Pour vous connecter à l’aide d’un compte d’utilisateur Azure Databricks, consultez la connexion Azure CLI avec un compte d’utilisateur Azure Databricks.
Étape 1 : Créer le principal de service
Si vous disposez déjà d’un principal de service géré Microsoft Entra ID, passez à l’étape 2.
Dans votre terminal, créez un répertoire vide, puis basculez vers celui-ci. (Chaque ensemble distinct de fichiers de configuration Terraform doit se trouver dans son propre répertoire.) Par exemple :
mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo
.mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo
Dans ce répertoire vide, créez un fichier nommé
main.tf
. Ajoutez le contenu suivant à ce fichier, puis enregistrez-le.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 }
Dans le même répertoire, créez un fichier nommé
terraform.tfvars
. Ajoutez le contenu suivant à ce fichier, en remplaçant la valeur suivante, puis enregistrez le fichier :- Remplacez la valeur
azure_service_principal_display_name
par un nom complet pour le principal de service Microsoft Entra ID.
azure_service_principal_display_name = "<A display name for the <entra-service-principal>>"
- Remplacez la valeur
Initialisez le répertoire de travail contenant le fichier
main.tf
en exécutant la commandeterraform init
. Pour plus d’informations, consultez Command: init sur le site web de Terraform.terraform init
Vérifiez s’il existe des erreurs de syntaxe dans la configuration en exécutant la commande
terraform validate
. Pour plus d’informations, consultez Command: validate sur le site web de Terraform.terraform validate
Appliquez les modifications nécessaires pour atteindre l’état souhaité de la configuration en exécutant la commande
terraform apply
. Pour plus d’informations, consultez Command: apply sur le site web de Terraform.terraform apply
Après la création du principal de service, copiez les valeurs de sortie azure_client_id
et azure_client_secret
, car vous allez en avoir besoin ultérieurement.
Pour obtenir la valeur azure_client_secret
, consultez la valeur de outputs.client_secret.value
dans le fichier terraform.tfstate
, qui se trouve dans le répertoire de travail contenant le fichier main.tf
.
Étape 2 : Ajouter le principal de service à l’espace de travail Azure Databricks
Remarque
Le contenu suivant ajoute un principal de service au niveau de l’espace de travail Azure Databricks. Si votre espace de travail Azure Databricks est activé pour la fédération des identités, le contenu suivant synchronise également automatiquement le principal de service avec le compte Azure Databricks associé.
Dans votre terminal, créez un répertoire vide, puis basculez vers celui-ci. Chaque ensemble de fichiers de configuration Terraform doit se trouver dans son propre répertoire. Par exemple :
mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo
.mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo
Dans ce répertoire vide, créez un fichier nommé
main.tf
. Ajoutez le contenu suivant à ce fichier, puis enregistrez-le.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." }
Notes
Pour ajouter ce principal de service à des groupes et ajouter des droits à ce principal de service, consultez databricks_service_principal sur le site web Terraform.
Dans le même répertoire, créez un fichier nommé
terraform.tfvars
. Ajoutez le contenu suivant à ce fichier, en remplaçant la valeur suivante, puis enregistrez le fichier :- Remplacez la valeur
databricks_host
par l’URL de l’espace de travail Azure Databricks. - Remplacez la valeur
azure_client_id
par la valeurazure_client_id
de l’étape 1. - Remplacez la valeur
databricks_service_principal_display_name
par un nom complet d’espace de travail pour le principal de service 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>"
- Remplacez la valeur
Initialisez le répertoire de travail contenant le fichier
main.tf
en exécutant la commandeterraform init
. Pour plus d’informations, consultez Command: init sur le site web de Terraform.terraform init
Vérifiez s’il existe des erreurs de syntaxe dans la configuration en exécutant la commande
terraform validate
. Pour plus d’informations, consultez Command: validate sur le site web de Terraform.terraform validate
Appliquez les modifications nécessaires pour atteindre l’état souhaité de la configuration en exécutant la commande
terraform apply
. Pour plus d’informations, consultez Command: apply sur le site web de Terraform.terraform apply
Après avoir créé le principal de service, copiez la valeur de sortie databricks_service_principal_application_id
, car vous allez en avoir besoin pour créer un jeton Microsoft Entra ID pour le principal de service.
(Facultatif) Étape 3 : créer un jeton d’accès Microsoft Entra ID pour un principal de service Microsoft Entra ID
Databricks ne vous recommande pas de créer manuellement des jetons Microsoft Entra ID pour les principaux de service Microsoft Entra ID. C’est parce que chaque jeton Microsoft Entra ID est de courte durée et expire généralement dans l’heure. Au-delà de ce délai, vous devez générer manuellement un jeton Microsoft Entra ID de remplacement. Utilisez plutôt l’un des outils ou SDK participants qui implémentent la norme d’authentification unifiée du client Databricks. Ces outils et SDK génèrent et remplacent automatiquement pour vous les jetons Microsoft Entra ID expirés, en tirant parti des types d’authentification Databricks suivants :
- Authentification par identités managées Azure
- Authentification du principal de service MS Entra
- Authentification Azure CLI
Si vous devez créer manuellement un jeton Microsoft Entra ID pour un principal de service Microsoft Entra ID, rassemblez les informations suivantes, puis suivez les instructions dans Obtenir un jeton d’accès Microsoft Entra ID avec l’API REST de la plateforme d’identité Microsoft ou Obtenir un jeton d’accès Microsoft Entra ID avec Azure CLI :
- ID de locataire de votre principal de service Microsoft Entra ID, que vous utiliserez comme ID de locataire / ID d’annuaire (locataire) /
<tenant-id>
dans les instructions. Pour obtenir l’ID de locataire, consultez Provisionner un principal de service dans Portail Azure. - Valeur
databricks_service_principal_application_id
de l’étape 2, que vous utiliserez comme ID client/ ID d’application (client) /<client-id>
dans les instructions. - Valeur
azure_client_secret
de l’étape 1, que vous utiliserez comme clé secrète client/ valeur /<client-secret>
dans les instructions.
Après avoir créé le jeton Microsoft Entra ID, copiez la valeur access_token
, car vous devrez la fournir à votre script, application ou système.
(Facultatif) Étape 4 : créer un jeton OAuth Azure Databricks pour un principal de service Microsoft Entra ID
Databricks ne vous recommande pas de créer manuellement des jetons OAuth Azure Databricks pour les principaux de service gérés Microsoft Entra ID. Cela est dû au fait que chaque jeton OAuth Azure Databricks est de courte durée et expire généralement après une heure. Au-delà de ce délai, vous devez générer manuellement un jeton OAuth Azure Databricks de remplacement. Utilisez plutôt l’un des outils ou SDK participants qui implémentent la norme d’authentification unifiée du client Databricks. Ces outils et SDK génèrent et remplacent automatiquement les jetons OAuth Azure Databricks expirés pour vous, en tirant parti des informations contenues dans Authentifier l’accès à Azure Databricks avec un principal de service à l’aide d’OAuth (OAuth M2M).
S’il vous faut créer manuellement un jeton OAuth Azure Databricks pour un principal de service Microsoft Entra ID, consultez Générer et utiliser manuellement des jetons d’accès pour l’authentification M2M OAuth.