sql-server – 我应该显式DENY UPDATE到不应更新的列吗?

前端之家收集整理的这篇文章主要介绍了sql-server – 我应该显式DENY UPDATE到不应更新的列吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我习惯于在非常安全的环境中工作,因此我将权限设计为非常精细的粒度.我通常做的一件事是明确拒绝用户更新永远不应更新的列的能力.

例如:

create table dbo.something (
    created_by varchar(50) not null,created_on datetimeoffset not null
);

一旦设置了值,就不应该更改这两列.因此,我会明确拒绝对它们的UPDATE权限.

最近,在团队会议期间,开发人员提出了这样的观点:确保字段永远不会更新的逻辑应该包含在应用程序层中,而不是“他们需要因某种原因需要更新值”时的数据库层.对我来说,这听起来像典型的开发心态(我知道,我曾经是一个!)

我是我公司的高级架构师,我一直致力于使应用程序运行所需的最少权限的原则.所有权限都会定期审核.

这种情况下的最佳做法是什么?

解决方法

这个论点没有意义.我总是希望控件和约束尽可能接近数据.将它放在应用程序层意味着它只影响使用应用程序层的人员,并且还假设代码没有错误,并且围绕这些代码路径的安全性将是防弹的.这些都是很大的假设.

如果他们绝对需要更新,那么这可以由不受显式拒绝影响的人完成,或者该人可以暂时移动到不受影响的角色,或者可以暂时删除DENY.作为DBA,这些对于您来说很容易设置审计.在应用程序?没那么多.

猜你在找的MsSQL相关文章