问题标签 [database-permissions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1685 浏览

postgresql - PostgreSQL 用户组和授权

PostgreSQL 9.0 版

我需要一个对 postgresql 用户进行分组的想法。

我在数据库中有 150 多个表,我想解决一群人。其中一些可以到达所有桌子,有些则不能。我知道可以使用授权或创建角色来实现。但我想弄清楚这是最好的方法。它将如何影响性能?

让所有用户访问某些表并管理它们对我来说似乎很难。所以我想如何创建不同的表空间并按表空间设置权限。

有没有什么好的教程、文章或方法来创建用户组?你有什么建议?

0 投票
1 回答
2346 浏览

sql - SQL Server 2008 多数据库权限通过角色或架构或脚本

假设我办公室中有多个用户需要访问多个相互依赖的数据库。我的用户是系统管理员,但随着更多员工的加入,我希望能够为这些不是系统管理员但需要对特定数据库的所有者级别权限的新用户应用特定权限,而无需授予他们修改其他用户的权限。除了手动添加每个角色之外,我还想创建一个可以应用于用户并授予每个数据库权限的角色,或者创建一个模式,将这些权限授予每个数据库上的用户,或者创建一个脚本来提供每个数据库的用户权限。例如

我想将 user3 和 user4 添加到 role1 一次,他们将拥有所有三个数据库(DB1、DB2、DB3)的权限。据我了解,这基本上是一个服务器级别的角色,但从我所读到的内容来看,您不允许创建自定义服务器级别的角色。

此外,据我所知,架构是特定于数据库级别的,而不是特定于服务器级别的(我不能将 3 个数据库分组到一个架构中,然后将用户添加到该架构中)。

那么这是否让我只能编写脚本,或者我是否错过了使用角色或架构执行此操作的方法?

0 投票
0 回答
717 浏览

database - 如何设置权限以在单个查询中引用多个数据库(SQL Server)

我在同一个 SQL Server 上有两个数据库,它们具有相同的表结构。Database2010填充了数据并且Database2007为空。

我需要编写一个 SQL 语句,它将从表中复制数据Database2010并将其插入到Database2007.

我在想这样的事情:

如何在 SQL Server 中设置权限以让我像这样访问两个数据库?

我已经阅读了有关多个数据库查询的其他问题,但它们都与语法相关,并且每个问题都有“当然,您需要为每个数据库设置适当的权限”或类似的内容。这些适当的权限在哪里?

0 投票
1 回答
7654 浏览

mongodb - 使用 MongoDB 有效地确定层次结构中记录的所有者

我正在努力实现以下目标:

选择我拥有的所有记录,其中所有权是我创建的对象或我管理的用户创建的对象,其中用户管理可以在管理用户的用户层次结构中

所有权显然是直截了当的,可以通过与所有者相对应的简单 id 来处理。用户管理的层次结构让我有点难以执行,而无需通过大量 ID 列表进行繁重的工作(您显然可以找到每个受管理的用户并列出由任何这些用户使用 IN 子句或类似语句创建的每个对象)。

理想情况下,这一切都发生在一个查询中,因此可以发生正常的分页和条件。

我在想可能有一些数学来完成它 - 拥有可以以某种方式散列以确定它们是否由命令链中的任何人拥有的 ID。

这种事情有什么参考资料吗?

我错过了一些明显的东西吗?

如果这会有所作为,请使用 MongoDB,但很高兴考虑其他数据库以获得灵感。

更新: 创建了一个包含 1,000,000 条记录的 MongoDB 集合,以获取一些可靠的数据,这些数据准确地说明了查询中 IN 子句的可管理数量的参数。当我有一些具体信息时会报告。

分析:

使用 ruby​​-mongo-driver 和 ruby​​ 基准库。

具有 1039944 条记录的 MongoDB 集合

记录定义为:

为所有字段随机生成值。

Owner 字段有一个索引。

在以下条件下运行查询:

结果:

即使查询中有 10k 个 id 的列表,性能也相当出色。

0 投票
1 回答
1081 浏览

sql - 允许存储过程使用 SQL Server 2012 中的证书从系统表中进行选择

我目前在尝试运行尝试从系统表中选择的存储过程时遇到与权限相关的问题。基本上,我试图通过直接从 sys.dm_tran_current_transaction 表中获取我需要的数据来解决 SQL Server 2012 中 sp_bindtoken 系统存储过程的弃用问题。

我发现的一种解决方案是:

  • 创建证书
  • 从证书创建用户/登录
  • 授予用户查看服务器状态权限
  • 使用证书对存储过程进行签名
  • 执行存储过程,该过程在刚刚创建的用户的上下文中运行

这种方法似乎在 SQL Server 2008 R2 中运行良好。然而,在 SQL Server 2012 中,即使脚本看起来运行正确,但在运行时存储过程会在尝试从上述系统表中进行选择时失败并出现权限错误。

我目前的脚本看起来有点像这样:

这是创建我要签名/执行的存储过程的代码:

有没有人遇到过这种类型的问题?

0 投票
2 回答
1088 浏览

oracle - 检索用户可选择的所有表(在 Oracle 中)

如何检索用户具有 SELECT 权限(直接授予或通过分配的角色授予)的所有表的列表?

0 投票
4 回答
9382 浏览

postgresql - 为什么 PostgreSQL 将用户和组合并为角色?

来自PostgreSQL 文档

角色的概念包含“用户”和“组”的概念。在 8.1 之前的 PostgreSQL 版本中,用户和组是不同种类的实体,但现在只有角色。任何角色都可以充当用户、组或两者兼而有之。

为什么他们在 8.1 中做出了这个改变?

从 C 编码人员的角度来看,使用单个角色类(结构)也许更容易?

更多详情

CREATE USER is equivalent to CREATE ROLE except that CREATE USER 将登录权限授予用户/角色

(我即将为我的 webapp 设计一个权限系统,因此我对此很感兴趣。)

0 投票
1 回答
1219 浏览

security - DotNetNuke 初始安装安全最佳实践

我在 Windows Server 2008 上安装了几个 DotNetNuke 站点。我想知道应该如何将各种安全实体配置在一起。例如,一些安装参考建议将站点文件的权限设置为包含“网络安全”和修改权限;IIS 7.5 AppPool 标识设置为网络服务。

至于数据库 - 我使用的是 SqlServer 2008。我使用了 Windows Integrated 和 SqlServer 用户身份。一个比另一个更受欢迎吗?我在这个论坛中注意到 AppPool 身份需要 SqlServer 中的 db_owner 权限。

简而言之,我试图将文件权限、IIS 7.5 AppPool 和 SqlServer 2008 安全设置结合在一起。我使用 DotNetNuke 5.x 和 6.x。

0 投票
2 回答
158 浏览

database - “真实”数据库授予用户什么权限?

在阅读@PerformanceDBA 对历史/可审计数据库的回答时,他发表了以下声明:

在真实的(标准 ISO/IEC/ANSI SQL)数据库中,我们不会向用户授予 INSERT/UPDATE/DELETE 权限。我们仅授予 SELECT 和 REFERENCES(对选定的用户)所有 INSERT/UPDATE/DELETE 都在 Transactions 中编码,这意味着存储过程。然后我们将每个存储过程上的 EXEC 授予选定的用户(使用 ROLES 来减少管理)。

这是真的?这与动态生成 INSERT/UPDATE 的 ORM 工具有何不同?

更新

好的,这里有一个例子。我有一个带有两个界面的 Web 应用程序,一个Admin和一个User。管理端使用重型ORM 能够动态生成数百个甚至数千个不同的 SQL 命令。

用户交互要简单得多,我有十几个 SP 可以处理几个投票按钮的任何 UPDATE/INSERT。显然,运行应用程序的用户具有非常不同的权限集。在管理方面,ORM 的 DB 用户对相关表具有完全 CRUD 访问权限,此应用程序根本没有使用任何 SP——如果不经过域模型中的业务逻辑,我不会想到接触数据. 甚至批量数据导入也通过 ORM 进行处理。用户方面的 SP 我认为对这个原则做了一个小小的让步,因为他们是这样一个特例。

现在,我发现原始问题中的上述陈述有些令人不安,因为我认为这是一个“真正的”数据库,或者至少接近它。

0 投票
3 回答
618 浏览

sql - sys.database_permissions 何时会包含 state = 'R' 的行?

MSDN 文档sys.database_permissions说状态列可以是“G”、“D”、“R”或“W” 。“R”值具有“REVOKE”的描述,这听起来像是具有该值的行将对应于撤销的权限。但是,据我所知REVOKEsys.database_permissions. 这就是当我测试授予然后撤销权限时发生的情况;在GRANT权限出现在该视图中之后,在REVOKE它消失之后。

我的问题:在什么情况下这个视图会包含状态设置为“R”的行?我问这个是因为我不确定在代码中检查这个视图时是否需要处理“R”行。

我可以想到一些可能发生这种情况的潜在场景,但没有找到任何确认:

  • 如果您授予了一些总括权限,然后撤销了总括权限所暗示的更细化的权限,则可能会出现“R”行(细化权限将显示为“R”)。到目前为止,我还没有找到任何这样的权限。
  • 当 SQL 正在处理命令时,“R”行可能会非常短暂地出现REVOKE,然后整行就会消失。我没有观察到这一点,但大概只有一个很小的时间窗口才会出现。