Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как забрать права у юзера на редактирование данных в его же таблице  [new]
Господин полицейский, заберите п
Guest
Собственно сабж
Под кме нужно выполнить скриптик, чтобы отобрать права? И, возможно ли?
Спасибо
revoke delete, update, insert on user1.table1 from table1
15 мар 16, 14:59    [18933720]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Господин полицейский, заберите п
И, возможно ли?

Нет. Хозяин есть хозяин.
15 мар 16, 15:01    [18933727]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
stax..
Guest
Господин полицейский, заберите п,

1) триггер
2) rls

....
stax
15 мар 16, 15:04    [18933744]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
alter table read only
Guest
Господин полицейский, заберите п,

сменить пароль и не сообщать.
15 мар 16, 15:06    [18933756]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
Nobody1111
Guest
написать триггер на insert,update,delete который будет эксепшн генерить при этих действиях. На уровне revoke нельзя.
15 мар 16, 15:23    [18933873]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
Сергей Арсеньев
Member

Откуда:
Сообщений: 4118
Господин полицейский, заберите п
Собственно сабж

Перенеси таблицу в read-only tablespace и будет тебе счастье. Но не долго.
15 мар 16, 15:53    [18934049]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
Nobody1111
Guest
Сергей Арсеньев
Господин полицейский, заберите п
Собственно сабж

Перенеси таблицу в read-only tablespace и будет тебе счастье. Но не долго.

Ну или alter table read only. Аналогично недолго, если пользователь может на уровне разработчика работать.

но это все не только для него, это для всех
15 мар 16, 16:12    [18934173]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Сергей Арсеньев
Перенеси таблицу в read-only tablespace и будет тебе счастье. Но не долго.

При этом не забываем, что этот самый пользователь собственную таблицу вполне сможет грохнуть :)
15 мар 16, 16:33    [18934317]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Да и не только он
15 мар 16, 16:41    [18934357]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
В поисках философских камней
Guest
Пусть у него будет вью в своей схеме и грант на селект таблицы которой владеет мастер-юзер.
И будет счастье
15 мар 16, 17:01    [18934441]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
dbi
Member

Откуда: http://dbi.ru
Сообщений: 111
Господин полицейский, заберите п,

Отобрать можно только что дали. Скорее всего вам необходимо решить логику размещения данных вначале, а потом логику доступа к ним.
16 мар 16, 17:30    [18939569]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
12+
alter table scott.emp read only;

для совсем пугливых, разумеется
16 мар 16, 17:56    [18939773]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
для детей
Guest
orawish
12+
и что это значит?
16 мар 16, 18:47    [18940085]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
для детей
orawish
12+
и что это значит?

версия oracle 12c и выше
16 мар 16, 19:09    [18940205]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
одиннадцатиметровый
Guest
orawish
для детей
пропущено...
и что это значит?

версия oracle 12c и выше
а в Г, которое 11, что не так с этой командой?
16 мар 16, 19:37    [18940278]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
граждане, а это интересно, можно ли таблицу "переложить" из одной схемы в другую без создания новой таблицы.
(по аналогии с подменой partition)
ведь в принципе что "физически" мешает это сделать?
16 мар 16, 23:32    [18940914]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
orawish
alter table scott.emp read only;
А что, владелец не сможет вернуть в READ WRITE?
Тогда это не сильно отличается от триггера
17 мар 16, 02:12    [18941113]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
Вадиман
Member

Откуда: Владивосток
Сообщений: 1072
Вячеслав Любомудров
orawish
alter table scott.emp read only;
А что, владелец не сможет вернуть в READ WRITE?
Тогда это не сильно отличается от триггера

Вячеслав, ты подсказывал мне про ALTER SYSTEM для отключения срабатывания триггеров не так давно.
Можно применить мой капкан :)
Обеспечить отсутствие гранта ALTER SYSTEM и два ddl триггера - один запрещает alter над нужной таблицей, а второй ddl-триггер защищает первый ddl-триггер.
Схема, по-моему, железная.
17 мар 16, 04:20    [18941132]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
Вадиман
Member

Откуда: Владивосток
Сообщений: 1072
Маленькое дополнение - первый ddl-триггер также защищает второй :)
На примере блокировки изменения пароля у пользователя

CREATE OR REPLACE TRIGGER disable_change_pwd1
  BEFORE ALTER OR DROP OR CREATE
  ON DATABASE
DECLARE
  n   NUMBER;
