问题标签 [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 回答
26436 浏览

sql-server-2005 - 仅授予视图权限

我的数据库中有一个用户,我想授予他只读一个视图的权限,仅此而已,没有表,什么都没有。

我怎样才能做到这一点?

非常感谢。

PS:我使用的是 MS SQL Server 2005

0 投票
3 回答
4605 浏览

c# - 添加数据的 SQL 权限以及如何验证?

我正在寻找一种好方法来维护谁可以将数据添加到 C# 应用程序和 SQL Server 2005 中的数据库的权限。

不过,我需要解释清楚。所以让我们举个例子:

我有两个用户Bob,并且Jim都已添加到 SQL 权限中,因此他们对数据库具有写访问权限。现在所有访问都基于域用户帐户。所有其他用户只有读取权限。

现在我有几个表,例如:

  • 用户
  • 用户权限
  • 图书
  • 图书出版商

因此UserPermissions包含用户和图书出版商的列表。例如:Bob有权为 . 添加书籍MS PressJim有权为O'Reilly.

现在我需要验证这些信息并限制他们可以添加的内容。

所以说Jim从命令行使用我的应用程序,他写了如下内容:

Addbook.exe "C# 3.0 in a Nutshell" "O'Reilly"

该工具应该继续将书添加到书表中。

现在说Bob尝试相同的命令,该工具应该出错,因为他没有权限添加书籍O'Reilly

现在我需要知道如何做几件事。

  • 验证用户首先对 SQL Server 具有写入权限
  • 验证用户是否具有books特定发布者添加的写入权限
  • 另外我需要在工具实际尝试添加数据之前验证上述是否属实,即在工具继续之前我需要先验证反馈

现在我不是 100% 担心用户注入恶意数据,虽然阻止它会很好,但它是一个内部工具,我想我可以信任用户......(可能)

无论哪种方式,我都不知道从哪里开始,我的 SQL 技能非常缺乏。

Akk,最后一件事,我不想使用存储过程添加数据。

0 投票
2 回答
592 浏览

asp.net - asp.net 成员需要的 sql server 上的最低访问级别是多少?

出于安全原因,asp.net 会员用户可以拥有的最低访问级别是多少?

0 投票
3 回答
1053 浏览

sql-server - 数据库权限结构

我的许多雇主应用程序共享一个类似的内部权限结构,用于将数据限制为一组特定的用户或组。组也可以嵌套。

我们目前使用这种方法面临的问题是枚举权限非常慢。当前方法使用带有许多游标和临时表的存储过程。这对于较小的应用程序来说效果很好,但是我们现在有一个特定的系统正在快速增长,并且开始放缓。

基本表结构如下;

tblUser { 用户 ID、用户名、WindowsLogonName }

tblGroup { GroupID、名称、描述、SystemFlag }

tblGroupGroup { GroupGroupID,名称,}

tblGroupUser { GroupUserID,名称,}

并将它们捆绑在一起;

tblPermission { PermissionID、SecurityObjectID、SecuredID、TableName、AllowFlag }

其中包含行,如..

'5255-5152-1234-5678', '{ID of a Group}', '{ID for something in tblJob}', 'tblJob', 1

'4240-7678-5435-8774', '{用户 ID}', '{tblJob 中某事的 ID}', 'tblJob', 1

'5434-2424-5244-5678', '{ID of a Group}', '{ID for something in tblTask​​}', 'tblTask​​', 0

当然必须有一种更有效的方法来枚举所有组并获取安全行的 ID?

使事情进一步复杂化;如果用户被明确拒绝访问某行,则这会否决任何组权限。这一切都在 MSSQL 中。

0 投票
7 回答
107671 浏览

database - 使用多个数据库各自具有一个模式,还是使用一个数据库具有多个模式更好?

在对我的一个问题发表评论之后,我正在考虑使用一个具有 X 模式的数据库是否更好,反之亦然。

我正在开发一个网络应用程序,当人们注册时,我创建(实际上)一个数据库(不,它不是一个社交网络:每个人都必须有权访问自己的数据,并且永远不会看到其他用户的数据)。这就是我在以前版本的应用程序中使用的方式(仍在 MySQL 上运行):通过 Plesk API,对于每次注册,我都会:

  1. 创建具有有限权限的数据库用户;
  2. 创建一个只能由之前创建的用户和超级用户访问的数据库(用于维护)
  3. 填充数据库

现在,我需要对 PostgreSQL 做同样的事情(项目正在变得成熟,而 MySQL 并不能满足所有需求)。我需要让所有数据库/模式备份独立:pg_dump两种方式都可以完美运行,对于可以配置为仅访问一个模式或一个数据库的用户也是如此。

所以,假设你是比我更有经验的 PostgreSQL 用户,你认为什么是适合我情况的最佳解决方案,为什么?使用 $x 数据库而不是 $x 模式会有性能差异吗?未来有什么解决方案会更好地维护(可靠性)?我所有的数据库/模式将始终具有相同的结构!

对于备份问题(使用 pg_dump),使用一个数据库和多个模式可能会更好,一次转储所有模式:恢复将非常简单,将主转储加载到开发机器中,然后仅转储和恢复所需的模式:那里是一个额外的步骤,但是转储所有模式似乎比一个一个地转储它们更快。

2012 年更新

好吧,在过去的两年里,应用程序的结构和设计发生了很大的变化。我仍在使用“一个具有多个模式的数据库” - 方法,但是,我的应用程序的每个版本都有一个数据库:

对于备份,我定期转储每个数据库,然后将备份移动到开发服务器上。我也在使用 PITR/WAL 备份,但正如我之前所说,我不可能一次恢复所有数据库。所以它可能会在今年被解雇(在我的情况下不是最好的方法)。

从现在开始,one-db-many-schema 方法对我来说效果很好,即使应用程序结构完全改变了。我几乎忘记了:我所有的数据库/模式将始终具有相同的结构!现在,每个模式都有自己的结构,可以根据用户数据流动态变化。

0 投票
1 回答
27211 浏览

oracle - 如何检查哪些模式已被授予对 Oracle 对象的 EXECUTE 权限?

我需要找出哪些模式已被授予对 Oracle 10g 数据库(在本例中为包)中某个对象的执行权限。对我来说最简单的方法是什么?是否有提供此信息的内置函数?

0 投票
8 回答
74038 浏览

asp.net - ASP.NET 和 SQL Server 2008 中的错误“用户 'NT AUTHORITY\IUSR' 登录失败”

我的 ASP.NET v3.5 Web 应用程序在尝试打开与 SQL Server 2008 数据库的连接时抛出以下异常:

System.Data.SqlClient.SqlException:无法打开登录请求的数据库“MyDbName”。登录失败。用户“NT AUTHORITY\IUSR”登录失败。

问题是,我已经添加NT AUTHORITY\IUSR到服务器的登录列表和数据库的用户列表中。对于服务器,我已授予用户 Public 角色,对于数据库,我已授予db_datareader权限。

我也为 授予了相同的权限NT AUTHORITY\NETWORK SERVICE,这是应用程序池在其下运行的标识。

Web 应用程序由 IIS7 托管,如果这有所不同的话。当数据库和 IIS 也在同一台物理机器上时,该问题也会重现。

0 投票
3 回答
10704 浏览

database - Oracle DBA 权限是否包括“CREATE ANY TABLE”角色?

我只需要在同一个数据库下创建从用户到任何用户的表。让我们考虑 3 个模式。

Schema_1、Schema_2 和 Schema_3。

模式 1 具有 DBA 特权。

是否可以从 Schema_1 中的 Schema_2 或 Schema_3 中表??

或者我们也需要给这个角色“创建任何表”??

0 投票
1 回答
1638 浏览

c# - 如何设置sql数据库的权限?

我正在尝试使用 xp pro 在我的计算机上使用 iis 5.1 托管一个 asp.net 网站。

我在 iis 中使用 windows 身份验证。该站点的文件夹权限设置为允许经过身份验证的用户。模拟已在 web.config 文件中设置为 true。

该网站使用本地数据库,通过 VWD express 08 访问时工作正常。但是当我尝试通过互联网访问它时,我收到以下错误:

“用户无权执行此操作。”

我如何允许通过 iis 的 windows 身份验证进行身份验证的用户访问数据库或设置每个人的数据库访问权限?

0 投票
2 回答
968 浏览

sql-server - 应该为 LinqToSql 授予 SQL Server 用户什么权限?

我正在使用 LinqToSQL 和可信连接来处理数据库选择/更新/插入/删除。过去,我一直使用存储过程,并且只授予数据库中特定存储过程的应用程序池标识的执行权限。这是我的第一个 LinqToSql 项目(我真的很喜欢它的帮助)。我不希望授予 dbo 对应用程序池身份的访问权限以使 LinqToSql 工作(但如果建议这样做,那么我不介意)。我可以向应用程序池身份授予什么类型的权限,以便 LinqToSql 拥有最低权限?还是我应该只使用 dbo 权限并完成它?

根据KristoferA 的回答,这是我在数据库中授予应用程序池身份的权限:
EXEC sp_addrolemember 'db_datareader', 'app_pool_identity'
EXEC sp_addrolemember 'db_datawriter', 'app_pool_identity'

与仅授予必要的存储过程执行权限的安全级别不完全相同,但考虑到我仅通过使用 Linq2SQL 就获得了巨大的开发收益,我对此非常满意。这比授予完整的 dbo 访问权限要好。