Terraform 允许在某些 Azure 资源中设置最低 TLS 版本,例如:
resource "azurerm_linux_web_app" "myApp" {
site_config {
...
minimum_tls_version = "1.2"
}
...
我找不到使用 terraform 配置为 cosmosdb_account 资源设置它的方法。有办法吗?
我可以看到配置存在于天蓝色门户中:
如 github 问题中所述,当前
TLS_version
不支持设置 azurerm_cosmosdb_account
。要启用它,您可以使用 azapi_resource
或 azapi_update_resource
(如果资源已存在)。
我尝试了下面的代码来实现您的要求,部署成功,如图所示。
terraform {
required_providers {
azapi = {
source = "Azure/azapi"
}
}
}
provider "azapi" {
}
provider "azurerm"{
features{}
}
data "azurerm_resource_group" "example" {
name = "DefaultResourceGroup-EUS"
}
data "azurerm_cosmosdb_account" "db" {
name = "newcb"
resource_group_name = data.azurerm_resource_group.example.name
}
resource "azapi_update_resource" "azurerm_cosmosdb_account_tls_update" {
type = "Microsoft.DocumentDB/databaseAccounts@2023-03-15"
resource_id = data.azurerm_cosmosdb_account.db.id
body = jsonencode({
properties = {
minimalTlsVersion = "Tls12"
}
})
}
之前我的 cosmos dB 帐户已将
minimum_tls_version
设置为 TLS1.1
使用上面给出的代码成功部署后,它已升级到如图所示的
TLS 1.2
。
或者,作为解决方法,您可以使用 Azure 策略来设置 Cosmos DB 帐户的 TLS 版本设置。要实现此目标,请创建一个要求 Cosmos DB 帐户使用指定 TLS 版本的策略,然后将其附加到您的资源组。
New-AzPolicyAssignment
以及 scope
参数将其分配为 cosmos dB 范围。
$policy=New-AzPolicyDefinition -Name 'xxx' -Policy <policypath>
New-AzPolicyAssignment -Name 'xxxx' -PolicyDefinition $Policy -Scope "cosmosdb account resourceID"
注意: 根据您的要求创建策略规则。