SQL Server и Oracle для чтения / записи ролей - PullRequest
0 голосов
/ 16 августа 2010

Мне нужно создать несколько ролей (я не знаю, как правильно их назвать, поэтому назову это роль :)) на SQL Server и Oracle, и я действительно мало знаю об обоих серверах БД., поэтому я не знаю, что мне нужно искать.

Мне нужно создать 2 роли:

  • пользователей, которые могут фильтровать данные только из таблиц (SELECT).
  • пользователей, которые могут изменять данные (например, оператор DELETE), но не могут изменять схему (добавление / удаление таблиц в БД)

Мне также нужна помощь, как использовать эти роли из .Net.

Можете ли вы помочь мне, и дать мне несколько подсказок, что я должен искать?Или, возможно, у вас есть готовое решение.Я действительно ценю любую помощь.ТИА.

Ответы [ 4 ]

2 голосов
/ 16 августа 2010

Я не могу говорить с Oracle, так как никогда не использовал его, но в SQL Server есть 2 встроенные роли, которые делают именно это: db_datareader и db_datawriter. Обратите внимание, что они разделены, поэтому для чтения и записи вам понадобятся обе роли. Если вы хотите использовать эти роли в приложении .net, то самый простой способ - использовать встроенную аутентификацию Windows в строке подключения, а затем добавить эти роли пользователю Windows для соответствующей базы данных в SQL Management Studio.

1 голос
/ 14 октября 2013

Oracle имеет набор системных привилегий, которые могут быть предоставлены учетной записи для достижения этой цели. Обычно разрешения, к которым прикреплено слово ANY.

Например, среди привилегий :

INSERT ANY TABLE - позволяет пользователю вставлять в любую таблицу в базе данных.

SELECT ANY TABLE - позволяет пользователю выбирать из любой таблицы, представления или материализованного представления в базе данных.

1 голос
/ 17 августа 2010

Oracle не имеет эквивалента ролей SQL Server.Это потому, что он поощряет соблюдение принципа Наименьшей привилегии .Тем не менее, вполне возможно придумать свою собственную.

create role db_datareader 
/
grant select any table to db_datareader 
/

Аналогичным образом мы можем создать эквивалентный db_datawriter, предоставив роли DML ЛЮБЫЕ привилегии роли.Как правило, я бы посоветовал против этого.В большинстве случаев только администратор базы данных должен иметь ЛЮБОЙ уровень привилегий, и для них уже есть роль администратора.

0 голосов
/ 16 августа 2010

Краткий ответ: MSSQL имеет встроенные роли, называемые db_datareader и db_datawriter, которые близки к тому, что вы хотите. Oracle нет (насколько я знаю, я могу ошибаться), поэтому вам придется определить свой собственный.

Длинный ответ: разрешения в MSSQL и Oracle могут быть сложными, тем более что они имеют совершенно разные концепции логинов / пользователей / баз данных / схем и т. Д. Вам действительно нужно потратить время на их понимание, чтобы эффективно управлять разрешениями или велика вероятность, что вы будете делать то, что не должны делать. Если у вас нет времени, подумайте о том, чтобы найти кого-то, у кого есть время.

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

...