|
Программирование >> Создание клиентов mysql
ВЭТОЙ главе рассказывается о том, как программа MySQL управляет привилегиями и как можно обеспечить безопасность сервера баз данных. В MySQL применяются списки управления доступом, традиционные для многих систем. На сервере хранятся таблицы пользовательских привилегий. Привилегии могут относиться к столбцам, таблицам, базам данных или быть глобальными. Программа MySQL выполняется в виде системного сервиса или демона, поэтому нужно учитывать средства предоставляемые операционной системой или сетевым программным обеспечением. Повысить безопасность сервера можно, ограничив к нему доступ посредством сетевого фильтра вдмауэра). Если в базе данных хранится особо важная информация, рассмотрите возможность найма профессионального консультанта по вопросам безопасности. Схема привилегий В списке управления доступом (Access Control List, ACL) указывается, какие инструкции разрешено выполнять тем или иным пользователям. Такой список можно связать с пользователем, узлом, базой данных, таблицей или столбцом. Программа MySQL сверяет каждое обращение к базе данных с имеющимися списками управления доступом и определяет, есть ли у пользователя право выполнить запрашиваемое действие. Пользователи идентифицируют себя по имени, паролю и адресу узла. Пользовательские имена и пароли MySQL не связаны напрямую с именами и паролями операционной системы. Просто большинство клиентов MySQL по умолчанию берет имя пользователя, которое было указано при регистрации в системе. Это довольно удобно, хотя и не является обязательным правилом. Пользовательские имена и пароли могут быть длиной до 16 символов. Пароль разрешается оставлять пустым. Это самтй низкий уровень безопасности. Он допустим только в том когда доступ ограничивается по каким-то другим критериям, на- пример адресу узла. Перечень привилегий хранится в базе данные ql. Сценарий mysql install db, который запускается в ходе инсталляции программы, создает в этой базе данных пять таблиц с описаниями привилегий (табл. 27.1). Таблица columns priv db host tables priv user Содержимое Привилегии отдельных столбцов Привилегии всей базы данных Привилегии всех пользователей того или иного узла Привилегии отдельных таблиц Глобальные привилегии В таблица описываются глобальные права доступа и хранятся пользователь- ские пароли. Алгоритм шифрования паролей отличается от того, который применяется операционной системой. Пароль можно создать с помощью функции PASSWORD) (см. главу 12, Встроенные функции ) или путем прямого изменения таблицы user, но удобнее всего это делать с помощью инструкции GRANT. При попытке подключения к серверу программа MySQL обращается к таблице user и проверяет, имеет ли пользователь право на подключение. Имя, пароль и адрес узла пользователя должны соответствовать как минимум одной записи таблицы. Если этого не происходит, программа отказывает пользователю в запросе. Но даже когда подключение легитимно, пользователю может быть разрешено выполнять лишь ограниченный набор SQL-инструкций. Права доступа к данным контролируются остальными четырьмя таблицами базы mysql. Следует, правда, отметить, что любому зарегистрированному пользователю разрешено вводить инструкции SELECT с литералами в списке возвращаемых столбцов, например SELECT NOW(). В листинге показаны определения всех пяти таблиц привилегий. References CREATE TABLE COllimns priv ( Host CHAR (60) BINARY NOT NULL DEFAULT Db CHAR(64) BINARY NOT NULL DEFAULT , User CHAR(16) BINARY NOT NULL DEFAULT Table name CHAR(64) BINARY NOT NULL DEFAULT Со1шпп пате CHAR(64) BINARY NOT NULL DEFAULT TIMESTAMP TIMESTAMP(14) NOT NULL, Coluinn priv SET (Select, Insert, Update, NOT NULL DEFAULT , PRIMARY KEY (Host, Db, User, Table name, Coluinn name) TYPE=MyISAM COMMENT=Column privileges; CREATE TABLE db ( Host CHAR-{60) BINARY NOT NULL DEFAULT Db CHAR(64) BINARY NOT NULL DEFAULT , Use R(16) BINARY NOT NULL DEFAULT Select priv ENUMCN, Y) Insert priv ENUM(N, Y) Update priv ENUM(N, Y) Delete priv ENUMCN, Y) Create priv ENUMCN, Y) Drop priv ENUMCN, Y) Grant priV ENUM(N, Y NOT NULL DEFAULT N NOT NULL DEFAULT N NOT NULL DEFAULT N NOT NULL DEFAULT N NOT NULL DEFAULT N NOT NULL DEFAULT N , NOT NULL DEFAULT N , Y) NOT NULL DEFAULT NOT NULL DEFAULT N, References priv ENUM(N lndex priv ENUMCN, Y Alter J)riv ENUMCN, Y) NOT NULL DEFAULT N PRIMARY KEY (Host, Db, User), KEY User (User) TYPE=MyISAM COMMENT=Database privileges; CREATE TABLE host ( Host CHAR(60) BINARY NOT NULL DEFAULT , BINARY NOT NULL DEFAULT , Db CHAR(64) Select priv ENUMCN Y) lnsert priv ENUMCN, Y) Update jpriv ENUMCN, Y) Delete priv ENUMCN, Y) Create priv ENUMCN, Y) Drop priv ENUMCN, Y) Grant priv ENUMCN, Y) References priv ENUMCN, lndex priv ENUMCN, Y) Alter priv ENUMCN, Y) PRIMARY KEY (Host, Db) NOT NULL DEFAULT N , NOT NULL DEFAULT N, NOT NULL DEFAULT N, NOT NULL DEFAULT N, NOT NULL DEFAULT N, NOT NULL DEFAULT N , NOT NULL DEFAULT N, Y) NOT NULL DEFAULT NOT NULL DEFAULT N, NOT NULL DEFAULT N, TYPE=MyISAM COMMENT=Host privileges; Merged with database privileges; CREATE TABLE tables priv ( Host CHAR(60) BINARY NOT NULL DEFAULT , Db CHAR(64) BINARY NOT NULL DEFAULT , User CHAR(16) BINARY NOT NULL DEFAULT , Table name CHAR(60) BINARY NOT NULL DEFAULT , Grantor CHAR(77) NOT NULL DEFAULT , TIMESTAMP TIMESTAMP(14) NOT NULL, Table priv set(Select, Insert, Update, Delete, Create, Drop, Grant, References, Index, Alter NOT NULL DEFAULT , Column priv set(Select, Insert, Update, References) NOT NULL DEFAULT , PRIMARY KEY (Host, Db, User, Table name) , KEY Grantor (Grantor) TYPE=MyISAM COMMENT:=Table privileges; CREATE TABLE user ( Host CHAR(60) BINARY NOT NULL DEFAULT , User CHAR(16) BINARY NOT NULL DEFAULT
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |