我已经使用 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
}
随着 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]
}
}
我一发布这个问题,就找到了该命令,所以我很抱歉浪费了您的时间。
使用的命令是 allow_nested_items_to_be_public,如果将其设置为 false,它将禁用在 存储帐户 > 设置 > 配置、允许 blob 公共访问
下找到的功能更新代码
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
}
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