你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将审核内容写入到 VNet 和防火墙后面的存储帐户

适用于:Azure SQL 数据库Azure Synapse Analytics

Azure SQL 数据库Azure Synapse Analytics 的审核支持将数据库事件写入到虚拟网络和防火墙后面的 Azure 存储帐户

本文介绍了为此选项配置 Azure SQL 数据库和 Azure 存储帐户的两种方法。 第一种方法使用 Azure 门户,第二种方法使用 REST。

背景

Azure 虚拟网络 (VNet) 是 Azure 中专用网络的基础构建基块。 VNet 允许许多类型的 Azure 资源(例如 Azure 虚拟机 (VM))以安全方式彼此通信、与 Internet 通信,以及与本地网络通信。 VNet 类似于你自己的数据中心内的传统网络,但附带了 Azure 基础设施的其他优势,例如可伸缩性、可用性和隔离。

若要详细了解 VNet 的概念、最佳做法和其他信息,请参阅什么是 Azure 虚拟网络

若要详细了解如何创建虚拟网络,请参阅快速入门:使用 Azure 门户创建虚拟网络

先决条件

若要配置审核以写入到 VNet 或防火墙后面的存储帐户,需要满足以下先决条件:

  • 一个常规用途 v2 存储帐户。 如果你有常规用途 v1 或 Blob 存储帐户,请升级到常规用途 v2 存储帐户。 有关详细信息,请参阅存储帐户的类型
  • 支持使用 BlockBlobStorage 的高级存储
  • 存储帐户必须位于逻辑 SQL 服务器所在的同一租户和位置(可以位于不同的订阅中)。
  • Azure 存储帐户需要 Allow trusted Microsoft services to access this storage account。 请在存储帐户的“防火墙和虚拟网络”中启用此设置。
  • 你必须对所选存储帐户拥有 Microsoft.Authorization/roleAssignments/write 权限。 有关详细信息,请参阅 Azure 内置角色

注意

如果已在服务器或数据库上启用对存储帐户的审核,并且目标存储帐户在防火墙后面移动,则审核日志将失去对存储帐户的写入访问权限。 必须从 Azure 门户重新保存审核设置才能恢复审核。

在 Azure 门户中配置

使用你的订阅连接到 Azure 门户。 导航到资源组和服务器。

  1. 在“安全”标题下选择 “审核 ”。 选择“启用”。

  2. 选择“存储”。 选择要在其中保存日志的存储帐户。 该存储帐户必须符合先决条件中列出的要求。

  3. 打开“存储详细信息”

    注意

    如果所选的存储帐户位于 VNet 后面,你将看到以下消息:

    You have selected a storage account that is behind a firewall or in a virtual network. Using this storage requires to enable 'Allow trusted Microsoft services to access this storage account' on the storage account and creates a server managed identity with 'storage blob data contributor' RBAC.

    如果未看到此消息,则表示存储帐户不在 VNet 后面。

  4. 选择保留期天数。 然后选择“ 确定”。 早于保留期的日志会被删除。

  5. 在审核设置中选择“保存”。

你现在已成功将审核配置为将内容写入到 VNet 或防火墙后面的存储帐户。

使用 REST 命令进行配置

如果不使用 Azure 门户,还可以使用 REST 命令来配置审核,以便在 VNet 和防火墙后面的存储帐户中写入数据库事件。

在运行本部分中的示例脚本之前,你需要先更新这些脚本。 替换脚本中的以下值:

示例值 示例说明
<subscriptionId> Azure 订阅 ID
<resource group> 资源组
<logical SQL Server> 服务器名称
<administrator login> 管理员帐户
<complex password> 管理员帐户的复杂密码

若要配置 SQL 审核以将事件写入到 VNet 或防火墙后面的存储帐户,请执行以下操作:

  1. 使用 Microsoft Entra ID(旧称 Azure Active Directory)注册服务器。 使用 PowerShell 或 REST API。

    PowerShell

    Connect-AzAccount
    Select-AzSubscription -SubscriptionId <subscriptionId>
    Set-AzSqlServer -ResourceGroupName <your resource group> -ServerName <azure server name> -AssignIdentity
    

    REST API

    示例请求

    PUT https://management.azure.com/subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.Sql/servers/<azure server name>?api-version=2015-05-01-preview
    

    请求正文

    {
    "identity": {
               "type": "SystemAssigned",
               },
    "properties": {
      "fullyQualifiedDomainName": "<azure server name>.database.windows.net",
      "administratorLogin": "<administrator login>",
      "administratorLoginPassword": "<complex password>",
      "version": "12.0",
      "state": "Ready"
      }
    }
    
  2. 将“存储 Blob 数据参与者”角色分配给托管数据库且已在上一步骤中使用 Microsoft Entra ID 注册的服务器。

    有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色

    注意

    只有具有“所有者”特权的成员能够执行此步骤。 有关各种 Azure 内置角色,请参阅 Azure 内置角色

  3. 在不指定 storageAccountAccessKey 的情况下配置服务器的 Blob 审核策略

    示例请求

      PUT https://management.azure.com/subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.Sql/servers/<azure server name>/auditingSettings/default?api-version=2017-03-01-preview
    

    请求正文

    {
      "properties": {
       "state": "Enabled",
       "storageEndpoint": "https://<storage account>.blob.core.windows.net"
      }
    }
    

使用 Azure PowerShell

使用 Azure Resource Manager 模板

可使用 Azure 资源管理器模板配置审核以在虚拟网络和防火墙后面的存储帐户中写入数据库事件,如以下示例中所示:

重要

若要使用虚拟网络和防火墙后面的存储帐户,需将 isStorageBehindVnet 参数设置为 true

注意

链接的示例在外部公共存储库上并且“按现样”提供,不提供任何担保,并非在任何 Microsoft 支持计划/服务下都受支持。