Каталог статей
Поиск по базе статей  
Статья на тему Интернет » Интересное в сети » Управление доступом к&nb p;базам MySQL

 

Управление доступом к&nb p;базам MySQL

 

 

Система управления базами данных MySQL очень часто применяется для хранения важной информации на веб-сайтах. Если это обычный сайт или форум – в базе могут храниться сообщения пользователей, данные для динамических страниц, данные о посещениях, если это какой-либо интерактивный сервис, то кроме данных про доступ (конфиденциальных), там хранится и другая информация о пользователе и его действиях. Все это приводит к тому, что общая безопасность сайта, вернее всей веб-системы, зависит от того, насколько защищен именно сервер базы данных.

На обычных виртуальных хостингах каждый клиент получает свой логин и пароль, и ему доступна только одна база, в которой он может создавать произвольное количество таблиц. Один и тот же физический сервер БД используют разные клиенты, каждый из которых имеет доступ только до одной определенной базы данных.

загрузка...

 

 

Ситуация, когда у пользователя одна база, за владение которой сражаются и «движок» форума (которому требуется создать сотню и больше таблиц), и скрипты списков рассылки, новостей, поисковый скрипт, а если еще установлена система управления контентом (CMS) или электронный магазин – тогда в этой базе возникает такое огромное количество различных таблиц, порой с очень странными и ничего не обозначающими названиями (хорошо, если два скрипта не используют таблицы с одинаковыми названиями, но разной структурой). В таких случаях очень желательно иметь возможность создать несколько отдельных баз данных, и выделить их для разных приложений (к примеру, одна база для форума, другая для электронного магазина).

