你当前正在访问 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 内置角色。
注意
在服务器/db 上启用“对存储帐户进行审核”后,如果目标存储帐户在防火墙后面移动,将失去对存储帐户的写入访问权限,审核日志将停止写入该帐户。若要进行审核,必须从门户重新保存审核设置。
在 Azure 门户中配置
使用你的订阅连接到 Azure 门户。 导航到资源组和服务器。
单击“安全性”标题下的“审核”。 选择“启用”。
选择“存储”。 选择要在其中保存日志的存储帐户。 该存储帐户必须符合先决条件中列出的要求。
打开“存储详细信息”
注意
如果所选的存储帐户位于 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 后面。
选择保留期天数。 。 早于保留期的日志会被删除。
在审核设置中选择“保存”。
你现在已成功将审核配置为将内容写入到 VNet 或防火墙后面的存储帐户。
使用 REST 命令进行配置
如果不使用 Azure 门户,还可以使用 REST 命令来配置审核,以便在 VNet 和防火墙后面的存储帐户中写入数据库事件。
在运行本部分中的示例脚本之前,你需要先更新这些脚本。 替换脚本中的以下值:
示例值 | 示例说明 |
---|---|
<subscriptionId> |
Azure 订阅 ID |
<resource group> |
资源组 |
<logical SQL Server> |
服务器名称 |
<administrator login> |
管理员帐户 |
<complex password> |
管理员帐户的复杂密码 |
若要配置 SQL 审核以将事件写入到 VNet 或防火墙后面的存储帐户,请执行以下操作:
使用 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
示例请求
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" } }
将“存储 Blob 数据参与者”角色分配给托管数据库且已在上一步骤中使用 Microsoft Entra ID 注册的服务器。
有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色。
注意
只有具有“所有者”特权的成员能够执行此步骤。 有关各种 Azure 内置角色,请参阅 Azure 内置角色。
在不指定 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 资源管理器模板
可使用 Azure 资源管理器模板配置审核以在虚拟网络和防火墙后面的存储帐户中写入数据库事件,如以下示例中所示:
重要
若要使用虚拟网络和防火墙后面的存储帐户,需将 isStorageBehindVnet 参数设置为 true
注意
链接的示例在外部公共存储库上并且“按现样”提供,不提供任何担保,并非在任何 Microsoft 支持计划/服务下都受支持。