Key Vault -> Databricks 自动化集成

KeyVault -> Databricks automatic integration

我已按照 Create an Azure Key Vault-backed secret scope 将 Databricks 与 Key Vault 集成,一切正常。不幸的是,这需要手动干预,这会破坏我们的 'full automated infrastructure' 方法。有什么方法可以自动执行此步骤吗?

UPDATE: You create a Databricks-backed secret scope using the Databricks CLI (version 0.7.1 and above). Alternatively, you can use the Secrets API.


A​​zure Key Vault 支持的秘密范围创建似乎没有公开可用的 API 调用,这与 Databricks 支持的秘密范围创建不同。这是由 secret scopes doc page:

上的 'Note' 支持的

Creating an Azure Key Vault-backed secret scope is supported only in the Azure Databricks UI. You cannot create a scope using the Secrets CLI or API.

您所要求的功能的请求是去年提出的,但没有给出预计到达时间。

我看了一下UI页面的请求。虽然表单数据足够简单,但 headers 和安全措施使编程访问变得不切实际。如果您 dead-set 正在自动化这部分,您可以使用其中一种工具来自动将光标环绕在屏幕上并为您点击东西。

现在可以,但您不能使用服务主体令牌。它必须是阻碍自动化的用户令牌。

参考微软文档: https://docs.microsoft.com/en-us/azure/databricks/security/secrets/secret-scopes#create-an-azure-key-vault-backed-secret-scope-using-the-databricks-cli

您可以使用 Databricks Terraform provider 创建由 Azure KeyVault 烘焙的秘密范围。但由于 Azure 的限制,它应该通过使用用户的 AAD 令牌(通常使用 azure cli)来完成。这是从现有 KeyVault 创建秘密范围的工作片段:

terraform {
  required_providers {
    databricks = {
      source = "databrickslabs/databricks"
      version = "0.2.9"
    }
  }
}

provider "azurerm" {
  version = "2.33.0"
  features {}
}

data "azurerm_databricks_workspace" "example" {
  name                = var.workspace_name
  resource_group_name = var.resource_group
}

provider "databricks" {
  azure_workspace_resource_id = data.azurerm_databricks_workspace.example.id
}

data "azurerm_key_vault" "example" {
  name                = var.keyvault_name
  resource_group_name = var.resource_group
}

resource "databricks_secret_scope" "example" {
  name = data.azurerm_key_vault.example.name
  keyvault_metadata {
    resource_id = data.azurerm_key_vault.example.id
    dns_name    = data.azurerm_key_vault.example.vault_uri
  }
}

variable resource_group {
  type        = string
  description = "Resource group to deploy"
}

variable workspace_name {
  type = string
  description = "The name of DB Workspace"
}

variable keyvault_name {
  type = string
  description = "The name of DB Workspace"
}