问题标签 [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 投票
3 回答
6097 浏览

sql-server - 将数据库列表限制为具有 SQL Server 权限的列表

默认情况下,如果您通过有权访问 10 个数据库中的 1 个的帐户连接到远程 SQL Server。您仍然会在对象资源管理器中看到所有其他数据库,显然由于权限您无法实际查询它们,但您可以看到它们的名称。

我听说有一种方法可以禁用此行为,但我一直无法找到答案,有人知道该怎么做吗?举个例子,我有一个名为 MyDbServer 的 SQL Server,它有 4 个数据库,

  1. 我的数据库
  2. 你的数据库
  3. 私有数据库
  4. 真正的私人数据库

如果您通过仅具有“YourDatabse”权限的帐户连接,您仍将看到所有其他数据库的列表,尝试查询将授予“选择”权限被拒绝或类似错误。

出于安全考虑,我们不希望用户看到他们映射到的数据库以外的任何数据库。

0 投票
2 回答
18009 浏览

sql-server - SQL Server 2005 - 授予创建存储过程的权限(但没有其他对象)

我想授予用户创建、更改和执行存储过程的权限,但不能创建其他数据库对象。我将它们排除在角色 db_ddladmin 之外,但明确授予了“创建过程”和“执行”权限。这些权限出现在有效权限列表中。但是,当我尝试使用此登录名创建存储过程时,出现以下错误:

“指定的架构名称“dbo”要么不存在,要么您没有使用它的权限。

有什么建议么?

0 投票
5 回答
8414 浏览

php - PHP门禁系统

我是使用 PHP 和 MySQL 创建 Web 应用程序的团队的一员。该应用程序将有多个具有不同角色的用户。该应用程序还将以地理分布的方式使用。因此,我们需要创建一个在以下两个级别上运行的访问控制系统:

  1. 控制特定 php 页面的用户权限,即根据用户的角色提供或拒绝对特定页面(或用户界面元素)的访问。例如:用户可能被允许访问“学生”页面,但不能访问“教师”页面。
  2. 控制特定数据库记录的用户权限,即修改数据库查询以便仅显示特定记录。例如,对于城市级别的用户,只应显示与用户的特定城市相关的记录,而对于国家级别的用户,应显示该国所有城市的记录。

我需要帮助设计一个可以处理这两种访问控制类型的系统。点号 1似乎很简单。但是,我完全不知道如何在不对 SQL 查询中的信息进行硬编码的情况下执行第 2 点。

任何帮助,将不胜感激。

提前致谢

维纳亚克

0 投票
1 回答
3194 浏览

sql-server - 如何在 SQL Server 2005 中授予对 sysprocesses 的有限访问权限?

我正在实施一些基本的 SQL Server 监控来监视过度阻塞。

我有一个如下所示的存储过程:

当我在管理员上下文中执行此操作时,我得到了正确的答案。当我在具有有限权限的用户(即网络服务器)的上下文中执行此操作时,无论真实答案如何,我都会得到零。

我可以想到一些解决方案,但我对其中任何一个都不满意:

  1. 我可以向用户授予 VIEW SERVER STATE 权限,但这比该用户应该拥有的权限多得多:

    /li>
  2. 从 SQL 作业运行 proc 并将结果放在某处以供网络服务器获取,但这很混乱且复杂。

  3. 不要尝试从网络服务器调用它!

我确信有更好的解决方案。有什么建议么?

0 投票
7 回答
9641 浏览

asp.net - ASP.Net Membership.DeleteUser

在测试中,我使用的数据库上的用户是一个大杰夫。在生产中,他只有 Execute。

当我打电话时,

在测试中,它起作用了。我在生产中尝试同样的方法,我得到了这个:

DELETE 语句与 REFERENCE 约束“FK__aspnet_Us__UserI__37703C52”冲突。冲突发生在数据库“Testing”、表“dbo.aspnet_UsersInRoles”、列“UserId”中。

在我的 seargles(在 Google 上搜索)中,我遇到了这个家伙说的这个链接

错误:DELETE 语句与 REFERENCE 约束“FK__aspnet_Me__UserI__15502E78”冲突。冲突发生在数据库“YourDBName”、表“dbo.aspnet_Membership”、列“UserId”中。

我花了一段时间在多个站点和选项中找到解决方案,因为错误和可能的解决方案相当具有误导性。事实证明,至少在我的情况下,这是成员数据库权限的问题。我用来连接的用户有权查看数据库本身的成员详细信息,但作为 aspnet_Users_DeleteUser 存储过程的一部分,它从 sysobjects 表中选择。会员连接用户显然没有足够的权限来执行该选择,因此整体删除失败。

我的解决方法是将用户添加到成员数据库的 aspnet_Membership_FullAccess 角色。

但是当我这样做时,它不起作用。有人对如何处理这个有任何想法吗?

0 投票
6 回答
9653 浏览

sql - 用户授予对存储过程的访问权限但无法运行查询

我正在开发一种运行 SQL 服务器的产品,该服务器允许一些应用程序登录,并且他们的登录被授予运行存储过程的权限——而不是其他任何东西。存储过程归管理员所有;存储过程接受一个查询并执行它,然后将结果返回给应用程序。

不幸的是,我无法弄清楚为什么应用程序可以调用它被授予访问权限的存储过程,但是存储过程不能执行传递给它的 SQL 语句。

当我以管理员身份登录时,存储过程会执行传入的查询,但是当我以受限用户身份登录时,它会在执行语句中引发异常。

例如:

STORED_PROC 看起来像这样:

try catch 语句中没有任何内容,除了 EXEC... 和 SQL_STATEMENT 在我以管理员身份登录时有效,但在我以用户身份登录时无效。

谁能帮我弄清楚我需要设置哪些权限才能允许用户仅通过存储过程运行查询?


所以有一些关于允许通过存储过程执行原始 SQL 语句的评论违背了使用存储过程的目的......但实际上我们实际上正在做的是将加密的 SQL 语句传递到存储过程中并且存储的过程将语句解密,然后执行它。

所以是的,实际上原始 SQL 语句并不安全,它们破坏了存储过程的目的,但我不知道如何加密通过 ODBC 传递并针对 2005 年之前的 SQL Server 运行的 SQL 查询。

无论如何,我尝试设置一些最低限度的保护措施,以至少具有一些基本的安全性。

0 投票
4 回答
9429 浏览

sql - 为什么存储过程不能从另一个数据库中读取表(我一定是错误地使用了 GRANT 和 DENY)

我有两个 Microsoft SQL Server 2000 数据库,一个存储过程尝试从另一个数据库读取数据。这曾经可以正常工作,但是由于我变得具有安全意识并将登录名(SQL 用户)从“db owner”更改为“denydatareader”,因此调用失败。

如果我使用组“datareader”,我可以让事情正常工作,但由于我不希望此登录名具有对用户表的读取权限(ASP 仅使用 procs),我认为这是不明智的。如果我将用户从所有组中取出,它也可以工作!!!这个可以吗?


一个数据库称为“内部”,并有一个名为“Stuff”的表。另一个称为“WebFacing”,并有一个名为“Get_Some_Data”的存储过程,它从“Internal..Stuff”中选择。

我在内部数据库上运行了这个命令:
GRANT SELECT ON Stuff TO magnus

我在 WebFacing 数据库上运行了这个:
GRANT EXECUTE ON Get_Some_Data TO magnus

我的 ASP 使用 SQL 登录“magnus”并连接到“WebFacing”数据库。当它尝试执行该过程时,它会出错:
SELECT permission denied on object 'Stuff', database 'Internal', owner 'dbo'.


(抱歉,如果这是一个愚蠢的问题,但我被推到了深处,昨天才了解了 GRANT 和 DENY。我试过谷歌搜索......)

0 投票
3 回答
2683 浏览

java - Hibernate:有没有办法以编程方式创建类似于现有表的新表?

我有一个有很多表的网络应用程序(每个表代表一个 POJO)。我为每个类编写了映射文件,然后使用 HibernateSchemaExport在我的数据库中生成表。现在我想为每个已创建的现有表创建 2 个附加表:

  • 用户权限表- 存储用户对 POJO 的权限,特定于每个字段
    ,每一列代表 POJO 中的一个字段,每一行代表一个用户,每个单元格将有一个值“读取”、“写入”等,代表用户对 POJO 的权限场地

  • 数据历史表- 使用版本号存储所有数据历史记录,
    该表将包含 POJO 表具有的所有列,并带有 4 个附加字段:数据对象版本、事务 GUID(主键)、数据戳和执行此事务的用户。

我希望能够在创建这些表后通过 Hibernate 访问它们。这样我就可以轻松地在其中添加/删除/更新条目。


我的问题

附加表上的大多数列将与 POJO 表相同。所以我认为以某种方式引用 POJO 表而不是创建全新的表可能会更好。这样,如果 POJO 表中添加了新字段,这些表将自动进行更改。但我似乎不知道该怎么做。我想也许有一些方法:

  • 创建以某种方式引用 POJO 表的休眠映射文件,
    例如在我的新 POJOPermission.hbm.xml 文件中,以某种方式指定,使用与 POJO 表相同的字段,并添加这些新字段。
  • 编写 Java 代码以在 Hibernate 中创建表,
    例如我可以使用 java.lang.Class 返回 POJO 中所有字段的列表,然后遍历这些字段,以某种方式将它们设置为我的新表的列标题,并以某种方式调用Hibernate 在运行时创建这些表

有人可以告诉我如何执行上述任一操作,或者解决此问题吗?我有一种感觉,我可能以错误的方式思考这个问题......

谢谢!!!

[编辑 - 解决方案]

我最终使用 XSLT 将原始 hbm.xml 文件转换为新文件,更改字段类型等。并指定 hibernate.cfg.xml 文件以包含新生成的文件。最后只需运行 schemaexport 即可生成所有 java 文件...

0 投票
1 回答
2310 浏览

asp.net - SQL 登录访问 ASP.Net 应用程序数据库的权限

我总是想知道我需要为我从我的 asp.net 应用程序中使用来访问数据库的 sql 登录提供哪些确切的访问权限和权限。应用程序执行一些存储过程,将数据插入、更新和删除到表中。我也直接在表上选择、删除、更新。还有一些触发器。想知道是否有一个完整的权限矩阵列表来提供帮助。

0 投票
3 回答
1158 浏览

php - 您如何在基于 PHP 的典型 CMS 构建中存储数据库凭据?

在 CMS 中存储数据库凭据的最佳做法是什么?现在我在我的数据库单例类中声明它们:

但是搜索在哪里更改它们并不是那么直观,而且我计划稍后为 cms 制作安装文件。

您在哪里以及如何存储您的连接偏好?