Автор: Пользователь скрыл имя, 16 Декабря 2012 в 11:57, дипломная работа
Одной из главных тенденций в современном мире является постоянное повышение роли информации.
Обмен информацией осуществляется по международным сетям телекоммуникаций, а необходимые для подключения к ним оборудование и программы достаточно удобны, надежны, дешевы и широко доступны. Однако информация, которая передается от одного компьютера к другому, не всегда скрыта от остальных компьютеров, подключенных к той же сети. Это может привести к шпионажу, краже данных и их искажению.
В рамках СУБД,
база данных — это логически
Рассмотрим структуру базы данных в среде MS SQL Server 2005.
База данных включает следующие объекты:
При создании базы данных для нее всегда определяется журнал транзакций, который используется для восстановления состояния базы данных в случае сбоев или потери данных. Журнал размешается в одном или нескольких файлах. В журнале регистрируются все транзакции и все изменения, произведенные в их рамках. Транзакция не считается завершенной, пока соответствующая запись не будет внесена в журнал.
Управление системой баз данных производится обычно с помощью нескольких сервисных программ — отдельных приложений, выполняемых в среде операционной системы. Рассмотрим основные функции и компоненты управления на примере сервера реляционных баз данных MS SQL Server.
Большинство функций администрирования, таких как создание, удаление или редактирование объектов БД в SQL Server можно проводить тремя способами: при помощи специализированных диалоговых «мастеров», средствами SQL Server Management Studio или командами языка T-SQL (надмножество языка SQL-92. включающее дополнительные функции, операторы условия и цикла, хранимые процедуры и т. д.), выполняемыми из приложения или, например, из утилиты окна Server Management Studio. [3, 137]
Большая часть функций администрирования работы пользователей, серверов и баз данных сосредоточена в приложении SQL Server Management Studio, которое позволяет осуществлять, в том числе, следующие функции:
Управление доступом
Система безопасности SQL Server имеет несколько уровней безопасности:
Механизм безопасности предполагает существование четырех типов пользователей:
Модель безопасности SQL Server включает следующие компоненты:
Для создания пользователя в среде MS SQL Server следует предпринять следующие шаги:
1. Создать в базе данных учетную запись пользователя, указав для него пароль и принятое по умолчанию имя базы данных (процедура sp_addlogin).
2. Добавить этого пользователя во все необходимые базы данных (процедура sp_adduser).
3. Предоставить ему в каждой базе данных соответствующие привилегии (команда GRANT).
Создание новой учетной записи может быть произведено с помощью системной хранимой процедуры:
sp_addlogin , [@login=] 'учетная_запись'
[, [@password=] 'пароль') ]
[, [@defdb=] 'база_данных_по_умолчанию']
После завершения аутентификации и получения идентификатора учетной записи «login ID» пользователь считается зарегистрированным, и ему предоставляется доступ к серверу. Для каждой базы данных, к объектам которой он намерен получить доступ, учетная запись пользователя «login» ассоциируется с пользователем «user» конкретной базы данных, что осуществляется посредством процедуры:
sp_adduser [@loginame=] 'учетная_запись'
[, [@name_in_db=] 'имя_пользователя']
[, [@grpname=] 'имя_роли']
Отобразить учетную запись Windows 2003 в имя пользователя позволяет хранимая процедура:
sp_grantdbaccess [@login=] 'учетная_запись'
[, [@name_in_db=]'имя_
Пользователь, который создает объект в базе данных (таблицу, хранимую процедуру, просмотр), становится его владельцем. Владелец объекта (database object owner dbo) имеет все права доступа к созданному им объекту. Чтобы пользователь мог создать объект, владелец базы данных «dbo» должен предоставить ему соответствующие права. Полное имя создаваемого объекта включает в себя имя создавшего его пользователя.
Владелец объекта не имеет специального пароля или особых прав доступа. Он неявно имеет полный доступ, но должен явно предоставить доступ другим пользователям. [3, 177]
SQL Server позволяет передавать права владения от одного пользователя другому с помощью процедуры:
sp_changeobjectowner [@objname=] 'имя_объекта'
[@newowner=] 'имя_владельца'
Роль позволяет объединить волну группу пользователей, выполняющих одинаковые функции.
В SQL Server реализовано два вида стандартных ролей: на уровне сервера и на уровне баз данных. При установке SQL Server создаются фиксированные роли сервера (например, «sysadmin» с правом выполнения любых функций SQL-сервера) и фиксированные роли базы данных (например, «db_owner» с правом полного доступа к базе данных или «db_accessadmin» с правом добавления и удаления пользователей). Среди фиксированных ролей базы данных существует роль «public», которая имеет специальное назначение, поскольку ее членами являются все пользователи, имеющие доступ к базе данных.
Можно включить любую учетную запись SQL Server «login» или учетную запись Windows 2003/XP в любую роль сервера.
Роли базы данных позволяют объединять пользователей в одну административную единицу и работать с ней как с обычным пользователем. Можно назначить права доступа к объектам базы данных для конкретной роли, при этом автоматически все члены этой роли наделяются одинаковыми правами.
В роль базы данных можно включить пользователей SQL Server, роли SQL Server, пользователей Windows 2003/XP.
Различные действия по отношению к роли осуществляются при помощи специальных процедур:
sp_addrole [@rolename=] 'имя_роли'
[, [@ownername=] 'имя_владельца']
sp_addrolemember (@rolename=] 'имя_роли',
[@membername=] 'имя_пользователя'
sp_droprolemember [@rolename=] 'имя_роли',
[@membername=] 'имя_пользователя'
sp_droprole [@rolename=] 'имя_роли'
Оператор «GRANT» применяется для предоставления привилегий в отношении поименованных объектов базы данных указанным пользователям. Обычно его использует владелец таблицы с целью предоставления доступа к ней другим пользователям. Оператор «GRANT» имеет следующий формат:
<предоставление_привилегий>:: =
GRANT {<привилегия>[,...n] | ALL PRIVILEGES}
ON имя_объекта
ТО {<идентификатор_пользователя> [,...п] | PUBLIC}
[ WITH GRANT OPTION]
Параметр <привилегия> представляет собой:
<привилегия>::=
{SELECT | DELETE | INSERT [(имя_столбца[,...n])]
| UPDATE [(имя_столбца[,...n])]}
| REFERENCES [(имя_столбца[,...n])] | USAGE }
Из соображений упрощения в операторе GRANT можно указать ключевое слово «ALL PRIVILEGES», что позволит предоставить указанному пользователю все существующие привилегии без необходимости их перечисления. Кроме того, в этом операторе может указываться ключевое слово PUBLIC, означающее предоставление доступа указанною типа не только всем существующим пользователям, но также и всем тем, кто будет определен в базе данных впоследствии.
Параметр «имя_объекта» может использоваться как имя таблицы базы данных, представления, домена, набора символов, проверки.
Благодаря параметру «WITH GRANT OPTION», указанные в операторе «GRANT» пользователи имеют право передавать все предоставленные им в отношении указанного объекта привилегии другим пользователям, которые, в свою очередь, будут наделены точно таким же правом передачи своих полномочий. Если данный параметр не будет указан, получатель привилегии не сможет передать свои права другим пользователям. Таким образом, владелец объекта может четко контролировать, кто получил право доступа к объекту и какие полномочия ему предоставлены.
В языке SQL для отмены привилегий, предоставленных пользователям посредством оператора «GRANT», используется оператор «REVOKE». С помощью этого оператора могут быть отменены все или некоторые из привилегий, полученных указанным пользователем раньше. Оператор «REVOKE» имеет следующий формат:
<отмена_привилегий>::=
REVOKЕ [GRANT OPTION FOR] {<привилегия>[, ...n]
| ALL PRIVILEGES}
ON имя_объекта
FROM {<идентификатор_пользователя> [,...n] | PUBLIC}
[RESTRICT | CASCADE]
Ключевое слово «ALL PRIVILEGES» означает, что для указанного пользователя отменяются все привилегии, предоставленные ему ранее тем пользователем, который ввел данный оператор. Необязательная фраза «GRANT OPTION FOP» позволяет для всех привилегий, переданных в исходном операторе «GRANT» фразой «WITH GRANT OPTION», отменять возможность их передачи независимо от самих привилегий.
Если в операторе указано ключевое слово «RESTRICT», успешное выполнение команды «REVOKE» возможно лишь в том случае, когда перечисленные в операторе привилегии не могут послужить причиной появления у каких-либо других пользователей так называемых «оставленных» привилегий. С помощью параметра «CASCADE» удаляются все привилегии, которые иначе могли бы остаться у других пользователей.
«Оставленными» являются привилегии, сохранившиеся у пользователя, которому они в свое время были предоставлены с помощью параметра «GRANT OPTION».
Поскольку наличие привилегии необходимо для создания определенных объектов, вместе с ее удалением можно лишиться права, за счет использования которого был образован тот или иной объект (подобные объекты называются «брошенными»). Если в результате выполнения оператора «REVOKE» могут появиться брошенные объекты (например, представления), оно будет отменено при условии, что в нем не указывается ключевое слово «CASCADE». Если ключевое слово «CASCADE» в операторе присутствует, то для любых брошенных объектов, возникающих при выполнении исходного оператора «REVOKE», будут автоматически выданы операторы «DROP». [3, 243]
Для управления разрешением пользователя на доступ к объектам базы данных используется команда:
<предоставление_привилегий>::=
GRANT { ALL [ PRIVILEGES] | <привилегия> [,...n]}
{ [ ( имя_столбца [, …n])] ON { имя_таблицы |
имя_просмотра} | ON {имя_таблицы |
имя_просмотра } ([имя_столбца [,…n])]
| ON {имя_хранимой_процедуры |
имя_внешней_процедуры}}
TO { имя_пользователя | имя_группы |
имя_роли} [, ...n]
[WITH GRANT OPTION ]
[AS {имя_группы | имя_роли } ]