|
Программирование >> Создание клиентов mysql
Задание привилегий 491 Если искомые привилегии в таблицаЬ и host отсутствуют, программа проверяет таблицу table s priv. В ней определены привилегии доступа к отдельным таблицам. В последнюю очередь проверяется таблица column s priv. Если и там ничего не найдено, пользовательский запрос отклоняется. Рис 1. Проверка привилегий Задание привилегий Для задания привилегий предназначены инструкции GRANT и REVOKE (см. главу 13, Инструкции SQL ). Можно также непосредственно манипулировать таблицами привилегий. После внесения изменений следует выполнить инструкцию FLUSH PRIVILEGES . Пароли для таблицы user создаются с помощью функции PASSWORD () . В дистрибутив M3SQL входит сценарий проверки привилегий mysqiaccess , написанный Ивом Карлье (Yves Carlier). Его синтаксис бьш описан в главе 14, Утилиты командной строки . Данный сценарий поможет вам понять, какими возможностями обладает тот или иной пользователь. Он также выдаст предупреждение в случае обнаружения опасной конфигурации, например когда любой пользователь может зарегистрироваться под именем root без ввода пароля. В листинге 27.2 показаны типичные результаты работы этого сценария. Access-rights for USER leon, from HOST localhost, to DB freetrade NOTE: A password is required for user leon The following rules are used: db : No matching rule host : Not processed: host-field is not empty indb-table. user : localhost,leon,2b62070b42bbaffa,N,N,N,N, N,N,N,N,N,N,N,N,N,N Access-rights for USER leon, from HOST localhost, to DB test NOTE: BEWARE: A password is required for user leon Any user with the appropriate permissions has access to your DB! Check your users ! The following rules are used: db : %, test, , Y, Y, У, Y, Y, Y, N, Y, Y, Y host : Not processed: host-field is not empty in db-table. user : localhost,leon,2b62070b42bbaffa,N,N,N,N, N,N,N,N,N,N,N,N,N,N Access-rights for USER leon, from HOST localhost +-----------------+---+ +-----I Select priv t Insert priv t Update priv ( Delete priv I Create priv ( Drop priv i Reload priv +---.----------- to DB NEW -+--- Shutdown priv Process priv File priv Grant priv References priv Index priv Alter priv NOTE: A password is for user The following rules are used: db host user -+ :-( No matching rule Not processed: host-field is not empty in db-table. localhost,leon,2b62070b42bbaffa,N,N,N,N, N,N,N,N,N,N,N,N,N,N Проверить существующие привилегии позволяет также инструкция SHOW GRANTS . Она возврашдет результаты в виде инструкций GRANT, которые бьши вьшолнены при задании привилегий указанного пользователя (листинг 27.3). Такие результаты проще понять, чем таблице! собозначениям Yи N. Обеспечение безопасности 493 mysql> SHOW GRANTS FOR leonSlocalhost; +----------------------------- ------------------;------+ I Grants for leon@localhost I +------------------------------------------------------+ I GRANT SELECT ON mysql.* TO leon@localhost I GRANT SELECT ON coremysql.* TO leon@localhost I I GRANT ALL PRIVILEGES ON leon.* TO leon0localhost +------------------------------------------------------+ 3 rows in set (0.00 sec) Лучший принцип управления привилегиями - свести их к минимуму. Позволяйте пользователям выполнять только те действия, которые от них ожидаются. Например, если есть группа Web-приложений, обращающихся к серверу MySQL, создайте для каждого приложения отдельную пользовательскую учетную запись и предоставьте этому пользователю право манипулировать таблицами только одной базы данных. Не разрешайте пользователю менять определения таблиц или создавать индексы, если только не предполагается выполнять эти действия регулярно. Таким образом, ошибка в приложении, открывающая пользователям возможность вводить произвольные запросы, не даст им разрушить другие базы данных. Большинству пользователей не нужны глобальные привилегии. Наличие глобальной привилегии Select позволит им просматривать содержимое всех баз данных, в том числе mysql, где хранятся описания привилегий и пароли. Привилегия Process дает пользователю возможность следить за чужими запросами, включая те, в которых задаются пароли. Короче говоря, глобальные привилегии предназначены для администраторов баз данных. Ограничьте количество узлов, от которых могут поступать запросы. Не разрешайте пользователям регистрироваться на сервере с произвольного компьютера. Даже если пользователи подключаются к системе посредством коммутируемых каналов связи, разрешите соединения только от одного провайдера. Иногда имеет смысл допускать подключения только с локального узла. В этом случае пользователи вынуждены будут сначала регистрироваться на компьютере, где установлена база данных, т.е. проходить двойную проверку: при входе в операционную систему и при входе в программу MySQL. Доступ к базе привилегий нужен только администратору. Не позволяйте другим пользователям работать с этой базой данных. Если они смогут прочесть содержимое таблицы user, то смогут зарегистрироваться на сервере от имени любого пользователя, так как увидятвсе пароли. Пароли хранятся в зашифрованном виде, но клиенты MySQL передают серверу именно зашифрованные пароли. Обеспечение безопасности Чтобы обеспечить безопасность сервера баз данных, необходимо тщательно спланировать работу системы. Старайтесь использовать пароли, которые невозможно ни угадать, ни подсмотреть. Избегайте хранения паролей в незашифрованном виде как в самой базе данных, так и записанными где-то на бумажке. Если такая бумажка при-
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |