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

问题描述 投票:0回答:3

我已经使用 Terraform 创建了一个存储帐户。我想禁用在 Azure 门户中的存储帐户设置和配置下找到的名为 Allow public blob access 的选项,但是在 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
}
azure terraform
3个回答
18
投票

随着 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]
  }
}

10
投票

我一发布这个问题,就找到了该命令,所以我很抱歉浪费了您的时间。

使用的命令是 allow_nested_items_to_be_public,如果将其设置为 false,它将禁用在 存储帐户 > 设置 > 配置允许 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
}

0
投票
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
}
This is correct!!
Thank you
© www.soinside.com 2019 - 2024. All rights reserved.