безопастность sqr. SqlPlus
Скачать 92.15 Kb.
|
SQL*PlusМеханизм защитыС помощью таблицы product_user_profile Владеет пользователь System Команда SQL*Plus SQL PL/SQL После создания базы данных для безопасности SQL*Plus выполнить сценарий Pupbld.sql каталог $ORACLE_HOME/ sql/admin ОТ ПОЛЬЗОВАТЕЛЯ SYSTEM SQL> DESC product_user_profile Name Null? Type ----------------------- -------- ---------------------- PRODUCT NOT NULL VARCHAR2(30) USERID VARCHAR2(30) ATTRIBUTE VARCHAR2(240) SCOPE VARCHAR2(240) NUMERIC_VALUE NUMBER(15,2) CHAR_VALUE VARCHAR2(240) DATE_VALUE DATE LONG_VALUE LONG SQL> ALTER, BEGIN, CONNECT, DECLARE, EXEC, EXECUTE, GRANT, HOST, INSERT, SELECT и UPDATE. как с помощью таблицы product_user_profile лишить пользователя OE возможности удалять, вставлять и обновлять данные в базе. SQL> INSERT INTO product_user_profile VALUES ('SQL*PLUS','OE','INSERT',NULL,NULL,NULL,NULL,NULL); 1 row created. SQL> INSERT INTO product_user_profile VALUES ('SQL*PLUS','OE','DELETE',NULL,NULL,NULL,NULL,NULL); 1 row created. SQL> INSERT INTO VALUES ('SQL*PLUS','OE','UPDATE',NULL,NULL,NULL,NULL,NULL); 1 row created. SQL> COMMIT; Commit complete. SQL> Просмотреть записи, касающиеся пользователя OE, можно с помощью следующего запроса к таблице product_user_profile: SQL> SELECT product, attribute FROM product_user_profile WHERE userid='OE'; PRODUCT ATTRIBUTE -------------------------------------------------------------- SQL*PLUS INSERT SQL*PLUS DELETE SQL*PLUS UPDATE SQL> Если пользователь OE попытается удалить данные из таблицы, это приведет к по- явлению следующей ошибки, даже несмотря на то, что таблица ORDERS принадлежит схеме пользователя OE: SQL> CONNECT oe/oe Connected. SQL> DELETE FROM oe.orders; SP2-0544: invalid command: delete SQL> Предоставить пользователю OE право удалять данные через SQL*Plus можно, удалив соответствующую строку из таблицы product_user_profile: SQL> DELETE FROM product_user_profile WHERE userid='OE' and attribute = 'DELETE'; 1 row deleted. SQL> COMMIT; Commit complete. SQL> Язык DDL DML Команды ALTER BEGIN DECLARE EXECUTE GRANT INSERT SELECT UPDATE HOST для получения доступа к операционной системе и запуска команд операционной системы. Наличие у пользователей возможности выполнять команды операционной системы с помощью HOST является совершенно не нужным, поэтому чтобы лишить этой опасной привилегии, например, пользователя salapati, в таблице product_user_profile потребуется сделать вот что: SQL> INSERT INTO product_user_profile (product,userid,attribute) VALUES ('SQL*Plus','salapati','HOST'); 1 row created. SQL Не забывайте, что у пользователей будут сохраняться любые предоставляемые им привилегии, даже если они не смогут ими пользоваться в сеансе SQL*Plus. Это означает, что можно легко предоставлять владельцам приложений привилегии на доступ к объектам данных во время использования пакетов и процедур, которые хранятся и выполняются в базе данных, и при этом одновременно лишать их этих же привилегий во время работы в сеансе SQL*Plus команды set role предоставлять привилегии и лишать их лучше не напрямую, а за счет применения ролей. В подходе с ролями, однако, кроется потенциальная угроза безопасности, поскольку любой пользователь может изменять свою роль, выдав в SQL*Plus команду set role. С помощью таблицы product_user_profile эту опасную лазейку в системе безопас- ности легко устранить, лишив любого пользователя возможности применять команду set role. RESTRICT для отключения команд помимо таблицы product_user_profile, для лишения пользователей возможности выдавать определенные команды операционной системы можно также применять команду RESTRICT. В целом эффект получается такой же, как и при использовании таблицы product_user_profile, за исключением того, что RESTRICT отключает команды даже там, где нет никаких подключений к серверу. Команду RESTRICT можно применять на трех уровнях — 1, 2 или 3. Ниже приведен пример применения команды RESTRICT на уровне 1: $ sqlplus -RESTRICT 1 Команда Уровень 1 Уровень 2 Уровень 3 EDIT Отключена Отключена Отключена GET Отключена HOST Отключена Отключена Отключена SAVE Отключена Отключена SPOOL Отключена Отключена START Отключена STORE Отключена Отключена В случае выполнения команды RESTRICT -3 Oracle не считывает сценарий login.sql. Вместо этого читается сценарий glogin.sql, и любые из ограниченных команд, которые используются, перестают работать SQL*Plus |