BEGIN
  IF SYS_CONTEXT('USERENV', 'OS_USER') = 'super_user_who_is_allowed_to_do_anything' THEN
    RETURN;
  END IF;

  IF     ora_dict_obj_name IN ('SCHEMANAME1', 'SCHEMANAME2')
     AND ora_dict_obj_type = 'USER'
     AND ora_sysevent IN ('ALTER', 'DROP') THEN
    raise_application_error (-20001, 'Не-а');
  END IF;

  -- проверим, не пытаются ли что-то сделать со вторым триггером
  IF     ora_dict_obj_name = 'DISABLE_CHANGE_PWD2'
     AND ora_dict_obj_type = 'TRIGGER'
     AND ora_sysevent IN ('ALTER', 'DROP', 'CREATE') THEN
    IF ora_sysevent = 'CREATE' THEN
      -- маленький workaround для случая, когда второго триггера еще нет (надо ж позволить создать его впервые)
      SELECT COUNT (*)
      INTO   n
      FROM   all_objects
      WHERE      object_name = ora_dict_obj_name
             AND owner = ora_dict_obj_owner
             AND object_type = ora_dict_obj_type;
    ELSE
      n   := 1;
    END IF;

    IF n > 0 THEN
      raise_application_error (-20000, 'Пожалуюсь маме!');
    END IF;
  END IF;
END;
/

CREATE OR REPLACE TRIGGER disable_change_pwd2
  BEFORE ALTER OR DROP OR CREATE
  ON DATABASE
BEGIN
  IF SYS_CONTEXT('USERENV', 'OS_USER') = 'super_user_who_is_allowed_to_do_anything' THEN
    RETURN;
  END IF;

  IF     ora_dict_obj_name = 'DISABLE_CHANGE_PWD1'
     AND ora_dict_obj_type = 'TRIGGER'
     AND ora_sysevent IN ('ALTER', 'DROP', 'CREATE') THEN
    raise_application_error (-20000, 'Пожалуюсь маме!');
  END IF;
END;
/
17 мар 16, 04:26    [18941134]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Да проще, как уже сказали, RLS юзать, на мой взгляд
17 мар 16, 05:03    [18941142]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
одиннадцатиметровый
orawish
пропущено...

версия oracle 12c и выше
а в Г, которое 11, что не так с этой командой?

а всё так (однако, склероз )

защитой же от попытки вернуть read write могут быть даже и просто слова, про залогируем и депримируем
,учитывая что проблем тут нет, а вариантов - навалом
17 мар 16, 10:37    [18941708]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Вадиман
Вячеслав Любомудров
пропущено...
А что, владелец не сможет вернуть в READ WRITE?
Тогда это не сильно отличается от триггера

Вячеслав, ты подсказывал мне про ALTER SYSTEM для отключения срабатывания триггеров не так давно.
Можно применить мой капкан :)
Обеспечить отсутствие гранта ALTER SYSTEM и два ddl триггера - один запрещает alter над нужной таблицей, а второй ddl-триггер защищает первый ddl-триггер.
Схема, по-моему, железная.

а как насчёт rename ~пару раз?
17 мар 16, 10:54    [18941809]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
Вадиман
Member

Откуда: Владивосток
Сообщений: 1072
orawish
Вадиман
пропущено...

Вячеслав, ты подсказывал мне про ALTER SYSTEM для отключения срабатывания триггеров не так давно.
Можно применить мой капкан :)
Обеспечить отсутствие гранта ALTER SYSTEM и два ddl триггера - один запрещает alter над нужной таблицей, а второй ddl-триггер защищает первый ddl-триггер.
Схема, по-моему, железная.

а как насчёт rename ~пару раз?

Я для примера привел триггеры для запрета изменения пароля у пользователей.
Неужели сложно адаптировать под таблицы, добавив в список анализируемых операций RENAME...
17 мар 16, 11:18    [18941971]     Ответить | Цитировать Сообщить модератору
 Re: Как забрать права у юзера на редактирование данных в его же таблице  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Вадиман
orawish
пропущено...

а как насчёт rename ~пару раз?

Я для примера привел триггеры для запрета изменения пароля у пользователей.
Неужели сложно адаптировать под таблицы, добавив в список анализируемых операций RENAME...

ну, про сложно ли.. пусть ТС думает ,лично мне - оно не нужно

в копилку танцев можно добавить матвью на commit с проверкой заведомо невыполнимого (при изменении данных) критерия
-например проверять соответствие 1:1 этой таблицы и её копии в некой другой - схеме

а почему я про редонли?
1) недорого
2) в случае чего - врать сложнее, про ой, блин, изменил и не заметил
;)
17 мар 16, 11:38    [18942111]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить