使用 terraform 禁用允许公共 blob 访问

Jon*_*Jon 9 azure terraform

我已经使用 Terraform 创建了一个存储帐户。我想禁用在 Azure 门户中的存储帐户设置和配置下找到的名为“允许公共 blob 访问”的选项,但是在azurerm_storage_account命令下,我似乎找不到实现此目的所需的选项。

下面是我到目前为止创建存储帐户的代码,它可以工作,但如果有人能指出我正确的方向,那就太好了,谢谢。

存储账户

resource "azurerm_storage_account" "st" {
    name = var.st.name
    resource_group_name = var.rg_shared_name
    location = var.rg_shared_location
    account_tier = var.st.tier
    account_replication_type = var.st.replication
    public_network_access_enabled = false
}
Run Code Online (Sandbox Code Playgroud)

Neb*_*tic 13

随着 azurerm 提供程序 3.0 版的发布,该参数allow_blob_public_access更改为allow_nested_items_to_be_public. 如果您阅读旧的文档或示例,这可能会导致混乱。此外,您可以通过多种方式禁用存储帐户的公共网络访问。

  • 您可以设置public_network_access_enabled为 false。
  • 您可以使用network_rules阻止并设置default_action为拒绝。
  • 您可以使用该azurerm_storage_account_network_rules资源并将其设置default_action为拒绝。

明确告诉任何人都不能公开进入存储帐户是最干净/最安全的选择。但是,有时您想要为一组特定的 IP 地址打开存储帐户并阻止所有其他 IP 地址,那么其他选项很有用。

如果禁用公共网络访问,则应使用专用终结点或服务终结点以便能够从专用网络连接到您的存储帐户。基于此存储库的示例:

resource "azurerm_storage_account" "storage_account" {
  name                            = var.name
  resource_group_name             = var.resource_group_name
  location                        = var.location
  account_kind                    = var.kind
  account_tier                    = var.tier
  account_replication_type        = var.replication_type
  is_hns_enabled                  = true
  enable_https_traffic_only       = true
  public_network_access_enabled   = false
  allow_nested_items_to_be_public = false
  min_tls_version                 = var.min_tls_version
}

resource "azurerm_private_endpoint" "private_endpoint_blob" {
  name                = "pe-blob-${var.name}"
  location            = var.location
  resource_group_name = var.resource_group_name
  subnet_id           = var.subnet_id

  private_service_connection {
    name                           = "psc-blob-${var.name}"
    is_manual_connection           = false
    private_connection_resource_id = azurerm_storage_account.storage_account.id
    subresource_names              = ["blob"]
  }

  # Should be deployed by Azure policy
  lifecycle {
    ignore_changes = [private_dns_zone_group]
  }
}
Run Code Online (Sandbox Code Playgroud)


Jon*_*Jon 10

我一发布这个问题,就找到了该命令,因此我为浪费您的时间表示歉意。

要使用的命令是allowed_nested_items_to_be_public,如果将此设置为false,它将禁用在Storage Account > Settings > Configuration下找到的功能,允许 blob 公共访问

来源 https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_account#allow_nested_items_to_be_public

更新代码

resource "azurerm_storage_account" "st" {
    name = var.st.name
    resource_group_name = var.rg_shared_name
    location = var.rg_shared_location
    account_tier = var.st.tier
    account_replication_type = var.st.replication
    public_network_access_enabled = false
    allow_nested_items_to_be_public = false
}
Run Code Online (Sandbox Code Playgroud)