Search code examples
terraformdatabricksterraform-provider-azureterraform-provider-databricks

Giving access to Databricks access connector Blob contributor role in terraform


How do i give access to a databricks access connector to my storage account using terraform. the below code gives error saying principal id is not guid

resource "azurerm_role_assignment" "databricks_connector_role_assignment" {
  scope                = azurerm_storage_account.storage_account.id
  role_definition_name = "Storage Blob Data Contributor"
  principal_id         = azurerm_databricks_access_connector.databricks_cdf_audit_access_connector.id
}

There is no principal_id attribute available for databricks access connector. https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/databricks_access_connector

and here is my databricks connector resource definition:

resource "azurerm_databricks_access_connector" "databricks_cdf_audit_access_connector" {
  name                = "databricks-cdf-connector"
  resource_group_name = data.azurerm_resource_group.cdf_audit_log_rg.name
  location            = var.databricks_location

  identity {
    type = "SystemAssigned"
  }

  tags = {
    Environment = var.environment
    service     = var.service
    team        = var.team
  }
}

Solution

  • As described in Unity Catalog docs you don't grant access to the connector, but rather to managed identity assigned to that connector. In Terraform managed identities are exposed under identity block.

    Assuming you use system-assigned managed identity:

    principal_id = azurerm_databricks_access_connector.databricks_cdf_audit_access_connector.identity[0].principal_id