我需要通过防火墙保护我的所有资源(在不同的子网中),因此我需要知道如何为每个资源分配子网。
我想知道连接任何资源到子网的最简单的方法是什么?
我看到了不同的资源,它们可以通过不同的解决方案连接到子网。这让我非常困惑,因为显然每个资源都有自己的解决方案来连接到子网。
以下是一些例子:
数据库可以通过向子网添加delegation连接,如下所示:
resource "azurerm_subnet" "private_snet" {
name = "subnet-private"
resource_group_name = var.resource_group_name
virtual_network_name = azurerm_virtual_network.test_vnet.name
address_prefixes = ["10.0.1.0/24"]
delegation {
name = "databricksprivatermdelegation"
service_delegation {
name = "Microsoft.Databricks/workspaces"
}
}
}但是,azurerm_mssql_server使用称为azurerm_mssql_virtual_network_rule的非常不同的资源将sql数据库放置到子网中,如下所示:
resource "azurerm_mssql_virtual_network_rule" "example" {
name = "sql-vnet-rule"
server_id = azurerm_mssql_server.example.id
subnet_id = azurerm_subnet.example.id
}对于azurerm_storage_account,它有自己的解决方案,名为network_rules,如下所示:
resource "azurerm_storage_account" "example" {
name = "storageaccountname"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
account_tier = "Standard"
account_replication_type = "LRS"
network_rules {
default_action = "Deny"
ip_rules = ["100.0.0.1"]
virtual_network_subnet_ids = [azurerm_subnet.example.id]
}
}最后,azurerm_data_factory没有任何参数可以将其连接到子网。
所以,简单来说,我的问题是:
是否有任何简单、直接的解决方案,可以将我的资源设置为azurerm_subnet?
发布于 2022-10-07 10:32:40
TLDR
答1:如果您只想使用服务端点,就没有简单的统一方法来配置资源以允许从子网访问。考虑使用私有链接。
答案2:识别不同类型的Azure服务VNet集成:https://learn.microsoft.com/en-us/azure/virtual-network/vnet-integration-for-azure-services
您需要重新迭代您的计划,并确定您的资源与虚拟网络有什么样的集成。
Azure服务与VNets:https://learn.microsoft.com/en-us/azure/virtual-network/vnet-integration-for-azure-services集成的高级描述
- turn on (VNet Service endpoint policy)[https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-service-endpoint-policies-overview] for extra safety
- serviceEndpointPolicies property在服务端点打开后,Azure自动更改路由和IP地址。在为资源添加传入规则和为源子网添加服务端点支持之后,不需要额外的交互。
- network interface
- traffic to this interface is routed to target resource- optional private DNS zones and related resources
- recommended, otherwise usage of IP addresses and/or hosts-file changes are needed- optional NSG rules for extra security你的例子:
数据库
Databricks支持VNet注射,在将databricks部署到VNet之后,它可以安全地连接正在使用的Azure资源:
Azure SQL
Azure SQL支持服务端点和私有链接。您的示例只是添加了来自部署到azurerm_subnet.example中的服务的访问。“将sql数据库放置到子网”并没有真正发生。
存储帐户
存储帐户既支持服务端点,也支持私有链接。virtual_network_subnet_ids只是一个包含允许子网ids的列表。
数据工厂
要启用与数据工厂的VNet集成,您有两个解决方案
Azure-托管集成运行库
在Azure VM上运行自托管集成运行时(SHIR)
摘要
首先:标识您的资源类型:它们如何与Azure VNets集成
资源防火墙/网络规则是特定于资源的,正如您注意到的Azure SQL和Azure存储差异一样。如果您需要更统一的访问控制和配置,我建议您使用私有enpoint:
二头针模板示例(Azure与专用端点+ VM)提供了一个很好的高级概述了私有链接模板的工作原理。在查看Microsoft的Bicep示例之后,应该更容易找到正确的Terraform资源类型。
对VNet的部署/注入仍然使用特定于资源的配置/模板属性,并且必须逐案执行。
https://stackoverflow.com/questions/73932489
复制相似问题