如何不创建 azurerm_mssql_database_extended_auditing_policy

How NOT to create a azurerm_mssql_database_extended_auditing_policy

我正在尝试使用 Terraform 部署我的基础设施。 我有一个 mssql 服务器和数据库并使用 azurerm 2.32

部署 mssql 时出现以下错误

Error: issuing create/update request for SQL Server "itan-mssql-server" Blob Auditing Policies(Resource Group "itan-west-europe-resource-group"): sql.ExtendedServerBlobAuditingPoliciesClient#CreateOrUpdate: Failure sending request: StatusCode=400 -- Original Error: Code="DataSecurityInvalidUserSuppliedParameter" Message="Invalid parameter 'storageEndpoint'. Value should be a blob storage endpoint (e.g. https://MyAccount.blob.core.windows.net)."

我已经试过了

  1. 在数据库级别定义 extended_auditing_policy - 失败
  2. 在服务器级别定义 extended_auditing_policy - 失败
  3. 在根级别定义 azurerm_mssql_database_extended_auditing_policy - 失败
  4. 留空 extended_auditing_policy - 失败

全局级别的定义如下所示(^C^V 来自 terraform 文档并针对我的项目进行了调整):


resource "azurerm_mssql_database_extended_auditing_policy" "db-policy" {
  database_id = azurerm_mssql_database.itan-mssql-database.id
  storage_endpoint = azurerm_storage_account.itan_storage_account.primary_blob_endpoint
  storage_account_access_key = azurerm_storage_account.itan_storage_account.primary_access_key
  storage_account_access_key_is_secondary = false
  retention_in_days = 1

  depends_on = [
    azurerm_mssql_database.itan-mssql-database,
    azurerm_storage_account.itan_storage_account]
}

我正在寻找两种可能的解决方案之一:

谢谢! 亚雷克

这是由Breaking change in the SQL Extended Auditing Settings API. Please check also this issue in terraform provider造成的。

作为解决方法,您可以尝试从 terraform 调用 ARM template。但是,我不确定他们在幕后使用的是相同还是不同 API.

看起来适合我的工作方法是这样的:

我关注了来自 git 中心的 [ddarwent][1] 的提示: https://github.com/terraform-providers/terraform-provider-azurerm/issues/8915#issuecomment-711029508

所以基本上是这样的:

  1. terraform apply
  2. 转到 terraform.tfstate 删除“受污染的 mssql 服务器”
  3. terraform apply
  4. 转到 terraform.tfstate 删除“受污染的 mssql 数据库”
  5. terraform apply

看起来我所有的东西都在工作