Помощь в написании студенческих работ
Антистрессовый сервис

Предоставление и отмена привилегий

РефератПомощь в написанииУзнать стоимостьмоей работы

Привилегии объектного уровня insert и update могут быть распространены на уровень столбцов, чтобы управлять тем, какие именно столбцы могут быть вставлены, а какие — изменены; однако пользователь затем сможет изменять эти столбцы в любых строках. Выдача операторов grand для всех пользователей всех таблиц при большом числе пользователей и таблиц может оказаться очень трудоемкой. Для упрощения… Читать ещё >

Предоставление и отмена привилегий (реферат, курсовая, диплом, контрольная)

Оператор GRANT может использоваться для предоставления другому пользователю Oracle права вставлять, изменять и удалять строки. Эта привилегия может быть предоставлена каждому (PUBLIC).

В следующем примере показано предоставление пользователю TAEJEN базы данных Oracle привилегий объектного уровня SELECT и UPDATE на таблицу delegates. Затем пользователь Oracle пытается выполнить на этой таблице оператор SELECT.

SQL> GRANT SELECT, UPDATE ON delegates TO taejen;

Grant succeeded.

SQL> CONNECT taejen/taejen

Connected.

SQL> SELECT * FROM delegates;

SELECT * FROM delegates *

ERROR at line 1:

ORA-942: table or view does not exist

SQL>

В предыдущем примере показано, что даже если пользователю taejen базы данных ORACLE были даны привилегии на таблицу delegates, он не может обратиться к данным, просто указав имя таблицы. При обнаружении имени таблицы Oracle ищет это имя в учетной записи Oracle. Если эта таблица не существует в учетной записи этого пользователя, выполняется проверка всех представлений или приватных синонимов с именем этого пользователя. Если имя объекта все еще не найдено в учетной записи этого пользователя Oracle, выполняется окончательная проверка, чтобы увидеть, существует ли общедоступный синоним с упомянутым именем. И наконец, если общедоступный синоним не найден, Oracle возвращает сообщение об ошибке «table or view does not exist», как показано ниже.

Если у вас есть привилегии на таблицы другого пользователя и вы хотите обратиться к такой таблице, то необходимо указать, кто является владельцем этой таблицы, как показано в следующем примере:

SQL> SELECT * FROM ascend. delegates;

P DELEGATE ID P LASTNAME D FIRSTNAME ORGANISATION D D DATE LA.

  • 1 Andxeas Connirae DSS F
  • 2 Brooks Michael US Army M
  • 3 Grinder John Sequent M
  • 4 Connor Joseph Bellcore M
  • 5 Bobbins Anthony Compaq M
  • 6 Kaur Kashmir Titanium F
  • 7 Kaur Benisha Titanium F
  • 8 Singh Taejen Titanium M
  • 9 Samra Karam
  • 10 Samra Kailan
  • 11 Singh Barman
  • 12 Kaur Amriss
  • 12 rows selected.

SQL>

Перед именем таблицы в предыдущем примере в качестве префикса было указано имя пользователя Oracle, владеющего этой таблицей. Это решение не является идеальным, поскольку между стадией разработки и временем передачи кода в промышленную эксплуатацию владелец таблицы может измениться. Обойти это ограничение можно, создав синоним, чтобы предоставить для таблицы псевдоним, что позволит избежать необходимости применять префикс имени владельца перед именем таблицы.

В следующем примере показано, как для таблицы создается синоним и используется во всех последующих операторах, ссылающихся на эту таблицу.

SQL> CREATE SYNONYM delegates FOR ascend. delegates;

Synonym created.

SQL> SELECT * FROM delegates;

D DELEGATE ID D LASTNAME D FIRSTNAME ORGANISATION D D DATE LA.

  • 1 Andxeas Connirae DSS F
  • 2 Brooks Michael US Army M
  • 3 Grinder John Sequent M
  • 4 Connor Joseph Bellcore M
  • 5 Bobbins Anthony Compaq M
  • 6 Kaur Kashmir Titanium F
  • 7 Kaur Benisha Titanium F
  • 8 Singh Taejen Titanium M
  • 9 Samra Karam
  • 10 Samra Kailan
  • 11 Singh Barman
  • 12 Kaur Amriss
  • 12 rows selected.

SQL>

При использовании синонима можно не указывать владельца. Если в программу был включен показанный выше оператор, можно удалить синоним и вновь создать его, чтобы он указывал на таблицу, принадлежащую другому пользователю Oracle; без изменения прикладного кода можно было бы его заставить работать на другом наборе данных.

Администратор базы данных может создать общедоступные синонимы, которые могут быть использованы всеми пользователями базы данных Oracle.

В следующем примере кода показано, как пользователь TAEJEN пытается изменять и удалять строки из таблицы (не забудьте.

что ему были даны привилегии только выбирать и модифицировать).

SQL> UPDATE delegates.

SET djirstname = 'Fred*.

WHERE d_delegate_id = 1;

1 row updated.

SQL> DELETE FROM delegates WHERE d_delegate_id = 1;

DELETE FROM delegates.

*.

ERROR at line 1:

ORA-1 031: insufficient privileges.

SQL>

Оператор update работает, но оператор delete не выполняется. Если пользователь TAEJEN желает удалять строки из таблицы, владелец должен дать этому пользователю привилегию объектного уровня DELETE.

Если пользователю будет предоставлена привилегия, но затем будет принято решение, что не следует больше позволять пользователю вносить изменения в таблицы, для удаления привилегии можно использовать команду revoke.

В следующем примере показано, как у пользователя Oracle владельцем таблицы была изъята привилегия UPDATE.

SQL> REVOKE UPDATE on delegates FROM taejen;

Revoke succeeded.

SQL>

Пользователь TAEJEN базы данных Oracle пока что имеет другие привилегии, но уже не может изменять какие-либо строки.

СОВЕТ.

Для проверки того, какие привилегии объектного уровня были предоставлены учетной записи пользователя Oracle используются представления словаря данных ALL TAB PRIVS и ALL COL PRIVS.

Привилегии объектного уровня, рассмотренные в последнем разделе, позволяют лицу, которому предоставлены привилегии, просматривать или изменять любой столбец в любой строке таблицы.

Привилегии объектного уровня insert и update могут быть распространены на уровень столбцов, чтобы управлять тем, какие именно столбцы могут быть вставлены, а какие — изменены; однако пользователь затем сможет изменять эти столбцы в любых строках.

При необходимости управлять тем, какие строки и столбцы могут быть просмотрены или изменены, существует возможность использовать на этих данных представление. В таблице создается представление и все изменения выполняются через это представление.

Используя опцию with check в конце оператора create view изменения через это представление не могут быть внесены, если строки этих изменений не будут видимы посредством представлений.

СОВЕТ.

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

Роли

Выдача операторов grand для всех пользователей всех таблиц при большом числе пользователей и таблиц может оказаться очень трудоемкой. Для упрощения работы администратора базы данных Oracle представляет такое средство, как роли.

Это средство позволяет создавать именованные группы привилегий, чтобы можно было легче выполнять предоставление и отмену привилегий .

Показать весь текст
Заполнить форму текущей работой