Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.04;
Скачать: CL | DM;

Вниз

Security INTERBASE   Найти похожие ветки 

 
axelrodm   (2003-07-13 11:19) [0]

Уважаемые знатоки INTERBASE!

Как создать среду для LOCAL INTERBASE, чтобы
USER выполнял все действия только через хранимые процедуры,
НЕ ИМЕЯ доступа к таблицам!
Пытался решать задачу так.
Строил процедуру с правами на Таблицу и USER-Mikl с правами на выполнение этой процедуры и без прав на таблицу. В результате при запуске процедуры получаю сообщение, что USER не имеет доступа к ТАБЛИЦЕ!!!
Тексты привожу ниже.


CONNECT "D:\timetable\schooltimetable.gdb" USER "SYSDBA" PASSWORD "masterkey";
SET TERM ^ ;
/* CLIENT */
CREATE PROCEDURE REGISTR_CLIENT (
C_NAME VARCHAR(80),
C_ADDRESS VARCHAR(80),
C_PASSWORD VARCHAR(32))
RETURNS (
C_ID INTEGER,
C_NICKNAME VARCHAR(250))
AS
begin
/* Procedure Text */
insert into client(CLIENT_NAME,CLIENT_ADDRESS,CLIENT_PASSWORD)
values(:c_name,:c_address,:c_password);

select CLIENT_ID, CLIENT_NICKNAME from client where
CLIENT_NAME=:c_name and
CLIENT_ADDRESS=:c_address and
CLIENT_PASSWORD=:c_password
into :c_id, :c_nickname;
suspend;
end
^
GRANT ALL on CLIENT to registr_client;
GRANT EXECUTE ON PROCEDURE registr_client to mikl;


 
Rad ©   (2003-07-13 11:27) [1]

GRANT INSERT, SELECT ON client TO PROCEDURE Registr_Client;
RTFM, в общем ;-))


 
Rad ©   (2003-07-13 11:33) [2]

GRANT ALL on CLIENT to registr_client;
дает права пользователю registr_client (и неважно, что он не существует).
P.S. Да, и не подсоединяйся к базе локально ( CONNECT "D:\timetable\schooltimetable.gdb") - на более новых версиях FB это вообще невозможно), потому что несколько одновременных локальных коннектов не могут работать параллельно, а одновременные локальный и удаленный - могут запороть базу.
Пиши, в общем, CONNECT "localhost:D:\timetable\schooltimetable.gdb"


 
axelrodm   (2003-07-13 11:52) [3]

Пожалуйста прокомментируйте подробней ответ


> GRANT ALL on CLIENT to registr_client;
> дает права пользователю registr_client (и неважно, что он
> не существует).


Не понятно как USER mikl может обратиться к USER/procedure registr_client


 
Rad ©   (2003-07-13 11:57) [4]

> Не понятно как USER mikl может обратиться к USER/procedure registr_client
Если есть GRANT EXECUTE ON PROCEDURE registr_client TO mikl, а у процедуры есть GRANT ALL ON client TO PROCEDURE registr_client - то все должно работать.


 
axelrodm   (2003-07-13 12:38) [5]

Перезагрузил сервер.
запустил Скрипт
CONNECT "localhost:D:\timetable\schooltimetable.gdb" USER "SYSDBA" PASSWORD "masterkey";
revoke all on CLIENT from procedure REGISTR_CLIENT;
revoke all on REGISTR_CLIENT from MIKL;
commit;
GRANT ALL on CLIENT to procedure REGISTR_CLIENT;
GRANT EXECUTE ON PROCEDURE REGISTR_CLIENT to MIKL;
commit;
CONNECT "localhost:D:\timetable\schooltimetable.gdb" USER "MIKL" PASSWORD "aaa";
select C_ID, C_NICKNAME from REGISTR_CLIENT("jkhkjh","76575","pppp");

Плучил ответ
This user dos not have privilege to perform this operation on this object. no permition fo references access to table CLIENT
Запустил скрипт на SYSDBA и все прошло!
CONNECT "localhost:D:\timetable\schooltimetable.gdb" USER "SYSDBA" PASSWORD "masterkey";
revoke all on CLIENT from procedure REGISTR_CLIENT;
revoke all on REGISTR_CLIENT from MIKL;
commit;
GRANT ALL on CLIENT to procedure REGISTR_CLIENT;
GRANT EXECUTE ON PROCEDURE REGISTR_CLIENT to MIKL;
commit;
PASSWORD "aaa";
select C_ID, C_NICKNAME from REGISTR_CLIENT("jkhkjh","76575","pppp");


 
axelrodm   (2003-07-13 13:08) [6]


Спасибо всем за участие

Проблема решается представлением MIKL
GRANT references on CLIENT to MIKL;

Иными словами.
GRANT ALL on CLIENT to procedure REGISTR_CLIENT;
GRANT EXECUTE ON PROCEDURE REGISTR_CLIENT to MIKL;
GRANT references on CLIENT to MIKL;


С уважением. Михаил Аксельрод



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

Текущий архив: 2003.08.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
3-10114
Belkova
2003-07-14 18:02
2003.08.04
Запрос без регистра


1-10176
AndreyAs
2003-07-17 15:51
2003.08.04
Rave Reports по-русски


8-10307
R2D2
2003-04-14 17:40
2003.08.04
TBASS 1.8 - последний релиз - как его устанавливать... ни единой


14-10366
konstantinov
2003-07-16 19:16
2003.08.04
PDF файлы


14-10372
Beginner3000
2003-07-16 00:26
2003.08.04
---|Ветка была без названия|---