Compartir a través de


Aprovisionamiento de una entidad de servicio mediante Terraform

Nota:

Para aprovisionar una entidad de servicio administrada de Microsoft Entra ID mediante Azure Portal y la interfaz de usuario de Azure Databricks en su lugar, consulte Entidades de servicio.

Las entidades de servicio administradas de Microsoft Entra ID difieren de las identidades administradas de los recursos de Azure, que Azure Databricks también admite para la autenticación. Para obtener información sobre cómo usar identidades administradas para recursos de Azure en lugar de entidades de servicio administradas de Microsoft Entra ID para la autenticación de Azure Databricks, consulte Uso de identidades administradas de Azure con Azure Databricks.

Una entidad de servicio es una identidad que se crea para usarse junto con herramientas y sistemas automatizados, como scripts, aplicaciones, y plataformas de CI/CD. Databricks recomienda usar una entidad de servicio y su token de OAuth o token de acceso personal en lugar de la cuenta de usuario de Azure Databricks y el token de acceso personal. Dicha integración aporta las siguientes ventajas:

  • .Conceder y restringir el acceso a los recursos independientemente de un usuario.
  • Permitir que los usuarios protejan mejor sus propios tokens de acceso.
  • Deshabilitar o eliminar una entidad de servicio sin afectar a otros usuarios.
  • Quitar un usuario cuando abandona la organización sin afectar a ninguna entidad de servicio.

Siga estas instrucciones para usar Terraform para crear una entidad de servicio administrada de Id. de Microsoft Entra en Azure, use el proveedor Databricks Terraform para vincular la entidad de servicio de Microsoft Entra ID al área de trabajo de Azure Databricks y, opcionalmente, cree un token de id. de Microsoft Entra o un token de OAuth de Azure Databricks para la entidad de servicio.

Requisitos

  • La CLI de Terraform. Consulte Descargar Terraform.
  • La CLI de Azure, que inició sesión en la suscripción de Microsoft Entra ID de destino, ejecute el comando az login. Para iniciar sesión con una cuenta de usuario o una entidad de servicio, consulte Inicio de sesión con la CLI de Azure.

Paso 1: Creación de la entidad de servicio

Si ya tiene disponible una entidad de servicio administrada de Microsoft Entra ID, vaya al paso 2.

  1. En el terminal, cree un directorio vacío y, a continuación, cambie a él (cada conjunto independiente de archivos de configuración de Terraform debe estar en su propio directorio). Por ejemplo: 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. En este directorio vacío, cree un archivo denominado main.tf. Agregue el código siguiente a este archivo y, después, guárdelo.

    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. En el mismo directorio, cree un archivo denominado terraform.tfvars. Agregue el siguiente contenido a este archivo reemplazando el siguiente valor y, a continuación, guarde el archivo:

    • Reemplace el valor azure_service_principal_display_name por el nombre para mostrar de la entidad de servicio de Microsoft Entra ID.
    azure_service_principal_display_name = "<A display name for the <entra-service-principal>>"
    
  4. Inicialice el directorio de trabajo que contiene el archivo main.tf ejecutando el comando terraform init. Para más información, consulte la sección sobre el comando init en el sitio web de Terraform.

    terraform init
    
  5. Compruebe si hay errores de sintaxis en la configuración mediante la ejecución del comando terraform validate. Para más información, consulte la sección sobre el comando validate en el sitio web de Terraform.

    terraform validate
    
  6. Aplique los cambios necesarios para alcanzar el estado deseado de la configuración, para lo que debe ejecutar el comando terraform apply. Para más información, consulte la sección sobre el comando apply en el sitio web de Terraform.

    terraform apply
    

Después de crear la entidad de servicio, copie los valores azure_client_id y azure_client_secret, ya que los necesitará más adelante.

Para obtener el valor azure_client_secret, compruebe el valor de outputs.client_secret.value en el archivo terraform.tfstate, que se encuentra en el directorio de trabajo que contiene el archivo main.tf.

Paso 2: Adición de la entidad de servicio al área de trabajo de Azure Databricks

Nota:

