|
Конспект лекций_Администрирование БД. Теоретические основы баз данных
Физическая модель данных MS SQL Server. SQL Server одновременно может поддерживать до 32767 баз данных, которые могут иметь связи друг с другом или внешними базами данных. После установки пакета создаются четыре системы базы данных: master – системные хранимые процедуры и системные таблицы, msdb – репликация и восстановление баз данных, tempdb – временные объекты для пользователей и промежуточные результаты выполнения запросов, model – модельная база данных (вновь создаваемые базы данных используют данную базу как шаблон, включая набор объектов и прав), и две пользовательских: pubs – использованную в данном учебном пособии, Northwind – аналог базы «Борей» для MS Access, предназначенные для обучения и экспериментов. Для хранения данных используется:
обычный дисковый раздел ОС. В этом случае база данных хранится как минимум в двух файлах, физический доступ к которым для пользователей в NTFS запрещён (в том числе блокируется копирование этих файлов). В файле с расширением .mdf хранится системная информация о базе данных и её объекты. С ростом базы длина файла автоматически увеличивается на фрагменты заданного размера. В файле с расширением .ldfхранится журнал транзакций. По желанию разработчика база данных может состоять более чем из двух файлов, обычно объединённых в группы. Вторичные файлы данных имеют расширение .ndf и не используются для хранения системной информации. Неформатированный (RAW) раздел жёсткого диска. База на таком разделе сразу занимает объём всего раздела, при этом возможно организовать только одну базу в разделе. Доступ к этому разделу будет иметь только SQL Server. При этом никакой возможности доступа к этим данным средствами ОС нет, реплицирование будет возможно только средствами SQL Server.
Основная единица хранения данных на уровне файла базы данных – страница (page). При дисковых операциях чтения-записи страница обрабатывается целиком. В SQL Server размер страницы равен 8192 байт. Первые 96 байт отводятся под заголовок, в котором хранится системная информация о типе страницы, объёме свободного места на странице и идентификационном номере объекта базы данных, которому принадлежит эта страница. Базовые типы страниц: data, index, text/image. После заголовка идёт область данных, а в конце страницы – таблица смещений строк, в которой указывается начало каждой записи относительно начала страницы. При удалении строки пустое пространство помечается и потом его может занять новая строка, но перемещения строк не происходит. Для более эффективного управления страницами SQL Server использует объединения страниц – экстенты (extent – непрерывная область). Каждый экстент содержит 8 страниц и занимает 64 Кбайт. Для управления экстентами используются страницы специального типа GAM – Global Allocation Map, каждая из которых может хранить информацию о заполнении 64 000 экстентов. Специальные страницы типа PFS (Page Free Space) – используются для сбора информации о свободном месте не страницах. Это намного убыстряет процесс записи в базу, так как серверу для поиска оптимального варианта записи достаточно перебрать только страницы PFS. Для сбора информации о том, какому объекту принадлежит страница, используются страницы специального типа IAM– Index Allocation Map. Для объекта-владельца создаётся собственная страница IAM, в которой указываются принадлежащие ему экстенты. Если одной IAM не хватает, создаётся цепочка страниц этого типа.
Система безопасности и администрирование SQL Server. Основной задачей СУБД является обеспечение целостности и непротиворечивости данных в рамках выбранной предметной области. Одним из факторов, препятствующих системе решать данную задачу, являются действия пользователей, случайно или умышленно пытающихся разрушить структуру данных или изменить сами данные. Следовательно, СУБД необходимо защищать не только от физических сбоев, но и (прежде всего) от неадекватных для реализуемых задач пользователей. Для этого необходимо спроектировать и подключить к базе данных систему безопасности, которая будет препятствовать пользователям выполнять действия, выходящие за рамки их полномочий. Для создания базы данных средствами TSQL используется команда CREATE DATABASE, однако обычно для этой цели используются возможности Enterprise Manager. В SQL сервер определено достаточно много операций с базами данных: увеличение (уменьшение) размеров файлов, изменение конфигурации (команда ALTER), присоединение и отсоединение, передача прав владения, изменение имени, просмотр свойств и, наконец, удаление (DROP DATABASE). Как и в большинстве серверов баз данных, в SQL Server существует пользователь, наделенный всеми административными полномочиями - это System Administrator или ‘sa’. После начальной установки сервера пароль sa пуст. Пользователь, создающий новую базу данных, автоматически становится её владельцем (‘dbo’ – Data Base Owner). В момент создания базы определяется и пользователь ’guest’. Если учётная запись пользователя явно не отображается в пользователя конкретной базы данных, пользователю предоставляется неявный доступ с использованием гостевого имени guest. Обычно guest запрещают. Пользователь, создавший объект в базе данных, автоматически становится его владельцем, и никто, включая dbo и sa, не могут использовать этот объект, пока владелец не назначит им права на него. Но чтобы пользователь мог создать объект, владелец базы данных должен сначала ему предоставить соответствующие права. Роль позволяет объединить пользователей, выполняющих одинаковые функции, для упрощения администрирования. Роли бывают встроенные и пользовательские. Встроенные роли реализуются на уровне сервера и на уровне баз данных. Ниже приведена таблица встроенных ролей для базы данных:
Db_owner
| Имеет все права в базе данных
| Db_accessadmin
| Может добавлять или удалять пользователей
| Db_securityadmin
| Управляет всеми разрешениями, объектами, ролями и пользователями
| Db_ddladmin
| Может выполнять все команды DDL, кроме GRANT, DENY, REVOKE
| Db_backupoperator
| Может выполнять команды архивирования данных
| Db_datareader
| Может просматривать любые данные в любой таблице
| Db_datawriter
| Может модифицировать любые данные в любой таблице
| Db_denydatareader
| Запрещается просматривать любые данные в любой таблице
| Db_denydatawriter
| Запрещается модифицировать любые данные в любой таблице
|
Назначение прав пользователям
Основой системы безопасности SQL Server являются (1) учётные записи (accounts); (2) пользователи (users); (3) роли (roles); (4) группы (groups).
Когда пользователь подключается к SQL Server, действия, которые он может выполнять, определяются правами, выданными ему как пользователю и члену роли. Права выдаются администратором СУБД, владельцем базы данных или владельцем конкретного объекта базы данных. Права в базе данных можно разделить на три категории: (1) права на доступ к объектам баз данных; (2) права на выполнение команд TSQL; (3) неявные права. Сервер позволяет передавать права владения от одного пользователя другому. Для управления разрешениями пользователя на доступ к объектам базы данных используются следующие команды: GRANT { ALL [PRIVILEGES] | <вид действия>,…}
{
ON {<имя таблицы или представления>} [(<имя столбца>,…)]
| ON {<имя хранимой процедуры>}
| ON {<имя пользовательской функции>}
}
TO {PUBLIC | <имя объекта системы безопасности>,…}
[WITH GRANT OPTION]
[AS <имя группы> | <имя роли>] – назначение прав пользователям, где
ALL – пользователю предоставляются все возможные разрешения, иначе указать
<вид действия> – права на доступные для пользователя действия, а именно:
SELECT – на просмотр, для столбца таблицы и для таблицы (представления)
INSERT – на добавление, для таблицы (представления) в целом
UPDATE – на изменение, для столбца таблицы и для таблицы (представления)
DELETE – на удаление, для таблицы (представления) в целом
EXECUTE – на выполнение хранимых процедур
REFERENCES – возможность ссылаться на указанный объект (вводить в состав внешнего ключа).
<имя объекта системы безопасности> – учётные записи SQL Server, пользователи домена Windows; PUBLIC – для всех пользователей.
WITH GRANT OPTION – позволяет пользователю, которому сейчас предоставляются права, самому назначать права на доступ к объекту другим пользователям.
AS <имя группы> | <имя роли> – участие пользователя в роли, которой предоставлена возможность предоставлять права другим пользователям. Примеры:
GRANT SELECT ON authors TO public
GRANT INSERT, UPDATE, DELETE ON authors TO Mary, John, Tom
GO
GRANT SELECT ON Plan_Data TO Accounting WITH GRANT OPTION
GRANT SELECT ON Plan_Data TO Jack AS Accounting
-- Джек не входит в роль Accounting, но кто-нибудь из этой роли может предоставить право DENY { ALL [PRIVILEGES] | <вид действия>,…}
{
ON {<имя таблицы или представления>} [(<имя столбца>,…)]
| ON {<имя хранимой процедуры>}
| ON {<имя пользовательской функции>}
}
TO {PUBLIC | <имя объекта системы безопасности>,…}
[CASCADE]
[AS <имя группы> | <имя роли>] – запрещение доступа пользователям к объектам базы данных. CASCADE отзывает права не только у данного пользователя, но также и у всех, кому он права предоставлял. Пример (на запрещение выполнения команды TSQL):
DENY CREATE TABLE TO Jack CASCADE Команда REVOKE используется для неявного отклонения доступ к объектам базы данных. Синтаксис аналогичен команде DENY. Неявное отклонение подобно запрещению доступа с тем отличием, что оно действует только на том уровне, на котором определено. Пример: пользователю Jack, который является участником роли GoodUsers, предоставлены права на доступ к таблице XFiles. Если при помощи REVOKE для роли GoodUsers отклоняются права на доступ к этой таблице, пользователь Jack всё равно может обращаться к этой таблице, поскольку права для него определены явно. Если же применить REVOKE персонально для него, он потеряет право на доступ к XFiles. Разрешения, предоставленные роли, наследуются их членами. Если пользователю предоставлен доступ к объекту через членство в одной роли, но запрещён в другой, то конфликт доступа всегда решается в пользу запрещения.
Технологии защиты данных в MS SQL Server
Механизм checkpoints – контрольных точек, которые генерируются через 60 с для записи обновлённых страниц на диск (контрольная точка может быть поставлена принудительно командой CHECKPOINT). Встроенные и внешние механизмы проверки целостности базы данных (запускаются автоматически или, как утилита DBCC – Database Consistency Checker – вручную). Физическое дублирование (если оно разрешено) файлов баз данных средствами операционной системы (включая механизм зеркальных жёстких дисков). Резервирование баз данных и журналов транзакций – путём записи дампа базы данных на устройство резервирования (магнитную ленту или жёсткий диск). Репликация – возможность дублирования информации путём её периодической (в некоторых случаях – синхронной) передачи с одного SQL сервера на другой. Шифрование трафика между клиентом и сервером, а также шифрование кодов, использованных для работы с объектами базы данных (хранимых процедур, триггеров и др.)
|
|
|