azure - 如何检查当前是否使用 Azure 子网的 Microsoft.Storage 服务终结点

标签 azure networking terraform endpoint private-subnet

正如问题中所述,我想知道如何检查私有(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 门户上查看此属性,我浏览:虚拟网络 -> 子网 -> 服务终结点。 然后我得到这个窗口:

service endpoints settings in a subnet

旁注:删除该属性并等待产品是否宕机不是一个选择

最佳答案

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.

生产状态:

我的ma​​in.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]

}

在第一个实例中,我尝试在生产条件下复制服务端点,我们能够在成功状态下配置服务端点。

enter image description here

service_endpoints  = var.env  ==  "prod"  ? ["Microsoft.Storage"] : []
  1. var.env == "prod" 条件检查 变量 var.env 等于字符串 "prod"

  2. 如果条件计算结果为true,则分配给的值 service_endpoints 将是 ["Microsoft.Storage"],这是一个 具有单个元素的数组,“Microsoft.Storage”

  3. 如果条件计算结果为 false,则分配给的值 service_endpoints 将是一个空数组 []

此处传递的变量是当代码在生产环境中运行时,它在 Microsoft.Storage 处创建服务。通常用于存储 "Microsoft.Storage" 服务端点,包含在 service_endpoints 数组中以授予对 Azure 存储服务的访问权限。通过包含此服务端点,可以在定义的环境(在本例中为“prod”环境)内访问和使用关联的资源(例如存储帐户和容器)。它使应用程序或基础结构能够与 Azure 存储提供的功能进行交互并利用其在云中存储和管理数据。

非生产状态:

对于 prod 以外的 var 输入,terraform 将不会提供服务“Microsoft.Storage”,该服务通常不会访问任何可用数据。

enter image description here

因此,根据代码在生产环境下运行时提出的查询,将使用提到的模块捕获存储数据。除了生产(非生产或任何其他环境/空白)之外,不会捕获数据。

关于您提出的最后一个查询,它完全取决于您对数据备份的要求。如果您认为此备份有帮助,您可以继续,否则这是您的选择。

关于azure - 如何检查当前是否使用 Azure 子网的 Microsoft.Storage 服务终结点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76572192/

相关文章:

php - 如何在 Azure AD Graph API 中创建具有指定目录角色的用户(工作帐户)

azure - 如何清理未使用的Azure资源

networking - 不可路由的 IP 地址

delphi - Delphi中如何获取用于互联网连接的IP

azure 资源专用端点创建错误

Web 应用程序前面的 Azure WAF 更改主机名...仍然有问题

iphone - 如何使用 Bonjour 跨子网宣传服务?

terraform - 需要在 terraform 中显示敏感数据输出变量

amazon-web-services - 使用 Terraform 进行 S3 跨区域复制

azure - 您可以将 Azure 虚拟机移动/复制到不同的实例吗?