Compartir vía


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 Administración de 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 aprender a usar identidades administradas para recursos de Azure en lugar de entidades de servicio administradas de Identificador de Entra de Microsoft para la autenticación de Azure Databricks, consulte Configuración y uso de la autenticación de identidades administradas de Azure para la automatización de 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

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

Databricks no recomienda crear tokens de Microsoft Entra ID para entidades de servicio de Microsoft Entra ID manualmente. Esto se debe a que cada token de Microsoft Entra ID es de corta duración y, por lo general, caduca en una hora. Después de este tiempo, debe generar manualmente un token de reemplazo de Microsoft Entra ID. En su lugar, usa una de las herramientas participantes o SDK que implementan el estándar de la autenticación unificada del cliente de Databricks. Estas herramientas y SDK generan y reemplazan automáticamente los tokens de Microsoft Entra ID caducados y aprovechan los siguientes tipos de autenticación de Databricks:

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 siga las instrucciones de Obtener un token de acceso de Microsoft Entra ID con la API de REST de la plataforma de identidad de Microsoft u Obtener un token de acceso de Microsoft Entra ID con la CLI de Azure:

  • 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 Aprovisionamiento de una entidad de servicio en Azure Portal.
  • 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

Databricks no recomienda crear tokens de OAuth de Azure Databricks para entidades de servicio administradas de Microsoft Entra ID manualmente. Esto se debe a que cada token de OAuth de Azure Databricks es de corta duración y, por lo general, caduca en una hora. Después de este tiempo, debes generar manualmente un token de OAuth de Azure Databricks de reemplazo. En su lugar, usa una de las herramientas participantes o SDK que implementan el estándar de la autenticación unificada del cliente de Databricks. Estas herramientas y SDK generan y reemplazan automáticamente los tokens de OAuth de Azure Databricks expirados, aprovechando Autenticación del acceso a Azure Databricks con una entidad de servicio mediante OAuth (OAuth M2M).

Si necesita crear manualmente un token de OAuth de Azure Databricks para una entidad de servicio de Microsoft Entra ID, vea Generación manual y uso de tokens de acceso para la autenticación de OAuth M2M.