Форум: "Базы";
Текущий архив: 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