- •Система безопасности Database Engine Оглавление
- •Принципы концепции безопасности базы данных.
- •Аутентификация
- •Использование sql Server Management Studio для выбора одного из режимов аутентификации.
- •Создание нового имени входа sql Server.
- •Создание нового имени входа sql Server в Transact-sql.
- •Назначение учетной записи фиксированной серверной роли. Интерфейс sql Server Management Studio.
- •Управление серверными ролями с использованием Transact sql.
- •Управление доступом к базам данных.
- •Предоставление разрешений на базу данных в sql Server Management Studio.
- •Предоставление доступа к базам данных с использованием Transact-sql
- •Управление пользователями базы данных
- •Роли базы данных Создание роли с использованием Transact-sql.
- •Создание роли и добавление члена роли в Transact sql
- •Предоставление индивидуальных (гранулярных) разрешений. Управление доступом к таблицам и столбцам.
- •Предоставление индивидуальных (гранулярных) разрешений в sql Server Management Studio.
- •Управление индивидуальными разрешениями в Transact sql.
- •Управление доступом к схемам
- •Задания для самостоятельного выполнения:
Управление доступом к схемам
Схемы - это контейнеры объектов, которые позволяют группировать объекты базы данных.
В SQL Server 2005 объект базы данных называется именем, состоящим из четырех компонентов следующей структуры:
<Server>.<Database>.<Schema>.<Object>
Схемы базы данных можно создавать при помощи инструкции CREATE SCHEMA.
Создавая схему, можно создать объекты базы данных и назначить разрешения в пределах одной транзакции, которая вызывается инструкцией CREATE SCHEMA.
Пример: создает схему с именем Accounting, назначает пользователя Peter владельцем схемы и создает таблицу с именем Invoices. Также предоставляется разрешение select роли базы данных public. Обратите внимание на двухкомпонентное имя, которое используется для обращения к таблице в текущей базе данных.
USE AdventureWorks;
GO
--Создаем схему Accounting с владельцем Peter.
CREATE SCHEMA Accounting
AUTHORIZATION Peter;
GO
--Создаем таблицу Invoices в схеме Accounting.
CREATE TABLE Accounting.Invoices (
InvoiceID int,
InvoiceDate smalldatetime,
ClientID int);
GO
--Предоставляем разрешение SELECT на новую таблицу роли public.
GRANT SELECT ON Accounting.Invoices
TO public; GO
--Добавляем строку данных в новую таблицу.
INSERT INTO Accounting.Invoices
VALUES (101,getdate(),102);
Информацию о схемах можно получить, выполнив запрос к представлению каталога sys.schemas:
SELECT * FROM sys.schemas;
Удалить схему можно при помощи инструкции DROP SCHEMA. В SQL Server 2005 не допускается удаление схемы, если в схеме есть объекты.
Пример показывает, как удалить существующую схему, выполнив запрос к объектам, которые содержатся в этой схеме, и удалить сначала эти объекты.
USE AdventureWorks;
GO
--Извлекаем информацию о схеме Accounting.
SELECT s.name AS ‘Schema’, o.name AS ‘Object’
FROM sys.schemas AS s INNER JOIN sys.objects AS o ON s.schema_id=o.schema_id WHERE s.name='Accounting';
GO
--Удаляем таблицу Invoices из схемы Accounting.
DROP TABLE Accounting.Invoices;
GO
--Удаляем схему Accounting.
DROP SCHEMA Accounting;
Использование схемы по умолчанию. Когда приложение ссылается на объект базы данных, не уточняя схемы, SQL Server осуществляет попытку найти объект в схеме, заданной для текущего пользователя по умолчанию. Если объект не содержится в схеме по умолчанию, SQL Server пытается обнаружить объект в схеме dbo.
Пример демонстрирует, как создать схему и назначить ее в качестве схемы по умолчанию для пользователя.
--Создаем имя входа SQL Server в данном экземпляре SQL Server.
CREATE LOGIN Viktor
WITH PASSWORD='22061946'; GO
--Изменяем контекст соединения на базу данных AdventureWorks.
USE AdventureWorks;
GO
--Создаем пользователя Viktor в базе данных AdventureWorks и сопоставляем этого пользователя имени входа Viktor
CREATE USER Viktor
FOR LOGIN Viktor;
GO
--Создаем схему Marketing5
CREATE SCHEMA Marketing5
GO
--Создаем таблицу Campaigns в только что созданной схеме.
CREATE TABLE Marketing.Campaigns (
CampaignID int, CampaignDate smalldatetime, Description varchar (max)); GO
--Предоставляем разрешение SELECT пользователю Viktor на новую таблицу.
GRANT SELECT ON Marketing.Campaigns TO Viktor;
GO
--Объявляем схему Marketing схемой по умолчанию для пользователя Viktor
ALTER USER Viktor
WITH DEFAULT_SCHEMA=Marketing;
Если войти под именем Viktor в SQL Server и пытаться добавить запись, то выдается ошибка (пользователю Viktor предоставлено разрешение SELECT на таблицу Marketing.Campaigns).