Azure SQL:如果有人导出数据库,如何得到通知?

Azure SQL: How to be notified if someone exports the database?

我 运行 一个基于 Azure SQL 数据库的系统。

一些不同的团队成员需要具有对此数据库的读取权限才能执行支持和管理任务。

但是,我担心通过访问数据库,他们中的一员可能出于好意导出数据库并粗心地管理备份,从而导致数据泄露。

如果有人备份数据库(或下载超过 X 百万行,也许?),我如何让 Azure 通知我?这些人需要具有数据库访问权限,我只想知道他们是否在一种可能导致平台安全风险的方式。

您可以为此使用 Extended Events

要在 Azure 上进行设置,您可以按照 this 教程进行操作。

针对您的情况

  1. 您创建一个会话
  2. 您 Select rpc_completed (docs) 事件并单击配置

  1. Global Fields 选项卡中,您可以 select 您想要跟踪的字段。即:用户名,sql_text,session_id,database_name,client_*

  2. Filter 选项卡中,您可以 select 过滤条件。在你的情况下 row_count 是合适的。

当恶意用户很聪明,检索少量行并对它们进行分页时,这将不会被发现。因此,第二个过滤器可能是不带 WHERE 子句的查询,或者根据您的情况采用不同的方法。

当扩展事件设置为写入 blobstorage 时。您将有一个不同的过程(Azure Function、Runbook 等)来检查结果并提醒您。

扩展事件主要用于故障排除,它们取代了 SQL 探查器。因此在生产服务器上启用它可能会对性能产生影响。