2016-04-19 3 views
1

данных для приложения .net мы можем хранить ConnectionStrings базы данных, как такКак установить ОТРИЦАТЬ разрешения на пользователя

<connectionstrings config="cnn.config" /> 

Я пытаюсь получить как мало, как права доступа, как это возможно, но всегда кажется, что другой путь. Получить информацию.

Я использую настройки, потому что они более безопасны для одного и двух. У меня есть другие люди, работающие над моим приложением.

Так я установил

USE database_name; 
GRANT EXECUTE TO [security_account]; 

Таким образом, пользователь может выполнять команды, которые прекрасно.

Тогда у меня есть db_reader и db_writer, чтобы они могли читать и писать, и это кажется идеальным браком.

По-прежнему плохая новость, что пользователь может войти в систему и увидеть таблицы и хранить определения процедур, но не изменять их, однако они все еще могут их видеть.

Как я могу установить разрешения на то, где пользователь может читать, писать. выполнить, и это он ПЕРИОД !?

+1

Тег dbms used, ответ, вероятно, будет специфичным для продукта. – jarlh

ответ

2

Будучи в состоянии увидеть определение таблиц, хранимые процедуры и т.д. регулируются VIEW DEFINITION разрешения. Таким образом, вы можете сделать:

DENY VIEW DEFINITION TO [yourUser]; 

И этот пользователь не сможет определить определение для любого объекта в базе данных. Это также включает возможность видеть других пользователей.

1

Если вы хотите, чтобы пользователь не просмотрел определение sp, вам необходимо указать опцию WITH ENCRYPTION в sp.

Добавление пользователя к роли db_datareader и db_datawriter и предоставление ВЫПОЛНИТЬ ограничит пользователь чтения письма и выполнение, но они все равно будут иметь возможность увидеть определение зра с помощью sp_helptext хранимой процедуры и sys.sql_modules каталога вида. См. here для получения дополнительной информации о шифровании sp и funciton.

exec sp_addrolemember @rolename = 'db_datareader', @membername = 'testUser' 
exec sp_addrolemember @rolename = 'db_datawriter', @membername = 'testUser' 
GRANT EXECUTE TO testUser; 

Вы можете создать ПЛ вариант WITH ENCRYPTION, добавив его до AS ключевого слова, как это. См С ENCRYPTION секцию определения CREATE PROCEDURE here

CREATE PROCEDURE HumanResources.uspEncryptThis 
WITH ENCRYPTION 
AS 
    SET NOCOUNT ON; 
    SELECT BusinessEntityID, JobTitle, NationalIDNumber, VacationHours, SickLeaveHours 
    FROM HumanResources.Employee; 
GO 

Вы также можете изменить функции, добавив его после ключевого слова возврата.

ALTER FUNCTION dbo.getHash (@inputString VARCHAR(20)) 
RETURNS VARBINARY(8000) WITH ENCRYPTION 
Смежные вопросы