正如问题中所述,我想知道如何检查私有(private)子网中的 Microsoft.Storage
服务终结点是否必要或当前正在使用。
我们有一些很久以前创建的资源,我们不明白为什么生产环境启用了此设置,而非生产环境则没有。两个子网都包含存储、 key 保管库等。然而,非生产环境的此设置有一个空列表,并且仍然工作得很好。
在我们的 Terraform 配置中,子网资源的公式如下(仅是一个片段):
resource "azurerm_subnet" "snet" {
provider = xxx
resource_group_name = var.rg_name
name = format("snet-%s", var.env)
virtual_network_name = azurerm_virtual_network.vnet.name
address_prefixes = [xxx]
enforce_private_link_endpoint_network_policies = xxx
enforce_private_link_service_network_policies = xxx
service_endpoints = var.env == "prod" ? ["Microsoft.Storage"] : []
depends_on = [azurerm_virtual_network.vnet]
}
我可以使用 Azure 门户、Terraform 或 Azure CLI 解决此问题吗?要在 Azure 门户上查看此属性,我浏览:虚拟网络 -> 子网 -> 服务终结点。 然后我得到这个窗口:
旁注:删除该属性并等待产品是否宕机不是一个选择
最佳答案
Here I tried to produce the Azure subnet's
Microsoft.Storage
service endpoint both in production and non-production cases and I was able to understand the difference between both.
生产状态:
我的main.tf如下
provider "azurerm" {
features {}
subscription_id = ""
client_id = ""
tenant_id = ""
client_secret = ""
}
variable "env" {
description = "Environment"
type = string
default = "prod"
}
resource "azurerm_resource_group" "example" {
name = "v-bolliv-rg"
location = "Eastus"
}
resource "azurerm_virtual_network" "example" {
name = "Demovk-vnet"
address_space = [""]
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
}
resource "azurerm_subnet" "snet" {
provider = azurerm
resource_group_name = azurerm_resource_group.example.name
name = format("snet-%s", var.env)
virtual_network_name = azurerm_virtual_network.example.name
address_prefixes = [""]
enforce_private_link_endpoint_network_policies = "true"
enforce_private_link_service_network_policies = "true"
service_endpoints = var.env == "prod" ? ["Microsoft.Storage"] : []
depends_on = [azurerm_virtual_network.example]
}
在第一个实例中,我尝试在生产条件下复制服务端点,我们能够在成功状态下配置服务端点。
service_endpoints = var.env == "prod" ? ["Microsoft.Storage"] : []
var.env == "prod"
条件检查 变量var.env
等于字符串"prod"
。如果条件计算结果为
true
,则分配给的值service_endpoints
将是["Microsoft.Storage"]
,这是一个 具有单个元素的数组,“Microsoft.Storage”
。如果条件计算结果为
false
,则分配给的值service_endpoints
将是一个空数组[]
。
此处传递的变量是当代码在生产环境中运行时,它在 Microsoft.Storage
处创建服务。通常用于存储 "Microsoft.Storage"
服务端点,包含在 service_endpoints
数组中以授予对 Azure 存储服务的访问权限。通过包含此服务端点,可以在定义的环境(在本例中为“prod”环境)内访问和使用关联的资源(例如存储帐户和容器)。它使应用程序或基础结构能够与 Azure 存储提供的功能进行交互并利用其在云中存储和管理数据。
非生产状态:
对于 prod 以外的 var 输入,terraform 将不会提供服务“Microsoft.Storage”
,该服务通常不会访问任何可用数据。
因此,根据代码在生产环境下运行时提出的查询,将使用提到的模块捕获存储数据。除了生产(非生产或任何其他环境/空白)之外,不会捕获数据。
关于您提出的最后一个查询,它完全取决于您对数据备份的要求。如果您认为此备份有帮助,您可以继续,否则这是您的选择。
关于azure - 如何检查当前是否使用 Azure 子网的 Microsoft.Storage 服务终结点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76572192/