在 Azure 中启用 DBServer 审核日志时"CloudException: ... Insufficient read or write permissions on the provid



如何成功地将对 Azure 存储帐户的允许访问范围限制为指定的数据库服务器?

我想在 Azure 中的数据库服务器上启用审核日志 [文档]。我使用的是 Java 客户端,但是,这也可以使用 REST API 进行复制。

在 Azure 中,我有一个数据库服务器,我正在为其运行此调用。我还有一个存储帐户,应该接收日志。使用 Java 客户端或 REST API,我提供了指向存储帐户的相应参数,并且始终得到响应:

com.microsoft.azure.CloudException: com.microsoft.azure.CloudException: Async operation failed with provisioning state: Failed: Insufficient read or write permissions on the provided storage account.

在 Azure 门户中,在存储帐户 -> 防火墙规则下,如果我选择Allow access from all networks则一切正常。

但是,开放对所有网络的访问范围太广,我想将访问权限限制为仅数据库服务器。我尝试了以下方法:

  • 在存储帐户的"防火墙规则"部分的"Selected networks"下,我尝试选择 DBServer 所属的子网。这无济于事,并产生相同的错误。
  • 在存储帐户的"防火墙规则"部分的"Add IP ranges to allow access from the internet or your on-premises networks"下,我直接添加了数据库服务器的 IP。这会产生相同的错误。

我需要将哪些 IP 列入白名单,或者需要执行哪些操作才能使只有数据库服务器对存储帐户具有写入权限?

编辑以获取更多信息

我一直在努力让这个工作。根据下面的答案,我已将我正在使用的区域的数据中心的每个 IP 列入白名单。没有骰子。我之前也尝试过将 DBServer 所属的 VNet 列入白名单,没有骰子。

此外,我尝试手动打开 Azure 门户中的审核日志,并将日志输出分配给创建的存储帐户,但失败并显示此错误:

Failed to save Auditing settings for server: test-p1-server. ErrorMessage: The storage account 'blahblahblah' is behind a firewall or in a virtual network. Please choose a storage account without any firewall rules or virtual network configurations.

此错误明确指出,我需要一个没有防火墙且没有限制的存储... 答案似乎很明显,关闭防火墙。然而,这不是一个选择,因为保安人员会把我活活烧死并烤我的美味。

我已经找到了答案(直接来自Microsoft Azure 支持)。

目前,DB/DBServer 审核日志不支持已启用防火墙规则的 Azure 存储帐户,因为无法在存储帐户的防火墙上将 DBServer 列入允许列表。

存储帐户(在后台)具有我们不知道的动态 IP,并且经常更改,因此无法列入白名单。其他Microsoft服务通过使用"允许受信任的Microsoft服务访问此存储帐户"功能来解决此问题。但是,审核日志不是受此功能影响的服务之一。

作为参考,以下是允许的服务: 允许的服务

  • Azure Backup
  • Azure Data Box
  • Azure Event Grid
  • Azure 开发测试实验室
  • Azure Event Hubs
  • Azure Monitor
  • Azure
  • Networking Azure Site Recovery
  • Azure SQL 数据仓库
  • Azure HDInsight

更多信息:

  • Github问题。
  • Azure 反馈论坛。

也许,可以通过筛选部署 SQL 数据库的区域来将数据中心 IP 列表列入白名单。通常,IP列表每周更新一次。

此外,如果要将 SQL 数据库放置在 Azure 虚拟网络中,可以考虑使用 SQL 数据库托管实例。请参阅有关 Azure SQL 数据库中托管实例的连接体系结构的详细信息。然后,可以在存储帐户中使用 VNet 限制。

相关内容

最新更新