You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Terraform为Azure应用配置分配子网并限制私有访问

实现Azure应用配置的子网访问限制(Terraform方案)

要限制Azure应用配置仅允许特定子网访问,核心是通过**专用终结点(Private Endpoint)**实现,同时关闭公共网络访问入口。以下是完整的Terraform配置步骤:

1. 确保目标子网支持专用终结点

假设你已有目标VNet和子网,若子网之前启用了私有终结点网络策略,需先禁用(否则无法部署专用终结点):

resource "azurerm_subnet" "restricted_subnet" {
  name                 = "restricted-subnet"
  resource_group_name  = azurerm_resource_group.example.name
  virtual_network_name = azurerm_virtual_network.example.name
  address_prefixes     = ["10.0.1.0/24"]

  # 必须禁用此策略才能部署专用终结点
  private_endpoint_network_policies_enabled = false
}

2. 创建带网络限制的应用配置实例

创建应用配置时直接关闭公共网络访问,仅允许专用终结点连接:

resource "azurerm_app_configuration" "sensitive_config" {
  name                = "sensitive-app-config"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location

  # 关闭公共网络访问,仅允许专用终结点
  public_network_access_enabled = false

  # 可选:启用软删除防止敏感配置误删
  soft_delete_retention_days = 7
}

3. 部署专用终结点关联目标子网

创建专用终结点,将应用配置与指定子网绑定:

resource "azurerm_private_endpoint" "app_config_pe" {
  name                = "app-config-pe"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  subnet_id           = azurerm_subnet.restricted_subnet.id

  private_service_connection {
    name                           = "app-config-psc"
    private_connection_resource_id = azurerm_app_configuration.sensitive_config.id
    subresource_names              = ["configurationStores"] # 应用配置固定子资源名称
    is_manual_connection           = false
  }
}

4. 配置私有DNS解析(可选但推荐)

若需要子网内资源通过应用配置默认域名访问,需配置私有DNS关联:

# 创建应用配置对应的私有DNS区域
resource "azurerm_private_dns_zone" "app_config_zone" {
  name                = "privatelink.azconfig.io"
  resource_group_name = azurerm_resource_group.example.name
}

# 将DNS区域与VNet关联
resource "azurerm_private_dns_zone_virtual_network_link" "app_config_dns_link" {
  name                  = "app-config-dns-link"
  resource_group_name   = azurerm_resource_group.example.name
  private_dns_zone_name = azurerm_private_dns_zone.app_config_zone.name
  virtual_network_id    = azurerm_virtual_network.example.id
}

# 为专用终结点添加DNS记录
resource "azurerm_private_dns_a_record" "app_config_dns_record" {
  name                = azurerm_app_configuration.sensitive_config.name
  zone_name           = azurerm_private_dns_zone.app_config_zone.name
  resource_group_name = azurerm_resource_group.example.name
  ttl                 = 300
  records             = [azurerm_private_endpoint.app_config_pe.private_service_connection[0].private_ip_address]
}

验证效果

部署完成后:

  • 仅目标子网内的资源可访问该应用配置
  • 公共网络无法连接到该实例
  • 配置私有DNS后,子网内资源可直接通过应用配置默认域名访问

内容的提问来源于stack exchange,提问作者gera1390

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 16:12:50