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

applies to:Azure SQL DatabaseAzure Synapse Analytics

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

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

重要

当存储帐户位于虚拟网络或防火墙后面时,必须使用 托管标识 身份验证(存储 Blob 数据贡献者角色),而不是存储访问密钥。 保存审核设置时,Azure门户会自动配置此配置。 如果通过 REST API 或 PowerShell 配置审核,不要指定 storageAccountAccessKey — 服务器的托管身份会自动向存储帐户进行身份验证。

背景

Azure Virtual Network (VNet)是 Azure 中专用网络的基本构建基块。 VNet 使许多类型的Azure资源(例如Azure Virtual Machines(VM)能够安全地相互通信、Internet 和本地网络。 VNet 类似于自己的数据中心的传统网络,但带来了Azure基础结构(例如规模、可用性和隔离)的额外优势。

若要了解有关 VNet 概念、最佳做法等的详细信息,请参阅 什么是 Azure Virtual Network

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

先决条件

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

  • 一个常规用途 v2 存储帐户。 如果你有常规用途 v1 或 Blob 存储帐户,请升级到常规用途 v2 存储帐户。 有关详细信息,请参阅存储帐户的类型
  • 支持使用 BlockBlobStorage 的高级存储
  • 存储帐户必须位于逻辑 SQL 服务器所在的同一租户和位置(可以位于不同的订阅中)。
  • Azure Storage帐户需要 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 -Environment AzureChinaCloud
    Select-AzSubscription -SubscriptionId <subscriptionId>
    Set-AzSqlServer -ResourceGroupName <your resource group> -ServerName <azure server name> -AssignIdentity
    

    REST API

    示例请求

    PUT https://management.chinacloudapi.cn/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.chinacloudapi.cn",
      "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.chinacloudapi.cn/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.chinacloudapi.cn"
      }
    }
    

使用Azure PowerShell

使用Azure Resource Manager模板

可以使用 Azure Resource Manager 模板将审核配置为在虚拟网络和防火墙后面写入存储帐户上的数据库事件,如以下示例所示:

重要

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

注意

链接的示例位于外部公共存储库上,提供“按原样”提供,不提供保修,并且不受任何Azure support程序/服务支持。