AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 344064
Accepted
David Thielen
David Thielen
Asked: 2024-12-07 12:38:24 +0800 CST2024-12-07 12:38:24 +0800 CST 2024-12-07 12:38:24 +0800 CST

提供 SQL Server 中数据的有限视图

  • 772

我有一个多租户应用程序。因此,单个数据库包含所有使用该数据库的组织的数据。

有没有办法提供对数据库的访问权限,以便我的客户可以使用任何分析工具(例如 Power BI)连接到它。

有 Org 表 - 我可以在其中指定他们可以获取的该表的 PK。

然后是 Event 表,它有一个到 Org 表的 FK。

然后是注册(到事件)表,其中包含指向事件的 FK 和指向用户的 FK。

最困难的是用户表。如果用户注册了活动,那么该客户就可以获取该用户。这意味着多个客户可以看到该用户表行。

这是专门针对 SQL Server 的。因此,我需要制作一些视图来确定给定用户可以查看哪些用户记录。虽然我可以在 Event 表中复制 Ord PK,但用户记录(因为多个客户可以获得它)无法与添加的 FK 一起使用。

有办法吗?

sql-server
  • 1 1 个回答
  • 31 Views

1 个回答

  • Voted
  1. Best Answer
    J.D.
    2024-12-07T12:55:23+08:002024-12-07T12:55:23+08:00

    您应该提供CREATE表格的脚本和一些示例数据,以便更轻松地概念化数据库结构。此外,从安全角度来看,为每个租户实现一个单独的数据库通常是更好的做法。

    但抛开所有这些,您的用例适合SQL Server中行级安全功能的模型:

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

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

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

    使用行级安全性,您可以创建一个表值函数来应用基于Org表的过滤逻辑(最有可能),然后创建一个安全策略以将该函数应用于所有表。这样可以抽象出安全逻辑,因此您不必手动为每个对象实现它(例如,包装在每个对象的视图中),并将代码折射到一个位置。

    行级安全性还可用于定义策略,阻止哪些用户可以针对特定表运行哪些数据操作查询。

    行级安全性并不能替代安全性方面的最佳实践。它只是增加了一层额外的保护,可以根据您根据最终用户定义的相关标准提供自动数据过滤逻辑。

    • 0

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve