禁用公共网络访问时是否为Azure Synapse Workspace创建防火墙?

toiithl6  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(123)

我正在尝试为Synapse工作区提供terraform(禁用公共网络访问)。Synapse工作区已创建,状态也为成功。大多数资源已成功创建/提供。
但是,我也想在Synapse工作区添加/创建防火墙规则。我在Portal上注意到,当公共网络访问被禁用时,您无法创建或修改防火墙。这也是我尝试使用Terraform在Synapse工作区添加防火墙时遇到的错误。

Failure sending request: StatusCode=400 -- Original Error: Code='PublicNetworkAccessDenied' Message='Unable to create or modify firewall rules when public network interface for the Synapse Workspace is disabled. To manage firewall rules, please enable the public network access.'

如果需要在工作区中添加防火墙,我需要启用公共网络访问吗?如果需要,我将更新我的terraform代码,将公共网络访问设置为True。
实际上,当我尝试通过门户启用公共网络访问并保存它时,它显示部署失败,所以它失败了,状态从成功变为失败,并显示检查部署以获取更多信息。但我在任何地方都找不到有关给定部署的信息。在失败状态下,我无法创建防火墙,由于Terraform抱怨工作区处于失败状态。2所以我通过Terraform再次重新创建了工作区,并禁用了公共网络访问,现在工作区处于成功状态。
如果我们通过Terraform(因为通过Portal失败了)将公共网络访问更新为True,它会工作吗?更新为True后工作区状态会成功吗?
如果无法将公共网络访问更新为True,该怎么办?Synapse工作区将进入Failed状态,然后我无法使用Terraform进行任何配置。Terraform会抱怨工作区未处于Succeeded状态或处于Failed状态。如果工作区进入Failed状态,我如何更正它以使其成功?
请提出最好的解决办法.
简而言之,我想通过Terraform向我的Synapse工作区添加/创建防火墙规则。我无法这样做,因为给定工作区的公共网络访问被禁用。
谢谢你的帮助。
更新:我可以删除添加或修改防火墙规则的代码,这需要工作区启用公共访问。因为我希望我的Synapse工作区始终禁用公共网络访问。所以添加防火墙规则没有意义。
但是,当我尝试在禁用公共网络访问的情况下配置Synapse时,我也收到以下错误。我为Synapse分配了很少的角色,他们失败了,并出现以下错误。我的理解是,运行此管道的代理无权访问此Synapse工作区,因为它是公共的,而创建的Synapse是私有的?我的管道在自托管代理上运行。

│ Error: listing synapse role definitions accesscontrol.RoleDefinitionsClient#ListRoleDefinitions: Failure responding to request: StatusCode=403 -- Original Error: autorest/azure: Service returned an error. Status=403 Code="PublicNetworkAccessDenied" Message="The public network interface on this Workspace is not accessible. To connect to this Workspace, use the Private Endpoint from inside your virtual network or enable public network access for this workspace."
│ 
│   with module.synapse.azurerm_synapse_role_assignment.this["synapse-administrator"],
│   on .terraform/modules/synapse/rbac.tf, in resource "azurerm_synapse_role_assignment" "this":
│  resource "azurerm_synapse_role_assignment" "this" {
│
wwodge7n

wwodge7n1#

我试着在我的环境中重现同样的情景。

代码:

resource "azurerm_synapse_workspace" "example" {
  name                                 = "kaexamplesynapse"
  resource_group_name                  = data.azurerm_resource_group.example.name
  location                             = data.azurerm_resource_group.example.location
  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id
  sql_administrator_login              = "sqladminuser"
  sql_administrator_login_password     = "H@Sh1CoR3!"
  public_network_access_enabled   =  false

  identity {
    type = "SystemAssigned"
  }
}

代码如下:

resource "azurerm_storage_account" "example" {
  name                     = "adlsexamplestorageacc"
  resource_group_name      = data.azurerm_resource_group.example.name
  location                 = data.azurerm_resource_group.example.location
  account_tier             = "Standard"
  account_replication_type = "LRS"
  account_kind             = "StorageV2"
  is_hns_enabled           = "true"
}

resource "azurerm_storage_data_lake_gen2_filesystem" "example" {
  name               = "default"
  storage_account_id = azurerm_storage_account.example.id
}

resource "azurerm_synapse_workspace" "example" {
  name                                 = "kaexamplesynapse"
  resource_group_name                  = data.azurerm_resource_group.example.name
  location                             = data.azurerm_resource_group.example.location
  storage_data_lake_gen2_filesystem_id = azurerm_storage_data_lake_gen2_filesystem.example.id
  sql_administrator_login              = "xxx"
  sql_administrator_login_password     = "xxx!"

  identity {
    type = "SystemAssigned"
  }
}

resource "azurerm_synapse_firewall_rule" "example" {
  name                 = "AllowAll"
  synapse_workspace_id = azurerm_synapse_workspace.example.id
  start_ip_address     = "0.0.0.0"
  end_ip_address       = "255.255.255.255"
}

我可以创建防火墙规则,以Azure突触工作区成功。

注:

相关问题