首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免访问未经授权的数据-体系结构级别

避免访问未经授权的数据-体系结构级别
EN

Stack Overflow用户
提问于 2021-05-03 10:28:12
回答 1查看 27关注 0票数 0

我有一个SQL Server数据库,它将包含多个客户的数据,每个客户都有管理用户来管理自己与员工相关的数据,我将授予每个客户使用系统存储和管理其业务数据(与员工相关的数据)的许可,每个员工都有一个帐户,并有一些特权来执行一些特定的操作和请求。

我的问题, 如何永久防止客户管理用户访问另一个客户的员工?,为了避免这种错误,我询问与系统架构级别相关的最佳实践或想法,我不想让开发人员来决定,因为任何错误的SQL查询都会导致这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-03 12:22:02

在数据库级别有两种主要的多租户方法,它们有非常不同的权衡:

  1. 租户逐行:这基本上需要在每个数据库表中放入一个customer-id或承租者id列,并确保所有查询都将其用作其选择标准的一部分。如果您不信任开发人员(您已经遇到麻烦了),您可以将它们隐藏在存储过程后面(不推荐,只需为devs制定规则)。
  2. 按模式租户:按模式租户更安全,但成本更高。它需要为每个租户提供一个新的模式。每个租户都有自己的Server连接,他们的查询转到他们的模式中。这具有绝对防止跨客户读取的优点,但实现成本要高得多。在添加新租户时,需要在运行时执行DDL,而且升级成本要高得多(根据有多少客户,您必须升级几十/数百/数千个数据库模式。另外,当SQL Server处理这么多小表时,它的性能也不会很好。统计/备份/维护将更昂贵,更难以管理。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67367379

复制
相关文章

相似问题

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