Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Администрирование баз данных /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Общие проблемы безопасности и система привилегий доступа MySQL - Программирование от RIN.RU
Общие проблемы безопасности и система привилегий доступа MySQL



Опции запуска mysqld, относящиеся к безопасности


К безопасности имеют отношение следующие опции mysqld:


--local-infile[=(0|1)]

При установке опции --local-infile=0 теряется возможность выполнять команду LOAD DATA LOCAL INFILE.

--safe-show-database

Если установлена эта опция, команда SHOW DATABASES возвращает только те базы данных, для которых пользователь имеет какую-либо привилегию. Начиная с версии 4.0.2 эта опция отменена и не служит ни для чего (она включена по умолчанию), т.к. сейчас у нас имеется привилегия SHOW DATABASES. Обратитесь к разделу Синтаксис команд GRANT и REVOKE.

--safe-user-create

При установке этой опции пользователь не может создавать новых пользователей с помощью команды GRANT, если у него отсутствует привилегия INSERT для таблицы mysql.user. Чтобы предоставить пользователю доступ именно для создания новых пользователей с теми привилегиями, которые он имеет право предоставлять, для этого пользователя следует установить следующую привилегию:


mysql> GRANT INSERT(user) ON mysql.user TO "user""hostname";


Задание такой привилегии гарантирует, что этот пользователь не сможет непосредственно вносить изменения ни в одном из столбцов привилегий, а для
предоставления привилегий другим пользователям должен будет использовать команду GRANT.

--skip-grant-tables

Установка этой опции запрещает серверу вообще использовать систему привилегий. Это открывает кому бы то ни было полный доступ ко всем базам
данных! (После запуска сервера можно заставить его снова использовать таблицы привилегий с помощью команды mysqladmin flush-privileges или mysqladmin reload.)

--skip-name-resolve

При установке данной опции имена хостов не разрешены. Все значения в столбцах Host таблиц привилегий должны быть либо IP-адресами, либо localhost.

--skip-networking

Не разрешайте осуществлять подсоединений по протоколу TCP/IP через сеть (данная опция запрещает такие подсоединения). Все подсоединения к mysqld должны осуществляться посредством сокетов Unix. Эта опция непригодна для систем, в которых используются MIT-потоки, так как MIT-потоки не поддерживают сокеты Unix.

--skip-show-database

Разрешайте выполнение команды SHOW DATABASES только в том случае, если пользователь имеет привилегию SHOW DATABASES. Начиная с версии 4.0.2 в этой опции больше нет необходимости, т.к. теперь доступ может предоставляться избирательно с помощью привилегии SHOW DATABASES.




Вопросы безопасности, относящиеся к команде LOAD DATA LOCAL


Чтобы решить проблемы безопасности, которые могут возникнуть при использовании команды LOAD DATA LOCAL,в MySQL 3.23.49 и MySQL 4.0.2 были добавлены новые опции.


При поддержке этой команды могут возникнуть две проблемы:


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


Вторая: в веб-среде, в которой подсоединение клиентов осуществляется с веб-сервера, пользователь может использовать команду LOAD DATA LOCAL для чтения любых файлов, к которым процесс веб-сервера имеет доступ для чтения (если предположить, что пользователь может выполнять на сервере SQL любые команды).


Эти проблемы решаются с помощью двух следующих исправлений:


Если вы конфигурируете MySQL без опции --enable-local-infile, то команда LOAD DATA LOCAL будет запрещена для всех клиентов, если, конечно, они не будут вызывать mysql_options (... MYSQL_OPT_LOCAL_INFILE, 0). Обратитесь к разделу mysql_options().


В случае клиента mysql, LOAD DATA LOCAL может быть разблокирована заданием опции --local-infile[=1] или заблокирована с помощью опции --local-infile=0.


По умолчанию все MySQL-клиенты и библиотеки компилируются с опцией --enable-local-infile для обеспечения совместимости с MySQL 3.23.48 и более старыми версиями.


Блокировку всех команд LOAD DATA LOCAL на MySQL-сервере можно осуществить путем запуска mysqld с опцией --local-infile=0.


В случае, если команда LOAD DATA LOCAL INFILE заблокирована на сервере или клиенте, вы получите следующее сообщение об ошибке (1148):


The used command is not allowed with this MySQL version




Функции, выполняемые системой привилегий


Основной функцией системы привилегий MySQL является аутентификация пользователя, подключающегося с указанного хоста, и ассоциирование его с привилегиями базы данных, такими как SELECT, INSERT, UPDATE и DELETE.


К дополнительным функциональным возможностям системы привилегий относятся следующие: возможность обслуживания анонимного пользователя и предоставление привилегий для таких специфических для MySQL функций, как LOAD DATA INFILE и функции администрирования.


<<<  НазадВперед  >>>
 1  2  3  4  5  6  7  8 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Администрирование баз данных

Общие проблемы безопасности и система привилегий доступа MySQL

Управление учетными записями пользователей MySQL

Предотвращение катастроф и восстановление

Справочник по языку администрирования баз данных

Локализация MySQL и использование национальных алфавитов

Серверные сценарии и утилиты MySQL

Клиентские сценарии и утилиты MySQL

Файлы журналов MySQL

Репликация в MySQL

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь