Ограничить пользователя в SQL плюс к одной записи в таблице - PullRequest
0 голосов
/ 20 марта 2011

У меня есть одна таблица сотрудников ... эта таблица содержит 5 столбцов (empname, empgsm, empsal, empaddr, empdep) ... в ней 10 записей . Я создал 10 пользователей, эквивалентных столбцу empnames в таблице. Когда пользователь входит в систему со своим empname, также известным как имя пользователя и пароль, он сможет видеть только свою запись из таблицы.

например. Смит - сотрудник, был создан пользователь по имени Смит. , когда этот пользователь находится в сеансе, и вводит "Select * from Employee_table", он получает только принадлежащую ему запись, где empname - Смит.

Как мне сделать это, используя привилегии?

Ответы [ 3 ]

1 голос
/ 20 марта 2011

Исходя из тега sqlplus, я полагаю, вы используете Oracle.

В Oracle вы можете сделать это с помощью Fine Grained Access Control или виртуальной частной базы данных.Он работает путем добавления предложений where к любому выражению sql.

Если у вас есть приложение, основанное на схеме, вы также можете добавить предложение where (где username = user) самостоятельно.Это, вероятно, менее безопасно, но достаточно для многих случаев использования

Имя пользователя Oracle, вошедшего в систему в данный момент, доступно в переменной 'user'.

1 голос
/ 20 марта 2011

Мое предложение состоит в том, чтобы создать представление для таблицы, в которой указано условие where, основанное на текущем имени пользователя, примерно так:

select * from employee t
where sys_context('USERENV','SESSION_USER') = t.empname`enter code here
0 голосов
/ 20 марта 2011

Если мы говорим об Oracle, команда GRANT позволит пользователям SELECT таблицы, поэтому может извлечь любую строку. Если вы хотите ограничить доступ пользователей к таблице на уровне строк, используйте расширенные функции, такие как Oracle Label Security 1 2 . Это рекомендуется, если у вас есть серьезные проблемы с безопасностью, но я предпочитаю использовать другой механизм для проверки пользователей, например LDAP.

...