如何设置数据用户的拒绝权限
How to set DENY permissions on a data user
对于 .net 应用程序,我们可以像这样存储数据库连接字符串
<connectionstrings config="cnn.config" />
我试图获得尽可能少的权限,但似乎总是有不同的方式。获取信息。
我正在使用这些设置,因为它们对一两个人来说更安全我有其他人在处理我的应用程序。
所以我设置了
USE database_name;
GRANT EXECUTE TO [security_account];
这样用户就可以执行命令了。
然后我有 db_reader
和 db_writer
这样他们就可以读写,这看起来是完美的结合。
仍然是个坏消息,用户可以登录并查看表和存储过程定义但不能更改它们,但是,他们仍然可以看到它们。
如何设置用户可以读、写的权限。执行,就这样了!?
如果您想阻止用户查看 sp 定义,您需要在 sp.
中指定 WITH ENCRYPTION
选项
将用户添加到 db_datareader
和 db_datawriter
角色并授予 EXECUTE 将限制用户读写和执行,但他们仍然可以使用 [= 查看 sp 定义16=] 存储过程和 sys.sql_modules
目录视图。有关 sp 和函数加密的更多信息,请参阅 here。
exec sp_addrolemember @rolename = 'db_datareader', @membername = 'testUser'
exec sp_addrolemember @rolename = 'db_datawriter', @membername = 'testUser'
GRANT EXECUTE TO testUser;
您可以像这样在 AS
关键字之前添加一个 sp WITH ENCRYPTION
选项。请参阅 CREATE PROCEDURE 定义的 WITH ENCRYPTION 部分 here
CREATE PROCEDURE HumanResources.uspEncryptThis
WITH ENCRYPTION
AS
SET NOCOUNT ON;
SELECT BusinessEntityID, JobTitle, NationalIDNumber, VacationHours, SickLeaveHours
FROM HumanResources.Employee;
GO
您还可以通过在 returns 关键字之后添加它来更改函数。
ALTER FUNCTION dbo.getHash ( @inputString VARCHAR(20) )
RETURNS VARBINARY(8000) WITH ENCRYPTION
能够查看表、存储过程等的定义受 VIEW DEFINITION
权限控制。所以你可以这样做:
DENY VIEW DEFINITION TO [yourUser];
并且该用户将无法看到数据库中任何对象的定义。这还包括查看其他用户的能力。
对于 .net 应用程序,我们可以像这样存储数据库连接字符串
<connectionstrings config="cnn.config" />
我试图获得尽可能少的权限,但似乎总是有不同的方式。获取信息。
我正在使用这些设置,因为它们对一两个人来说更安全我有其他人在处理我的应用程序。
所以我设置了
USE database_name;
GRANT EXECUTE TO [security_account];
这样用户就可以执行命令了。
然后我有 db_reader
和 db_writer
这样他们就可以读写,这看起来是完美的结合。
仍然是个坏消息,用户可以登录并查看表和存储过程定义但不能更改它们,但是,他们仍然可以看到它们。
如何设置用户可以读、写的权限。执行,就这样了!?
如果您想阻止用户查看 sp 定义,您需要在 sp.
中指定WITH ENCRYPTION
选项
将用户添加到 db_datareader
和 db_datawriter
角色并授予 EXECUTE 将限制用户读写和执行,但他们仍然可以使用 [= 查看 sp 定义16=] 存储过程和 sys.sql_modules
目录视图。有关 sp 和函数加密的更多信息,请参阅 here。
exec sp_addrolemember @rolename = 'db_datareader', @membername = 'testUser'
exec sp_addrolemember @rolename = 'db_datawriter', @membername = 'testUser'
GRANT EXECUTE TO testUser;
您可以像这样在 AS
关键字之前添加一个 sp WITH ENCRYPTION
选项。请参阅 CREATE PROCEDURE 定义的 WITH ENCRYPTION 部分 here
CREATE PROCEDURE HumanResources.uspEncryptThis
WITH ENCRYPTION
AS
SET NOCOUNT ON;
SELECT BusinessEntityID, JobTitle, NationalIDNumber, VacationHours, SickLeaveHours
FROM HumanResources.Employee;
GO
您还可以通过在 returns 关键字之后添加它来更改函数。
ALTER FUNCTION dbo.getHash ( @inputString VARCHAR(20) )
RETURNS VARBINARY(8000) WITH ENCRYPTION
能够查看表、存储过程等的定义受 VIEW DEFINITION
权限控制。所以你可以这样做:
DENY VIEW DEFINITION TO [yourUser];
并且该用户将无法看到数据库中任何对象的定义。这还包括查看其他用户的能力。