<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Issue with Creating External Location Using Service Principal in Terraform in Data Governance</title>
    <link>https://community.databricks.com/t5/data-governance/issue-with-creating-external-location-using-service-principal-in/m-p/76013#M1922</link>
    <description>&lt;P&gt;There is only one reason for this. The service principal that you use does not have the right grants set on the Metastore level.&lt;BR /&gt;&lt;BR /&gt;Are you using the same service principal in your az-login? Because then it is very strange.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;Have you created the Metastore with Terraform as well? or Manually?&lt;BR /&gt;If manually, you'll have to manually grant the service principal you're using for deploying resources the right priviliges (grants).&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;If not manually, you can use &lt;A href="https://registry.terraform.io/providers/databricks/databricks/latest/docs/resources/grants" target="_self"&gt;databricks_grants&lt;/A&gt;&amp;nbsp;to grant CREATE_EXTERNAL_LOCATION (and/or others) priviliges to the service principal&lt;/P&gt;</description>
    <pubDate>Fri, 28 Jun 2024 05:53:29 GMT</pubDate>
    <dc:creator>jacovangelder</dc:creator>
    <dc:date>2024-06-28T05:53:29Z</dc:date>
    <item>
      <title>Issue with Creating External Location Using Service Principal in Terraform</title>
      <link>https://community.databricks.com/t5/data-governance/issue-with-creating-external-location-using-service-principal-in/m-p/75951#M1918</link>
      <description>&lt;P&gt;I'm facing an issue while trying to create an external location in Databricks using Terraform and a service principal. The specific error message I'm encountering is:&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Error:&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jv_v_0-1719497498809.png" style="width: 643px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/8982i619F81A836B696C4/image-dimensions/643x37/is-moderation-mode/true?v=v2" width="643" height="37" role="button" title="jv_v_0-1719497498809.png" alt="jv_v_0-1719497498809.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Here's some context:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Using Azure CLI (Az login):&lt;/STRONG&gt; The creation of the external location works without any issues when I authenticate using Az login.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Using Service Principal:&lt;/STRONG&gt; The error occurs when I switch to using a service principal for authentication in my Terraform code.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Here is a snippet of my Terraform provider configuration:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;terraform {&lt;BR /&gt;required_providers {&lt;BR /&gt;azurerm = {&lt;BR /&gt;source = "hashicorp/azurerm"&lt;BR /&gt;}&lt;BR /&gt;databricks = {&lt;BR /&gt;source = "databricks/databricks"&lt;BR /&gt;version = "1.46.0"&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;provider "azurerm" {&lt;BR /&gt;skip_provider_registration="true"&lt;BR /&gt;features {}&lt;BR /&gt;subscription_id = var.subscription_id&lt;BR /&gt;client_id = var.client_id&lt;BR /&gt;client_secret = var.client_secret&lt;BR /&gt;tenant_id = var.tenant_id&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;// Provider for databricks account&lt;BR /&gt;provider "databricks" {&lt;BR /&gt;alias = "azure_account"&lt;BR /&gt;host = "&lt;A href="https://accounts.azuredatabricks.net" target="_blank" rel="noopener"&gt;https://accounts.azuredatabricks.net&lt;/A&gt;"&lt;BR /&gt;account_id = var.account_id&lt;BR /&gt;client_id = var.client_id&lt;BR /&gt;client_secret = var.db_client_secret&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;// Provider for databricks workspace&lt;BR /&gt;provider "databricks" {&lt;BR /&gt;alias = "Workspace"&lt;BR /&gt;host = local.databricks_workspace_host&lt;BR /&gt;client_id = var.client_id&lt;BR /&gt;client_secret = var.db_client_secret&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;resource "databricks_storage_credential" "external_mi" {&lt;BR /&gt;provider = databricks.Workspace&lt;BR /&gt;name = var.storage_credential_name&lt;BR /&gt;azure_managed_identity {&lt;BR /&gt;access_connector_id = module.metastore_and_users.azurerm_databricks_access_connector_id&lt;BR /&gt;}&lt;BR /&gt;owner = var.owner&lt;BR /&gt;comment = "Storage credential for all external locations"&lt;BR /&gt;depends_on = [module.metastore_and_users.databricks_metastore_assignment]&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;output "storage_credential_result" {&lt;BR /&gt;value = {&lt;BR /&gt;storage1 = databricks_storage_credential.external_mi.name&lt;BR /&gt;storage2 = databricks_storage_credential.external_mi.owner&lt;BR /&gt;storage3 = databricks_storage_credential.external_mi.azure_managed_identity&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;// Task011 Create external location to be used as root storage by dev catalog&lt;BR /&gt;resource "databricks_external_location" "dev_location" {&lt;BR /&gt;provider = databricks.Workspace&lt;BR /&gt;name = var.external_location_name&lt;BR /&gt;url = format("abfss://%s@%s.dfs.core.windows.net/",azurerm_storage_container.dev_catalog.name,&lt;BR /&gt;module.metastore_and_users.azurerm_storage_account_unity_catalog.name)&lt;BR /&gt;credential_name = databricks_storage_credential.external_mi.id&lt;BR /&gt;owner = var.owner&lt;BR /&gt;comment = "External location used by dev catalog as root storage"&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;Can anyone provide guidance on:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;The correct way to grant the CREATE EXTERNAL LOCATION permission to a service principal in Databricks?&lt;/LI&gt;&lt;LI&gt;Any additional roles or permissions the service principal might need to successfully create an external location?&lt;/LI&gt;&lt;LI&gt;Any potential misconfigurations in my Terraform setup that could be causing this issue?&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Thanks in advance for your help!&lt;/P&gt;</description>
      <pubDate>Thu, 27 Jun 2024 14:24:30 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-governance/issue-with-creating-external-location-using-service-principal-in/m-p/75951#M1918</guid>
      <dc:creator>jv_v</dc:creator>
      <dc:date>2024-06-27T14:24:30Z</dc:date>
    </item>
    <item>
      <title>Re: Issue with Creating External Location Using Service Principal in Terraform</title>
      <link>https://community.databricks.com/t5/data-governance/issue-with-creating-external-location-using-service-principal-in/m-p/76013#M1922</link>
      <description>&lt;P&gt;There is only one reason for this. The service principal that you use does not have the right grants set on the Metastore level.&lt;BR /&gt;&lt;BR /&gt;Are you using the same service principal in your az-login? Because then it is very strange.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;Have you created the Metastore with Terraform as well? or Manually?&lt;BR /&gt;If manually, you'll have to manually grant the service principal you're using for deploying resources the right priviliges (grants).&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;If not manually, you can use &lt;A href="https://registry.terraform.io/providers/databricks/databricks/latest/docs/resources/grants" target="_self"&gt;databricks_grants&lt;/A&gt;&amp;nbsp;to grant CREATE_EXTERNAL_LOCATION (and/or others) priviliges to the service principal&lt;/P&gt;</description>
      <pubDate>Fri, 28 Jun 2024 05:53:29 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-governance/issue-with-creating-external-location-using-service-principal-in/m-p/76013#M1922</guid>
      <dc:creator>jacovangelder</dc:creator>
      <dc:date>2024-06-28T05:53:29Z</dc:date>
    </item>
    <item>
      <title>Re: Issue with Creating External Location Using Service Principal in Terraform</title>
      <link>https://community.databricks.com/t5/data-governance/issue-with-creating-external-location-using-service-principal-in/m-p/76022#M1923</link>
      <description>&lt;P&gt;Yes, we are using same service principle in AZ login.&lt;BR /&gt;&lt;STRONG&gt;Az login Provider Configuration:&lt;/STRONG&gt;&lt;BR /&gt;// Provider for databricks account&lt;BR /&gt;provider "databricks" {&lt;BR /&gt;alias = "azure_account"&lt;BR /&gt;host = "&lt;A href="https://accounts.azuredatabricks.net" target="_blank" rel="noopener"&gt;https://accounts.azuredatabricks.net&lt;/A&gt;"&lt;BR /&gt;account_id = var.account_id&lt;BR /&gt;auth_type = "azure-cli"&lt;BR /&gt;}&lt;BR /&gt;// Provider for databricks workspace&lt;BR /&gt;provider "databricks" {&lt;BR /&gt;host = local.databricks_workspace_host&lt;BR /&gt;}&lt;BR /&gt;We are able to create metastore with Terraform using same service principle and below provider configuration.&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;// Provider for databricks account&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;provider&lt;/SPAN&gt; &lt;SPAN&gt;"databricks"&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;alias&lt;/SPAN&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"azure_account"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;host&lt;/SPAN&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;A href="https://accounts.azuredatabricks.net" target="_blank" rel="noopener"&gt;https://accounts.azuredatabricks.net&lt;/A&gt;"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;account_id&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;var&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;account_id&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;client_id&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;var&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;client_id&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;client_secret&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;var&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;db_client_secret&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;// Provider for databricks workspace&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;provider&lt;/SPAN&gt; &lt;SPAN&gt;"databricks"&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;alias&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"Workspace"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;host&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;local&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;databricks_workspace_host&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;client_id&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;var&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;client_id&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;client_secret&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;var&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;db_client_secret&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;However facing same issue with below &lt;/SPAN&gt;&lt;SPAN&gt;terraform block.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;resource "databricks_metastore_data_access" "first" {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; provider = databricks.azure_account&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; metastore_id = databricks_metastore.this.id&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; name &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = "the-metastore-key"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; azure_managed_identity {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; access_connector_id = azurerm_databricks_access_connector.unity.id&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; is_default = true&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; depends_on = [databricks_metastore_assignment.this]&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Is there any link or dependency between databricks_metastore_data_access and databricks_external_location?&lt;BR /&gt;Thanks in advance for your help!&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 28 Jun 2024 06:29:36 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-governance/issue-with-creating-external-location-using-service-principal-in/m-p/76022#M1923</guid>
      <dc:creator>jv_v</dc:creator>
      <dc:date>2024-06-28T06:29:36Z</dc:date>
    </item>
    <item>
      <title>Re: Issue with Creating External Location Using Service Principal in Terraform</title>
      <link>https://community.databricks.com/t5/data-governance/issue-with-creating-external-location-using-service-principal-in/m-p/76031#M1924</link>
      <description>&lt;P&gt;After creating the&amp;nbsp;&lt;STRONG&gt;databricks_metastore&lt;/STRONG&gt; resource, can you run&amp;nbsp;&lt;STRONG&gt;databricks_grants? &lt;/STRONG&gt;like this&amp;nbsp;&lt;STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;resource "databricks_grants" "foo" {
depends_on = databricks_metastore.foo
  metastore = databricks_metastore.foo.id
  grant {
    principal  = &amp;lt;your service principal&amp;gt;
    privileges =  ["CREATE_EXTERNAL_LOCATION", &amp;lt;other priviliges&amp;gt;]
  }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 28 Jun 2024 07:51:11 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-governance/issue-with-creating-external-location-using-service-principal-in/m-p/76031#M1924</guid>
      <dc:creator>jacovangelder</dc:creator>
      <dc:date>2024-06-28T07:51:11Z</dc:date>
    </item>
  </channel>
</rss>