в MySQL мощные средства управления пользователямиКроме сложностей с управлением несколькими сотнями таблиц в одной базе, вы столкнетесь с необходимостью ограничивать доступ разных пользователей к таблицам, базам и даже отдельным столбцам конкретной таблицы. Спешим вас успокоить – разработчики СУБД MySQL уже позаботились о подобной ситуации – в MySQL есть очень гибкий и мощный механизм управления и разграничения доступа пользователей к базам и таблицам.

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

  • columns_priv – доступ на уровне столбцов таблицы;
  • db – доступ к отдельным базам данных;
  • host – доступ к базам с конкретных хостов/IP;
  • tables_priv – доступ к отдельным таблицам базы данных;
  • user – глобальные настройки доступа для конкретных пользователей.

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

    Права, определяемые в таблице user, являются глобальными, это значит, что они применяются ко всем базам данных, к которым имеет доступ конкретных пользователь. Также в этой таблице хранятся сами имена пользователей и их пароли. Причем имена пользователей хранятся в виде открытого текста, а пароли зашифрованы функцией PASSWORD(). Сервер MySQL применяет свой метод шифрования вместо системного (если такая функция предоставляется ОС, к примеру, Linux/UNIX).

    Поскольку MySQL предназначена для работы через сеть, то к серверу могут подключаться клиенты с различных хостов. Поэтому в таблице привилегий есть столбец host, в котором можно задать конкретный компьютер, IP или диапазон адресов, с которых определенный пользователь (или все, любые пользователи) могут подключаться, или же им полностью запрещен доступ. К примеру, если ваш тестовый сервер находится в локальной сети, то можно выборочно разрешить доступ к нему с отдельных компьютеров, а для всех остальных полностью заблокировать доступ.

    Если для одного и того же пользователя надо разрешить доступ с различных компьютеров, то в таблице привилегий надо создать две (три или больше – сколько понадобится) записей, определяя в каждой отдельный параметр доступа. К примеру, для доступа пользователя root с компьютеров localhost и 192.168.1.138 надо в таблицу user внести две одинаковые записи, которые различаются только полем host. Хотя можно, конечно, и не делать их одинаковыми – тогда тот же пользователь, но в зависимости от места, откуда он подключился, будет иметь разные привилегии.

    Хосты для подключения можно задавать как по имени, так и по IPЗначение столбца host можно задавать в различных форматах. Это может быть как имя хоста – localhost, так и IP-адрес – 192.168.1.138. При необходимости, можно применять символы подстановки. Они аналогичны тем же. Что применяются в синтаксисе SQL-запросов. Символ «_» означает любой символ, а "%" — любое количество символов. К примеру, для разрешения доступа с любого компьютера, содержащего в имени hostinfo.ru надо прописать %.hostinfo.ru в столбце host. Таким же способом можно задавать и диапазоны IP-адресов. Для задания маски сети доступен также вариант написания через слеш – 192.168.1/255. Для глобального задания доступа можно в столбце host прописать только символ "%" или оставить его пустым, что равнозначно.

    Пароль хранится в зашифрованом видеСледующие поля – user и password, определяют имя и пароль пользователя. Эти поля уже, в отличие от host, различают регистр введенных символов, поэтому пользователь Root и root – это два разных пользователя. Знаки подстановки в этом поле уже не работают – имя пользователя %" означает не «любой пользователь», а именно "пользователь с именем %". Для задания анонимного пользователя надо просто оставить поле пустым, иначе любой символ будет считаться именем пользователя. Так же и в поле password – пароль хранится в зашифрованном виде, знаки подстановки недействительны, а пустое поле означает, что пользователь вовсе не должен указывать пароль, а не то, что пароль может быть произвольным. Напомним, что просто пароль (пусть и зашифрованный) нельзя помещать в поле password, предварительно его надо шифровать функцией PASSWORD("пароль_открытым_текстом"). Например:

    INSERT INTO user SET host="192.168.1.138", user="raiden", password=PASSWORD("my_password");

    Следующим полем является поле базы данных – db. В других таблицах оно также присутствует, поэтому во всех таблицах правила написания имен баз данных должны быть одинаковыми. Разрешается использовать символы подстановки "%" и «_», пустое значение соответствует «все базы». Поле чувствительно к регистру!

    Далее идет целый набор столбцов, разрешающие те или иные действия для пользователя. К примеру, Select_priv, Insert_priv, Update_priv, Delete_priv, Index_priv и Alter_priv стоит установить в «Y» (разрешено) для обычного пользователя, так как такие запросы чаще всего встречаются в обычных приложениях. Остальные возможности для большей безопасности надо отключить для всех пользователей (особенно, если есть учетная запись анонимного пользователя). Поэтому в следующих столбцах — Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv и References_priv надо выставить значение «N»(запрещено), а при необходимости разрешить действия только администратору и максимально ограничить возможности подключения такого пользователя – указать конкретный IP-адрес или имя компьютера, выбрать длинный и сложный для подбора пароль.

    Аналогична таблице user и таблица db, в которой можно задавать отдельные привилегии для конкретных баз данных. Таким образом, можно разрешить пользователям создавать новые таблицы только в своих базах данных и запретить даже простой просмотр чужих баз. Синтаксис всех полей полностью аналогичный таблице user.

    При подключении пользователя сервер MySQL сначала обрабатывает таблицу user (записанные там правила доступа глобальные), а потом, если прав недостаточно или нельзя определить права доступа к конкретной базе – тогда уже поиск продолжается в таблице db. Если же и во второй таблице нет соответствующих привилегий, сервер пробует найти их в таблицах tables_priv и columns_priv. И только когда на основании информации со всех доступных таблиц сервер определяет, что клиенту не разрешено запрошенное действие, он отвергает клиентский запрос.

    Таблица host также аналогична описанным выше, только вместо имен и паролей пользователей для идентификации привилегий служит имя хоста или IP-адрес. На первый взгляд, есть существенное дублирование информации. Ведь таблицы db и host почти равнозначны и содержат одинаковые данные. На самом деле это немного не так. Таблица host недоступна для изменения через операторы SQL GRANT и REVOKE, ее можно только править непосредственно. Когда сервер принимает решение о допуске клиента к базам, он сначала ищет упоминание имени хоста или IP в таблице host. Если там присутствует соответствующая запись, то тогда права из таблиц host и db обьединяються и клиент получает некоторые привилегии. Если же в таблице host нет указаний на счет хоста или IP, то сервер даже не рассматривает дальше таблицу db, так как если клиенту не разрешено подключение с хоста, то тогда бессмысленно искать права на доступ к отдельным базам.

    И, напоследок, давайте остановимся на одном нюансе при определении привилегий. Сервер MySQL, когда ищет и сравнивает привилегии, не сравнивает их напрямую. К примеру, символьное обозначение параметра имеет больший приоритет, чем использование символов подстановки. Пример: если есть две записи — %.hostinfo.ru и admin.hostinfo.ru, то вторая запись имеет больший приоритет. Поэтому если для одного пользователя существуют разные привилегии в зависимости от хоста или других параметров, то будет выбираться первой та запись, где более точно и однозначно указан параметр. Это же касается и IP-адресов.

    Ссылки по теме

    • MySQL AB



    Статья получена: hostinfo.ru
    загрузка...

     

     

  • Наверх


    Постоянная ссылка на статью "Управление доступом к&nb p;базам MySQL":


    Рассказать другу

    Оценка: 4.0 (голосов: 16)

    Ваша оценка:

    Ваш комментарий

    Имя:
    Сообщение:
    Защитный код: включите графику
     
     



    Поиск по базе статей:





    Темы статей






    Новые статьи

    Противовирусные препараты: за и против Добро пожаловать в Армению. Знакомство с Арменией Крыша из сэндвич панелей для индивидуального строительства Возможно ли отменить договор купли-продажи квартиры, если он был уже подписан Как выбрать блеск для губ Чего боятся мужчины Как побороть страх перед неизвестностью Газон на участке своими руками Как правильно стирать шторы Как просто бросить курить

    Вместе с этой статьей обычно читают:

    Golf получил доступ в Интернет

    С июля этого года Volkswagen начинает выпуск модели Golf eGeneration. Главное отличие этого автомобиля от стандартного Golf заключается в том, что eGeneration оснащается самой современной интернет-системой. Это первый автомобиль такого класса, который получил доступ в Интернет.

    » Разное - 2290 - читать


    Экономим деньги на&nb p;доступе в&nb p;Сеть

    Сегодня можно смело сказать, что Интернет вошел в нашу жизнь. В крупных городах им пользуются практически все семьи, в которых есть персональные компьютеры, а их число постоянно растет. Более того, постоянно увеличивается и количество активных пользователей Глобальной сети.

    » Интересное в сети - 1551 - читать


    Где применяется MySQL?

    В переговорах с разными людьми из мира ИТ-индустрии я неоднократно сталкивался с разными мнениями — от "все, что не является мощной коммерческой СУБД — это ничего не стоящее ПО, которое нельзя использовать для серьезной работы" и до почти наполеоновских планов "все на OpenSource!". Речь идет, конечно, о применении СУБД MySQL для создания коммерческих проектов — корпоративных порталов, серьезных веб-приложений, интранет-сайтов компаний и так далее. Одна из ...

    » Интересное в сети - 4377 - читать


    GPRS-доступ к&nb p;Интернету в&nb p;Москве

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

    » Интересное в сети - 1931 - читать


    Импорт данных в&nb p;базы MySQL

    В предыдущей статье — « Резервирование баз MySQL» — рассказывалось о методах и инструментах создания резервных копий информации из таблиц MySQL. Но не менее часто возникает и другая, обратная задача — загрузить существующую информацию в базу данных или отдельную таблицу.

    » Интересное в сети - 3764 - читать



    Статья на тему Интернет » Интересное в сети » Управление доступом к&nb p;базам MySQL

    Все статьи | Разделы | Поиск | Добавить статью | Контакты

    © Art.Thelib.Ru, 2006-2025, при копировании материалов, прямая индексируемая ссылка на сайт обязательна.

    Энциклопедия Art.Thelib.Ru