首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只在Azure SQL数据库中记录一个表

只在Azure SQL数据库中记录一个表
EN

Database Administration用户
提问于 2022-03-09 13:21:29
回答 1查看 304关注 0票数 1

我们公司是ISO27001认证的。因此,我们需要记录数据库事件。我们正在采取一种渐进的方法,首先从一个表上的日志事件开始。

这个特定的表包含登录用户的id。

我们想要创建

  1. 对此表的手动数据更改(影响更改的Server用户的名称以及他/她所做的操作)
  2. 用于更改此表上数据的存储过程。(登录用户的id、影响更改的Server用户的名称以及SQL server存储过程的语句(包括参数))
  3. 架构更改事件(影响更改的Server用户的名称以及他/她所做的事情)

我们不需要记录查看数据的事件。

当使用Azure SQL时,最好的方法是什么?

下面的线程讨论在数据库中构建额外表的各种方法,以及使用触发器记录事件。https://stackoverflow.com/questions/38437/how-to-track-data-changes-in-a-database-table

不过,我希望利用Azure SQL中的数据库审计,部分原因是上述方法可以很容易地减缓数据库的速度。

我已经使用这个门户设置了一个数据库审计--它每天生成大约1.5GB的审计数据,这对我的目的来说是不必要的。

是否有一种将Azure数据库审计限制为只与一个表相关的方法?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2022-03-09 21:29:02

是的,您可以将Azure SQL数据库的审核配置为筛选到单个对象,但您需要使用Azure PowerShell模块。你不能通过传送门这么做。

下面的示例假设您已经通过Portal在数据库级别启用了审核。此脚本将审核操作组更改为"DATABASE_OBJECT_CHANGE_GROUP“,然后添加多个审核操作。审核操作是为要审计的表指定DML操作的地方。您必须分别指定每个存储过程。它只是一个逗号分隔的列表。

代码语言:javascript
复制
Set-AzSqlDatabaseAudit `
  -ResourceGroupName "MyResourceGroupName" `
  -ServerName "MySqlServerName" `
  -DatabaseName "MyDatabaseName" `
  -AuditActionGroup "DATABASE_OBJECT_CHANGE_GROUP" `
  -AuditAction `
    "INSERT, UPDATE, DELETE ON dbo.LoginTable BY public", `
    "EXECUTE ON usp_InsertLoginTable BY public", `
    "EXECUTE ON usp_DeleteLoginTable BY public"

https://learn.microsoft.com/en-us/powershell/module/az.sql/set-azsqldatabaseaudit?view=azps-7.3.0

https://learn.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions?view=sql-server-ver15#database-level-audit-actions

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/308486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档