授予角色SQL Server数据库的用户创建用户并授予/改变的作用,但限制改变数据库对象
我们的应用程序需要两种类型的用户(每一个应用程序的用户需要进行数据库访问自己的凭据)授予角色SQL Server数据库的用户创建用户并授予/改变的作用,但限制改变数据库对象
- 联系
我们已经创建了一个用户General User
具有下列权限一般用户:
- 可以浏览存储过程/函数,但不允许查看里面
- 只能选择表的代码,但不能插入/更新/删除存储过程的执行外
我创建了一个角色并补充General User
它:
CREATE ROLE proc_executor
GRANT EXECUTE TO proc_executor
GRANT SELECT TO proc_executor
现在我需要用下面的权限Admin
角色:
- 持有
General User
所有角色,这已经是可用 - 创建新用户,无论是数据库和服务器
- 阿尔特角色添加新用户
有用于Admin
一些限制。他们只能执行存储过程并从表中选择。
我的研究,人们已经建议增加角色像db_accessadmin
,db_securityadmin
,sp_addrolemember
(未找到),这是不足以创建新的用户,并同时打破了限制。
允许创建用户权限并且限制漫步存储过程代码似乎很棘手。 SA的许可持有我们,我们不能允许客户玩数据库。
任何人都可以帮我吗?
为什么不单独创建应用程序的安全模式。你可以有如下表:
-- storing users details
CREATE [dbo].[SecurityUsers] TABLE
(
[SecurityUserID] BIGINT
,...
,...
);
-- storing groups details
CREATE [dbo].[SecurityGroups] TABLE
(
[SecurityGroupID] INT
,[SecurityGroupName] NVARCHAR(128)
,[SecurityGroupDescription] NVARCHAR(1024)
);
-- storing group-users mapping
CREATE [dbo].[SecurityGroupsMembership]
(
[SecurityGroupID] INT
,[SecurityUserID] BIGINT
);
的,你可以写在你的函数的乞讨security check
或存储过程是这样的:
if user is not member of `update data`
begin;
return;
end;
在SQL Server 2016 SP1
你甚至可以映射表等安全功能SELECT
使用row-level security。
您的结构可能更复杂 - 您可以查看安全策略或/和安全角色。您需要添加一个界面(可能)来设置用户权限/成员身份。
我们希望限制用户浏览对象资源管理器。有了这个限制,用户不能漫步存储过程(代码)。应该允许它们执行,通过前端应用程序完成。我们已经做到了。但除此之外,我们需要获得许可才能创建用户以及上述限制。 – aadhikari
你说什么“我们从'sa'user'创建了用户'General User'?用户可以通过登录创建,但不能通过“sa”登录创建任何用户 – sepupic
我们通过用户(默认用户)登录并创建了另一个用户,包括数据库和服务器。 – aadhikari
创建用户/登录时如何登录并不重要。你能确切地说明你做了什么,而不是你做了什么登录。什么登录/用户,你创建了什么权限,或者你什么都没有创建,你的问题是用户和创建什么权限。 – sepupic