En el contenido siguiente, se agrega una entidad de servicio en el nivel de área de trabajo de Azure Databricks. Si el área de trabajo de Azure Databricks está habilitada para la federación de identidades, el siguiente contenido también sincroniza automáticamente la entidad de servicio con la cuenta de Azure Databricks relacionada.

  1. En el terminal, cree un directorio vacío y, a continuación, cambie a él Cada conjunto independiente de archivos de configuración de Terraform debe estar en su propio directorio. Por ejemplo: 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. En este directorio vacío, cree un archivo denominado main.tf. Agregue el código siguiente a este archivo y, después, guárdelo.

    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."
    }
    

    Nota:

    Para agregar esta entidad de servicio a grupos y agregar derechos a esta entidad de servicio, consulte databricks_service_principal en el sitio web de Terraform.

  3. En el mismo directorio, cree un archivo denominado terraform.tfvars. Agregue el siguiente contenido a este archivo reemplazando los siguientes valores y, a continuación, guarde el archivo:

    • Reemplace el valor databricks_host por la dirección URL del área de trabajo de Azure Databricks.
    • Reemplace el valor azure_client_id con el valor azure_client_id del paso 1.
    • Reemplace el valor databricks_service_principal_display_name por un nombre para mostrar del área de trabajo para la entidad de servicio de 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. Inicialice el directorio de trabajo que contiene el archivo main.tf ejecutando el comando terraform init. Para más información, consulte la sección sobre el comando init en el sitio web de Terraform.

    terraform init
    
  5. Compruebe si hay errores de sintaxis en la configuración mediante la ejecución del comando terraform validate. Para más información, consulte la sección sobre el comando validate en el sitio web de Terraform.

    terraform validate
    
  6. Aplique los cambios necesarios para alcanzar el estado deseado de la configuración, para lo que debe ejecutar el comando terraform apply. Para más información, consulte la sección sobre el comando apply en el sitio web de Terraform.

    terraform apply
    

Después de crear la entidad de servicio, copie el valor de salida databricks_service_principal_application_id, ya que lo necesitará para crear un token de Microsoft Entra ID para la entidad de servicio.

(Opcional) Paso 3: Cree un token de acceso de Microsoft Entra ID para una entidad de servicio de Microsoft Entra ID

Importante

Databricks no recomienda crear manualmente tokens de identificador de Microsoft Entra. Expiran en un plazo de una hora y requieren reemplazo manual. En su lugar, use herramientas o SDK con autenticación unificada para controlar la administración de tokens automáticamente.

Si necesita crear manualmente un token de Microsoft Entra ID para una entidad de servicio de Microsoft Entra ID, recopile la siguiente información y, a continuación, siga las instrucciones de Generación de un token:

  • El id. de inquilino de la entidad de servicio de Microsoft Entra ID, que usará como id. de inquilino o id. de directorio (inquilino) / <tenant-id> en las instrucciones. Para obtener el ID de inquilino, consulte Crear un principal de servicio.
  • El valor databricks_service_principal_application_id del paso 2, que usará como id. de cliente o id. de aplicación (cliente) / <client-id> en las instrucciones.
  • El valor azure_client_secret del paso 1, que usará como secreto de cliente o valor / <client-secret> en las instrucciones.

Después de que haya creado el token de Microsoft Entra ID, copie el valor del campo access_token, ya que deberá proporcionarlo en el script, la aplicación o el sistema.

(Opcional) Paso 4: Cree un token de OAuth de Azure Databricks para una entidad de servicio de Microsoft Entra ID

Importante

Databricks no recomienda crear manualmente tokens de OAuth de Azure Databricks para entidades de servicio administradas de Identidad de Microsoft Entra. Expiran en un plazo de una hora y requieren reemplazo manual. En su lugar, use herramientas o SDKs que implementan la autenticación unificada para generar y reemplazar tokens automáticamente mediante la autorización del acceso de la entidad de servicio a Azure Databricks con OAuth.

Si necesita crear manualmente un token OAuth de Azure Databricks para un principal de servicio de Microsoft Entra ID, consulte Generación manual de tokens de acceso OAuth M2M.