Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

как дать Grant user-u на оперции в конкретной чужой схеме

748 views
Skip to first unread message

Pavel

unread,
Sep 17, 2001, 10:30:38 AM9/17/01
to
Привет Всем!

Такой вопросик:
есть user A, user B, user TT

как дать разрешение A и В на
любые действия в схеме user-a ТТ,
но при этом что-бы A ничего не видел в B,
и наоборот, что-бы B ничего не видел в A

Павел
--
Отправлено через сервер Talk.Ru - http://www.talk.ru

Dmitry Kulikov

unread,
Sep 18, 2001, 3:06:25 AM9/18/01
to
"Pavel" <uni...@aria.mldnet.com> wrote in message
news:9o51f4$dli$1...@host.talk.ru...

> Такой вопросик:
> есть user A, user B, user TT
>
> как дать разрешение A и В на
> любые действия в схеме user-a ТТ,
> но при этом что-бы A ничего не видел в B,
> и наоборот, что-бы B ничего не видел в A

Явно или через роль дать пользователям A и B права на необходимые объекты в
схеме TT. Т.е. выдать кучу грантов.
Ты, небось, хотел через системные привилегии вопрос решить? Что-то вроде
GRANT SELECT ALL TABLES и иже с ним? Не выйдет! Самое верное - создать
специальную роль, коей назначить все объектные гранты на TT, и эту роль
назначать и существующим, и будущим пользователям.

Успехов!
Дмитрий Куликов

Pavel

unread,
Sep 18, 2001, 7:29:10 AM9/18/01
to
Dmitry Kulikov <daku...@mail.ru> пишет:


DK> "Pavel" <uni...@aria.mldnet.com> wrote in message
DK> news:9o51f4$dli$1...@host.talk.ru...
DK>> Такой вопросик:
DK>> есть user A, user B, user TT
DK>>
DK>> как дать разрешение A и В на
DK>> любые действия в схеме user-a ТТ,
DK>> но при этом что-бы A ничего не видел в B,
DK>> и наоборот, что-бы B ничего не видел в A

DK> Явно или через роль дать пользователям A и B
DK> права на необходимые объекты в
DK> схеме TT. Т.е. выдать кучу грантов.
DK> Ты, небось, хотел через системные привилегии
DK> вопрос решить? Что-то вроде
DK> GRANT SELECT ALL TABLES и иже с ним? Не выйдет!
DK> Самое верное - создать
DK> специальную роль, коей назначить все объектные
DK> гранты на TT, и эту роль
DK> назначать и существующим, и будущим
DK> пользователям.


насчет уже существующих объектов согласен.

А можно ли так дать привелегии, чтобы и A и B
могли создавать(!) объекты в TT (DDL и DML), но немогли
ни DML ни DDL в схемах друг-друга (А в В и В в А)?

Павел

Dmitry Kulikov

unread,
Sep 18, 2001, 9:08:32 AM9/18/01
to
> насчет уже существующих объектов согласен.
>
> А можно ли так дать привелегии, чтобы и A и B
> могли создавать(!) объекты в TT (DDL и DML), но немогли
> ни DML ни DDL в схемах друг-друга (А в В и В в А)?

Я так понимаю, что DML оперирует с уже существующими объектами,
следовательно - можно. Это те же самые привилегии, о которых речь велась
выше.
А вот насчёт DDL - нельзя. Так как для создания объектов в чужих схемах
нужны системные привилегии типа CREATE ANY TABLE, и ограничить разрешённые
схемы в этом случае будет невозможно. (Я не рассматриваю триггера на
создание объектов, появившиеся в 8i - может, они спасут отцов русской
демократии? :))

Удачи!
Дмитрий Куликов

Pavel

unread,
Sep 18, 2001, 10:01:21 AM9/18/01
to
Dmitry Kulikov <daku...@mail.ru> пишет:
DK>> насчет уже существующих объектов согласен.
DK>>
DK>> А можно ли так дать привелегии, чтобы и A и B
DK>> могли создавать(!) объекты в TT (DDL и DML), но
DK> немогли
DK>> ни DML ни DDL в схемах друг-друга (А в В и В в
DK> А)?

DK> Я так понимаю, что DML оперирует с уже
DK> существующими объектами,
DK> следовательно - можно. Это те же самые
DK> привилегии, о которых речь велась
DK> выше.
DK> А вот насчёт DDL - нельзя. Так как для создания
DK> объектов в чужих схемах
DK> нужны системные привилегии типа CREATE ANY TABLE,
DK> и ограничить разрешённые
DK> схемы в этом случае будет невозможно.

все понял, спасибо

DK> (Я не
DK> рассматриваю триггера на
DK> создание объектов, появившиеся в 8i - может, они
DK> спасут отцов русской
DK> демократии? :))

Очень может быть.
Не подскажите-ли как их навешивать
(я рассматривал такой вариант но думал что
тригеров на DDl операции нет)

Павел

Pavel Luzanov

unread,
Sep 18, 2001, 11:25:29 AM9/18/01
to

Pavel <uni...@aria.mldnet.com> сообщил в новостях следующее:9o7b6s$mjd$1...@host.talk.ru...
...

> А можно ли так дать привелегии, чтобы и A и B
> могли создавать(!) объекты в TT (DDL и DML), но немогли
> ни DML ни DDL в схемах друг-друга (А в В и В в А)?


В схеме TT создайте процедуру типа:

CREATE OR REPLACE PROCEDURE exec_sql
(sql_in IN VARCHAR2)
IS
BEGIN
EXECUTE IMMEDIATE sql_in;
END exec_sql;

Если Oracle меньше чем 8i, то тоже самое через DBMS_SQL.

Выдайте пользователю TT прямые (не через роль) привилегии CREATE TABLE, ...
на те команды, которые хотите выполнять.

Выдайте пользователям A и B право на выполнение EXEC_SQL.
Теперь можете от имени A и/или B:

SQL> exec tt.exec_sql('create table z (n number)');

PL/SQL procedure successfully completed.

SQL> exec tt.exec_sql('drop table z');

PL/SQL procedure successfully completed.

-----
Павел Лузанов

Pavel

unread,
Sep 19, 2001, 2:31:03 AM9/19/01
to
Pavel Luzanov <pavel_...@mail.ru> пишет:

PL> В схеме TT создайте процедуру типа:

PL> CREATE OR REPLACE PROCEDURE exec_sql
PL> (sql_in IN VARCHAR2)
PL> IS
PL> BEGIN
PL> EXECUTE IMMEDIATE sql_in;
PL> END exec_sql;

PL> Если Oracle меньше чем 8i, то тоже самое через
PL> DBMS_SQL.

PL> Выдайте пользователю TT прямые (не через роль)
PL> привилегии CREATE TABLE, ...
PL> на те команды, которые хотите выполнять.

PL> Выдайте пользователям A и B право на выполнение
PL> EXEC_SQL.
PL> Теперь можете от имени A и/или B:

PL> SQL> exec tt.exec_sql('create table z (n
PL> number)');

PL> PL/SQL procedure successfully completed.

PL> SQL> exec tt.exec_sql('drop table z');

PL> PL/SQL procedure successfully completed.

спасибо.
Именно на этот вариант мы уже набрели.
Павел

0 new messages