Provisionar uma entidade de serviço usando o Terraform
Nota
Para provisionar uma entidade de serviço gerenciado do Microsoft Entra ID usando o portal do Azure e a interface do usuário do Azure Databricks, consulte Gerenciar entidades de serviço.
As entidades de serviço gerenciado do Microsoft Entra ID diferem das identidades gerenciadas para recursos do Azure, que o Azure Databricks também oferece suporte para autenticação. Para saber como usar identidades gerenciadas para recursos do Azure em vez de entidades de serviço gerenciado do Microsoft Entra ID para autenticação do Azure Databricks, consulte Configurar e usar a autenticação de identidades gerenciadas do Azure para a automação do Azure Databricks.
Uma entidade de serviço é uma identidade para ferramentas e sistemas automatizados, como scripts, aplicativos e plataformas de CI/CD. O Databricks recomenda usar uma entidade de serviço e seu token OAuth ou token de acesso pessoal em vez de sua conta de usuário e token de acesso pessoal do Azure Databricks. Os benefícios incluem:
- Conceder e restringir o acesso a recursos independentemente de um utilizador.
- Permitindo que os usuários protejam melhor seus próprios tokens de acesso.
- Desativar ou excluir uma entidade de serviço sem afetar outros usuários.
- Remover um usuário quando ele sai da organização sem afetar nenhuma entidade de serviço.
Siga estas instruções para usar o Terraform para criar uma entidade de serviço gerenciado do Microsoft Entra ID no Azure, use o provedor Databricks Terraform para vincular a entidade de serviço do Microsoft Entra ID ao seu espaço de trabalho do Azure Databricks e, opcionalmente, crie um token Microsoft Entra ID ou token OAuth do Azure Databricks para a entidade de serviço.
Requisitos
- A CLI Terraform. Consulte Download Terraform.
- A CLI do Azure, conectada à assinatura de ID do Microsoft Entra de destino executando o
az login
comando. Para iniciar sessão utilizando uma entidade de serviço do Microsoft Entra ID, consulte Início de sessão da CLI do Azure com uma entidade de serviço do Microsoft Entra ID. Para iniciar sessão utilizando uma conta de utilizador do Azure Databricks, consulte Início de sessão da CLI do Azure com uma conta de utilizador do Azure Databricks.
Etapa 1: Criar a entidade de serviço
Se você já tiver uma entidade de serviço gerenciada do Microsoft Entra ID disponível, pule para a Etapa 2.
No seu terminal, crie um diretório vazio e, em seguida, mude para ele. (Cada conjunto separado de arquivos de configuração do Terraform deve estar em seu próprio diretório.) Por exemplo:
mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo
.mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo
Neste diretório vazio, crie um arquivo chamado
main.tf
. Adicione o seguinte conteúdo a este ficheiro e, em seguida, guarde o ficheiro.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 }
No mesmo diretório, crie um arquivo chamado
terraform.tfvars
. Adicione o seguinte conteúdo a este ficheiro, substituindo o seguinte valor e, em seguida, guarde o ficheiro:- Substitua o
azure_service_principal_display_name
valor por um nome de exibição para a entidade de serviço Microsoft Entra ID.
azure_service_principal_display_name = "<A display name for the <entra-service-principal>>"
- Substitua o
Inicialize o diretório de trabalho que contém o
main.tf
arquivo executando oterraform init
comando. Para obter mais informações, consulte Command: init no site da Terraform.terraform init
Verifique se há erros de sintaxe na configuração executando o
terraform validate
comando. Para obter mais informações, consulte Comando: validar no site do Terraform.terraform validate
Aplique as alterações necessárias para alcançar o estado desejado da configuração executando o
terraform apply
comando. Para obter mais informações, consulte Comando: aplicar no site da Terraform.terraform apply
Depois de criar a entidade de serviço, copie os valores de saída azure_client_id
e azure_client_secret
, pois precisará deles mais tarde.
Para obter o valor azure_client_secret
, consulte o valor de outputs.client_secret.value
no arquivo terraform.tfstate
, que está no diretório de trabalho que contém o arquivo main.tf
.
Etapa 2: Adicionar a entidade de serviço ao espaço de trabalho do Azure Databricks
Nota
O conteúdo a seguir adiciona uma entidade de serviço no nível do espaço de trabalho do Azure Databricks. Se o seu espaço de trabalho do Azure Databricks estiver habilitado para federação de identidades, o conteúdo a seguir também sincronizará automaticamente a entidade de serviço com a conta relacionada do Azure Databricks.
No seu terminal, crie um diretório vazio e, em seguida, mude para ele. Cada conjunto separado de arquivos de configuração do Terraform deve estar em seu próprio diretório. Por exemplo:
mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo
.mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo
Neste diretório vazio, crie um arquivo chamado
main.tf
. Adicione o seguinte conteúdo a este ficheiro e, em seguida, guarde o ficheiro.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 adicionar essa entidade de serviço a grupos e adicionar direitos a essa entidade de serviço, consulte databricks_service_principal no site da Terraform.
No mesmo diretório, crie um arquivo chamado
terraform.tfvars
. Adicione o seguinte conteúdo a este ficheiro, substituindo os seguintes valores e, em seguida, guarde o ficheiro:- Substitua o
databricks_host
valor pela URL do espaço de trabalho do Azure Databricks. - Substitua o
azure_client_id
valor peloazure_client_id
valor da Etapa 1. - Substitua o
databricks_service_principal_display_name
valor por um nome de exibição de espaço de trabalho para a entidade de serviço do 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>"
- Substitua o
Inicialize o diretório de trabalho que contém o
main.tf
arquivo executando oterraform init
comando. Para obter mais informações, consulte Command: init no site da Terraform.terraform init
Verifique se há erros de sintaxe na configuração executando o
terraform validate
comando. Para obter mais informações, consulte Comando: validar no site do Terraform.terraform validate
Aplique as alterações necessárias para alcançar o estado desejado da configuração executando o
terraform apply
comando. Para obter mais informações, consulte Comando: aplicar no site da Terraform.terraform apply
Depois de criar a entidade de serviço, copie o valor de databricks_service_principal_application_id
saída, pois você precisará dele para criar um token de ID do Microsoft Entra para a entidade de serviço.
(Opcional) Etapa 3: Criar um token de acesso do Microsoft Entra ID para uma entidade de serviço do Microsoft Entra ID
O Databricks não recomenda que você crie tokens de ID do Microsoft Entra para entidades de serviço do Microsoft Entra ID manualmente. Isso ocorre porque cada token de ID do Microsoft Entra é de curta duração, normalmente expirando dentro de uma hora. Após esse período, você deve gerar manualmente um token de ID do Microsoft Entra de substituição. Em vez disso, use uma das ferramentas participantes ou SDKs que implementam o padrão de autenticação unificada do cliente Databricks. Essas ferramentas e SDKs geram e substituem automaticamente tokens de ID do Microsoft Entra expirados para você, aproveitando os seguintes tipos de autenticação Databricks:
- Autenticação de identidades gerenciadas do Azure
- Autenticação da entidade de serviço do MS Entra
- Autenticação da CLI do Azure
Se precisar criar manualmente um token de Microsoft Entra ID para uma entidade de serviço do Microsoft Entra ID, reúna as seguintes informações e siga as instruções em Obter um token de acesso do Microsoft Entra ID com a API REST da plataforma de identidade da Microsoft ou Obter um token de acesso do Microsoft Entra ID com a CLI do Azure:
- A ID do locatário para a entidade de serviço do Microsoft Entra ID, que você usará como ID do Locatário / ID /
<tenant-id>
do Diretório (locatário) nas instruções. Para obter a ID do locatário, consulte Provisionar uma entidade de serviço no portal do Azure. - O
databricks_service_principal_application_id
valor da Etapa 2, que você usará como ID do Cliente / ID /<client-id>
do Aplicativo (cliente) nas instruções. - O
azure_client_secret
valor da Etapa 1, que você usará como o segredo do cliente / Valor /<client-secret>
nas instruções.
Depois de criar o token de ID do Microsoft Entra, copie o access_token
valor, pois você precisará fornecê-lo ao seu script, aplicativo ou sistema.
(Opcional) Etapa 4: Criar um token OAuth do Azure Databricks para uma entidade de serviço Microsoft Entra ID
O Databricks não recomenda que você crie tokens OAuth do Azure Databricks para entidades de serviço gerenciado do Microsoft Entra ID manualmente. Isso ocorre porque cada token OAuth do Azure Databricks é de curta duração, normalmente expirando dentro de uma hora. Após esse período, você deve gerar manualmente um token OAuth do Azure Databricks de substituição. Em vez disso, use uma das ferramentas participantes ou SDKs que implementam o padrão de autenticação unificada do cliente Databricks. Essas ferramentas e SDKs geram e substituem automaticamente tokens OAuth do Azure Databricks expirados para você, aproveitando o acesso Authenticate ao Azure Databricks com uma entidade de serviço usando OAuth (OAuth M2M).
Se você precisar criar manualmente um token OAuth do Azure Databricks para uma entidade de serviço do Microsoft Entra ID, consulte Gerar e usar manualmente tokens de acesso para autenticação OAuth M2M.