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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
14-10395
Igorek
2003-07-14 12:27
2003.08.04
Мы наконец-то открыли сайт - www.siriussoft.com


8-10313
reticon
2003-04-14 12:27
2003.08.04
Game SDK


1-10166
Прохожий
2003-07-22 10:33
2003.08.04
Исключение неправельных адресов E-Mail


1-10244
DimaB
2003-07-21 05:34
2003.08.04
Контрольная сумма


4-10512
xn0bys
2003-05-28 13:32
2003.08.04
DialogBox в плугине к WinAmp 2.9





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский