Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];

Вниз

Ограничение доступа к базе   Найти похожие ветки 

 
dash78   (2003-03-03 07:53) [0]

Здравствуйте всем.
Уважаемые мастера подскажите как ограничить доступ к отдельным записям в таблицах базы определенных пользователей и реализовать это в программе.
К примеру: главный бухгалтер имеет доступ к информации о сотрудниках только по своему отделу, начальник финансового отдела - по своему, начальник ОК - по всем отделам?


 
Anatoly Podgoretsky   (2003-03-03 08:05) [1]

WHERE условия


 
Alexandr   (2003-03-03 08:29) [2]

через view


 
zacho   (2003-03-03 08:31) [3]

Например, так:
Есть таблица OTDEL с полем ID_OTDEL - ПК.
Создаем таблицу USERS_OTDEL с полями ID_USER varchar(макс. размер имени пользователя в IB), ID_OTDEL - FK на OTDEL.
Для доступа к таблице OTDEL используем только VIEW или SP примерно такого вида: SELECT bla-bla-bla, ... FROM OTDEL O JOIN USERS_OTDEL UO ON O.ID_OTDEL=UO.ID_OTDEL AND UO.ID_USER=USER
Естественно, это только в общих чертах.


 
dash78   (2003-03-03 09:20) [4]

2 Alexandr
создавать для каждого пользователя view??

2 zacho
сп
была такая же мысль

может у кого еще есть какие интересные идеи??


 
passm   (2003-03-03 09:25) [5]

Обычно создаю пару просмотров на таблицы: все доступные записи с полем READONLY и привелегией только SELECT и просмотр с записями READONLY = "N" со всеми привелегиями и LOCAL CHECK OPTION.
Приблизительно по схеме:
CREATE TABLE USER_LIST
(USER_ID VARCHAR(32),
USER_NAME VARCHAR(64));

CREATE TABLE OTDEL_ACCESS
(USER_ID VARCHAR(32),
OTDEL_ID INTEGER,
READONLY CHARACTER(1) CHECK (READONLY IN ("Y", "N")),
CONSTRAINT OTDEL_ACCESS1 FOREIGN KEY (USER_ID) REFERENCES USER_LIST (USER_ID) ON DELETE CASCADE,
CONSTRAINT OTDEL_ACCESS2 FOREIGN KEY (OTDEL_ID) REFERENCES OTDEL_LIST(ID) ON DELETE CASCADE);

CREATE VIEW VIEW1 AS
SELECT T1.*, AC.READONLY
FROM TABLE1 T1
INNER JOIN OTDEL_ACCESS AC ON (T1.OTDEL_ID = AC.OTDEL_ID)
WHERE AC.USER_ID = USER;

GRANT SELECT ON VIEW1 TO USER MASHA;

CREATE VIEW VIEW1_E AS
SELECT T1.*
FROM TABLE1 T1
WHERE T1.OTDEL_ID IN (SELECT Q1.OTDEL_ID
FROM OTDEL_ACCESS Q1
WHERE Q1.USER_ID = USER
AND Q1.READONLY = "N")
WITH LOCAL CHECK OPTION;

GRANT SELECT, UPDATE, DELETE, INSERT ON VIEW1_E TO USER MASHA;


 
dash78   (2003-03-03 10:43) [6]

2 passm
сп
все доходчиво и понятно



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
3-64036
Sherbacov
2003-03-02 14:31
2003.03.20
Сортировка


3-64011
sammy
2003-02-28 17:09
2003.03.20
Помогите собрать базу!


3-63925
Fishka
2003-02-25 16:31
2003.03.20
Триггер - непонятно, для чего он.


6-64266
Vzlom
2003-02-01 12:38
2003.03.20
как добавить в IExplorer свою кнопку


14-64369
Delph
2003-03-05 15:20
2003.03.20
Исходники TextDataSet.pas





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский