Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何基于用户登录限制数据访问_Sql Server_Security - Fatal编程技术网

Sql server 如何基于用户登录限制数据访问

Sql server 如何基于用户登录限制数据访问,sql-server,security,Sql Server,Security,我以前是Lotus Notes/Domino开发人员,学习Microsoft堆栈。我正在构建一个带有SQL server后端的web应用程序。我想构建一个基本的CRUD应用程序,用户在其中注册,然后登录。他们应该能够处理他们创建的或与他们共享的数据。我不确定如何实现这一结果 Domino数据库的一个很酷的特性是能够使用用户ID或角色向每个记录添加reader和/或author字段,并且当用户访问数据库时,服务器会自动过滤掉这些记录。因此,如果用户打开视图或查询数据库,服务器将永远不会让他们看到未

我以前是Lotus Notes/Domino开发人员,学习Microsoft堆栈。我正在构建一个带有SQL server后端的web应用程序。我想构建一个基本的CRUD应用程序,用户在其中注册,然后登录。他们应该能够处理他们创建的或与他们共享的数据。我不确定如何实现这一结果

Domino数据库的一个很酷的特性是能够使用用户ID或角色向每个记录添加reader和/或author字段,并且当用户访问数据库时,服务器会自动过滤掉这些记录。因此,如果用户打开视图或查询数据库,服务器将永远不会让他们看到未分配访问权限的记录

SQL server是否具有类似的功能?我看过一些关于行级安全性的信息,这是保护数据的最佳方法吗?如果没有,那么保护数据以使用户只能看到其数据的最佳做法是什么

感谢您提供的任何帮助。

是的。SQL server具有:

行级安全性使您能够使用组成员身份或执行 上下文来控制对数据库表中的行的访问

行级安全性(RLS)简化了安全性的设计和编码 在您的应用程序中。RLS帮助您实现对数据行的限制 通道例如,您可以确保工作人员只访问那些 与其部门相关的数据行。另一个例子是 将客户的数据访问限制为仅访问与其业务相关的数据 公司

访问限制逻辑位于数据库层,而不是数据库层 而不是远离另一个应用层中的数据。数据库 每次访问数据时,系统都会应用访问限制 从任何层尝试。这使您的安全系统更加可靠 通过减少安全系统的表面积,增强了系统的稳定性


但是,在服务器端应用程序(如web服务器或web API)中嵌入授权逻辑更为常见。行级安全性在用户直接连接到数据库的情况下更为常见,如在报告和分析以及客户端/服务器桌面应用程序中。

谢谢您的回答。是否有公共存储库或示例代码可供审查,以通过web应用程序实现安全性?我很好奇如何根据特定标准保护数据,例如仅显示用户的公司或地区数据等。它是通过使用where子句实现的吗?这里有一种模式,使用.NET和实体框架:谢谢,David。这有点让人困惑,但我明白这个概念。我不确定它在大型应用程序中的伸缩性如何。我将看看是否可以在网上找到一些示例应用程序,看看这将如何实现。