Главная страница
Навигация по странице:

  • ALTER, BEGIN, CONNECT, DECLARE

  • RESTRICT

  • Команда Уровень 1 Уровень 2 Уровень 3

  • безопастность sqr. SqlPlus


    Скачать 92.15 Kb.
    НазваниеSqlPlus
    Анкорбезопастность sqr
    Дата06.04.2022
    Размер92.15 Kb.
    Формат файлаpptx
    Имя файла000f9b93-ce6b34a5.pptx
    ТипСценарий
    #446678

    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.









    INVALID COMMAND



    как с помощью таблицы 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



    написать администратору сайта