Скачать презентацию www smart-ex kz 1 SQL Server 2005 Скачать презентацию www smart-ex kz 1 SQL Server 2005

00cdeb087dd827435577aef1e6ec4a76.ppt

  • Количество слайдов: 50

www. smart-ex. kz 1 www. smart-ex. kz 1

SQL Server 2005, как MLS система. Докладчик: Щербатов Евгений Компания: SMART-EX Астана 2005 SQL Server 2005, как MLS система. Докладчик: Щербатов Евгений Компания: SMART-EX Астана 2005

RLS CLS MLS « RLS – Row Level Security. Контроль доступа к данным на RLS CLS MLS « RLS – Row Level Security. Контроль доступа к данным на уровне строк таблицы. « CLS – Cell Level Security. Контроль доступа к данным на уровне ячеек таблицы. « MLS – Multi Level Secure.

Редакции SQL Server 2005 Express Standard Workgroup Developer Enterprise Mobile Evaluation Редакции SQL Server 2005 Express Standard Workgroup Developer Enterprise Mobile Evaluation

Способы защиты данных в SQL Server 2005 SQL query Способы защиты данных в SQL Server 2005 SQL query

Доступ к таблице “Пациенты” RLS Завотделения Главврач CLS CLS Врач RLS Доступ к таблице “Пациенты” RLS Завотделения Главврач CLS CLS Врач RLS

Доступ к таблице “Пациенты” RLS Завотделения Главврач CLS CLS Врач RLS Доступ к таблице “Пациенты” RLS Завотделения Главврач CLS CLS Врач RLS

Доступ к таблице “Пациенты” RLS Завотделения Главврач CLS CLS Врач RLS Доступ к таблице “Пациенты” RLS Завотделения Главврач CLS CLS Врач RLS

Доступ к таблице “Пациенты” RLS Завотделения Главврач CLS CLS Врач RLS Доступ к таблице “Пациенты” RLS Завотделения Главврач CLS CLS Врач RLS

RLS, как часть Сервера Приложений T* EC SELECT * FROM T 1 WHERE for RLS, как часть Сервера Приложений T* EC SELECT * FROM T 1 WHERE for User 1 SELECT * FROM T 1 WHERE for User 2 SELECT * FROM T 1 WHERE for User 3 M FRO T 1 User 1 M T 1 SELECT * FRO SELE C T*F ROM User 2 T 1 Сервер приложений SELECT * FROM T 1 Преимущества Широкие возможности выбора методов реализации Использование высокоуровневых языков программирования Query Analyzer User 3 Недостатки Изменение политики безопасности приводит к изменению кода программы Существует возможность несанкционированного доступа к данным в обход сервера приложений.

RLS в хранимых процедурах Report Tool RLS u ec Ex Report Tool SP 1 RLS в хранимых процедурах Report Tool RLS u ec Ex Report Tool SP 1 SP 2 Report Tool SP 3 SP 4 SP 5 1 P e. S t User 1 P 3 e. S ecut Ex Execute SP 5 User 2 Query Analyzer Преимущества Недостатки Несанкционированный доступ к данным посредством третьих приложений не принесет результата Изменение политики безопасности требует пересмотреть и обновить код всех хранимых процедур Средства отчетности не работают с хранимыми процедурами Возможности языка хранимых процедур ограничены

RLS и представления RLS User 2 User 1 View Report Tool Base Table Преимущества RLS и представления RLS User 2 User 1 View Report Tool Base Table Преимущества Несанкционированный доступ к данным посредством третьих приложений не приносит результата Средства отчетности работают с представлениями Нет необходимости что-либо программировать Query Analyzer Недостатки Снижается скорость работы запросов

Основные понятия RLS « Метка это сущность, описывающая уровень – доступа к данным. Назначается Основные понятия RLS « Метка это сущность, описывающая уровень – доступа к данным. Назначается каждому пользователю системы и каждой строке таблицы, защищенной RLS. « Доминирование. Если пользователь имеет доступ к записи, помеченной какой-либо меткой, то метка пользователя доминирует над меткой записи. Если это не так, то пользователь видеть запись не должен.

Уровни безопасности 1 Доступ к информации TOP SECRET PUBLIC Уровни безопасности 1 Доступ к информации TOP SECRET PUBLIC

Разным пользователям – разный доступ SELECT * FROM Table 1 ID Name Classification 1 Разным пользователям – разный доступ SELECT * FROM Table 1 ID Name Classification 1 Иванович SECRET 2 Петрович TOP SECRET 3 Васильев Василий Васильевич PUBLIC Завотделения SECRET ID Name Classification 1 Иванович SECRET 3 Васильев Василий Васильевич PUBLIC ID Name Classification 3 Васильев Василий Васильевич PUBLIC Медсестра PUBLIC

Уровни безопасности 2 Отделы Доступ к информации DEPARTMENT TOP SECRET 1 DEPARTMENT 2 DEPARTMENT Уровни безопасности 2 Отделы Доступ к информации DEPARTMENT TOP SECRET 1 DEPARTMENT 2 DEPARTMENT 3 SECRET PUBLIC

Разным пользователям – разный доступ SELECT * FROM Table 1 ID Name Classification 1 Разным пользователям – разный доступ SELECT * FROM Table 1 ID Name Classification 1 Иванович SECRET, DEPARTMENT 1 2 Петрович TOP SECRET 3 Васильев Василий Васильевич PUBLIC Главврач TOP SECRET Classification Петрович TOP SECRET 3 Васильев Василий Васильевич PUBLIC ID Name Classification 1 Иванович SECRET, DEPARTMENT 1 3 SECRET, DEPARTMENT 1 Name 2 Завотделения ID Васильев Василий Васильевич PUBLIC ID Name Classification 3 Васильев Василий Васильевич PUBLIC Медсестра PUBLIC

Структура меток и категорий Метка Маркер Категория Домен Маркер Маркер Иерархичность (Да/Нет) Отношение (1. Структура меток и категорий Метка Маркер Категория Домен Маркер Маркер Иерархичность (Да/Нет) Отношение (1. . 1, 0. . *, 1. . *) Правило (Any, All, Inverse. All) Маркер

Характеристики категорий Атрибуты Описание Домен Набор маркеров в категории Иерархичность (Да или Нет) В Характеристики категорий Атрибуты Описание Домен Набор маркеров в категории Иерархичность (Да или Нет) В иерархической категории существует упорядоченность значений. При этом каждый маркер приводится в соответствие маркерам на том же или более низких уровнях Атрибут определяет, сколько маркеров данной категории может присутствовать в метке. Правило определяет, должна ли для предоставления доступа метка пользователя иметь любой (Any) или все (All) маркеры, связанные с объектом. Альтернативное правило (Inverse. All) означает, что для доступности объекта он не должен иметь ни одного маркера, содержащегося в метке пользователя Отношение (мощность) Правило сравнения

Категории БД клиники Категория Домен Иерархия Отношение Правило TOP SECRET Доступ к Any SECRET Категории БД клиники Категория Домен Иерархия Отношение Правило TOP SECRET Доступ к Any SECRET Да 1. . 1 информации PUBLIC DEPARTMENT 1 All Нет 0. . * DEPARTMENT 2 Отделы DEPARTMENT 3 Отделы Доступ к информации TOP SECRET DEPARTMENT 1 SECRET PUBLIC DEPARTMENT 2 DEPARTMENT 3

Категории БД клиники Категория Домен Иерархия Отношение Правило TOP SECRET Доступ к Any SECRET Категории БД клиники Категория Домен Иерархия Отношение Правило TOP SECRET Доступ к Any SECRET Да 1. . 1 информации PUBLIC DEPARTMENT 1 Отделы All Нет 0. . * DEPARTMENT 2 DEPARTMENT 3 Отделы Доступ к информации TOP SECRET DEPARTMENT 1 SECRET PUBLIC DEPARTMENT 2 DEPARTMENT 3

Определение доминирующей метки Начало Есть ли еще категории для проверки? Нет А доминирует над Определение доминирующей метки Начало Есть ли еще категории для проверки? Нет А доминирует над В? True Доступ предоставляется Да Да Сравнение маркеров из этой категории Маркеры в А соответствуют маркерам В? Нет А доминирует над В? False В доступе отказывается

Any Начало Есть ли еще маркеры в В? Нет × Да Да Иерархическая категория? Any Начало Есть ли еще маркеры в В? Нет × Да Да Иерархическая категория? Нет Проверить, имеется ли в А этот маркер или маркер высшего уровня Проверить, присутствует ли в метке А этот маркер Нет Да Проверка категории прошла Прошла ли проверка? √ Проверка категории не прошла

All Начало Есть ли еще маркеры в В? Нет √ Да Да Иерархическая категория? All Начало Есть ли еще маркеры в В? Нет √ Да Да Иерархическая категория? Проверить, имеется ли в А этот маркер или маркер высшего уровня Да Нет Проверка категории прошла Проверка категории не прошла Проверить, присутствует ли в метке А этот маркер Прошла ли проверка? Нет ×

Реализация RLS реализуется с помощью механизма представлений (view) SQL Server. Пользователю предоставляется доступ к Реализация RLS реализуется с помощью механизма представлений (view) SQL Server. Пользователю предоставляется доступ к представлению, построенному на основе защищаемой таблицы, но отказывается в доступе к базовой таблице. При этом для каждой БД необходимо: «создать дополнительные таблицы для определения категорий, маркеров и меток; «создать роли для всех значений маркеров. Кроме того, для каждой защищаемой таблицы необходимо: «произвести небольшую модификацию базовой таблицы; «определить представление.

Структурная модель RLS Представление, доступное пользователю Базовая таблица IO Delete Update Представление с JOIN Структурная модель RLS Представление, доступное пользователю Базовая таблица IO Delete Update Представление с JOIN ON vw. Visible. Labels IO Update Insert Read IO Insert Поддерживаемые структуры vw. Visible. Labels Маркеры +ID маркеров Метки и определения категорий Роли БД

Дополнительные таблицы БД определяют: категории и их атрибуты; значения маркеров и соответствующие им роли; Дополнительные таблицы БД определяют: категории и их атрибуты; значения маркеров и соответствующие им роли; иерархии маркеров; экземпляры уникальных комбинации маркеров; связи значений маркеров с экземплярами меток.

Структурная модель RLS Представление, доступное пользователю Базовая таблица IO Delete Update Представление с JOIN Структурная модель RLS Представление, доступное пользователю Базовая таблица IO Delete Update Представление с JOIN ON vw. Visible. Labels IO Update Insert Read IO Insert Поддерживаемые структуры vw. Visible. Labels Маркеры +ID маркеров Метки и определения категорий Роли БД

vw. Visible. Labels SELECT Id, Label. To. String() FROM tbl. Unique. Label WITH (NOLOCK) vw. Visible. Labels SELECT Id, Label. To. String() FROM tbl. Unique. Label WITH (NOLOCK) WHERE … ?

ANY Id IN ( SELECT Key. Mapping. Id FROM tbl. Unique. Label. Marking WITH(NOLOCK) ANY Id IN ( SELECT Key. Mapping. Id FROM tbl. Unique. Label. Marking WITH(NOLOCK) WHERE Category. Id = AND IS_MEMBER ( Marking. Role. Name ) = 1 )

ALL 1 = ALL( SELECT IS_MEMBER ( Marking. Role. Name ) FROM tbl. Unique. ALL 1 = ALL( SELECT IS_MEMBER ( Marking. Role. Name ) FROM tbl. Unique. Label. Marking WITH(NOLOCK) WHERE Category. ID = AND Unique. Label. ID = tbl. Unique. Label. ID )

vw. Visible. Labels CREATE VIEW vw. Visible. Labels AS SELECT ID, Label. To. String() vw. Visible. Labels CREATE VIEW vw. Visible. Labels AS SELECT ID, Label. To. String() FROM tbl. Unique. Label WITH ( NOLOCK ) WHERE --Уровни доступа по секретности ID IN ( SELECT Key. Mapping. ID FROM tbl. Unique. Label. Marking WITH (NOLOCK) WHERE Category. ID = 1 AND IS_MEMBER ( Marking. Role. Name ) = 1 ) –-Уровни доступа по отделениям AND 1 = ALL( SELECT IS_MEMBER ( Marking. Role. Name ) FROM tbl. Unique. Label. Marking WHERE Category. ID = 2 AND Unique. Label. ID = tbl. Unique. Label. ID )

Структурная модель RLS Представление, доступное пользователю Базовая таблица IO Delete Update Представление с JOIN Структурная модель RLS Представление, доступное пользователю Базовая таблица IO Delete Update Представление с JOIN ON vw. Visible. Labels IO Update Insert Read IO Insert Поддерживаемые структуры vw. Visible. Labels Маркеры +ID маркеров Метки и определения категорий Роли БД

Модификация базовой таблицы Базовая таблица ID Column 1 Column 2 Новый столбец RLSMapping. ID Модификация базовой таблицы Базовая таблица ID Column 1 Column 2 Новый столбец RLSMapping. ID Таблица уникальных меток Внешний ключ tbl. Unique. Label

Структурная модель RLS Представление, доступное пользователю Базовая таблица IO Delete Update Представление с JOIN Структурная модель RLS Представление, доступное пользователю Базовая таблица IO Delete Update Представление с JOIN ON vw. Visible. Labels IO Update Insert Read IO Insert Поддерживаемые структуры vw. Visible. Labels Маркеры +ID маркеров Метки и определения категорий Роли БД

Представление первого слоя CREATE VIEW User. Table AS SELECT < столбцы базовой таблицы без Представление первого слоя CREATE VIEW User. Table AS SELECT < столбцы базовой таблицы без RLSMapping. ID или других служебных столбцов vw. Visible. Labels > FROM tbl. Base. Table (READCOMMITTED), vw. Visible. Labels WHERE tbl. Base. Table. RLSMapping. ID = vw. Visible. Labels. ID GO GRANT SELECT ON User. Table TO DENY ALL ON tbl. Base. Table TO

Структурная модель RLS Представление, доступное пользователю Базовая таблица IO Delete Update Представление с JOIN Структурная модель RLS Представление, доступное пользователю Базовая таблица IO Delete Update Представление с JOIN ON vw. Visible. Labels IO Update Insert Read IO Insert Поддерживаемые структуры vw. Visible. Labels Маркеры +ID маркеров Метки и определения категорий Роли БД

CLS – защита данных на уровне ячеек CLS обеспечивает: • поддержку произвольного назначения меток CLS – защита данных на уровне ячеек CLS обеспечивает: • поддержку произвольного назначения меток безопасности ячейкам; • динамическую оценку метки пользователя для показа только ему доступных ячеек; • приемлемое снижение производительности для больших выборок.

Структурная модель CLS Представление, доступное пользователю IO Update IO Delete Read IO Insert vw. Структурная модель CLS Представление, доступное пользователю IO Update IO Delete Read IO Insert vw. Visible. Labels Delete Update Маркеры +ID маркеров Insert Представление с JOIN ON vw. Visible. Labels Поддерживаемые структуры Метки и определения категорий Роли БД Симметричные ключи и сертификаты Базовая таблица Хранимая процедура CLS

Шифрование в SQL Server 2005 Windows Level Service Master Key encrypted with DPAPI SQL Шифрование в SQL Server 2005 Windows Level Service Master Key encrypted with DPAPI SQL Server Level Service Master Key Database Level Database Master Key Certificates Asymmetric Keys Symmetric Keys Data

Пример расшифровки данных CREATE VIEW My. Table AS SELECT ID, Decrypt. By. Key ( Пример расшифровки данных CREATE VIEW My. Table AS SELECT ID, Decrypt. By. Key ( Sensitive. Data ), Decrypt. By. Key ( Other. Sensitive. Data ), Non. Sensitive. Data, FROM Base. Table

Хранимая процедура CLS CREATE PROCEDURE usp_Enable. Cell. Visibility WITH EXECUTE AS 'Key. Broker' AS Хранимая процедура CLS CREATE PROCEDURE usp_Enable. Cell. Visibility WITH EXECUTE AS 'Key. Broker' AS DECLARE @Key. Name nvarchar(256) DECLARE @Cert. Name nvarchar(256) DECLARE Key_Cursor CURSOR LOCAL FORWARD_ONLY STATIC FOR SELECT Key. Name, Cert. Name FROM vw. Visible. Labels EXECUTE AS CALLER OPEN Key_Cursor REVERT FETCH NEXT FROM Key_Cursor INTO @Key. Name, @Cert. Name WHILE @@FETCH_STATUS = 0 BEGIN EXEC (' OPEN SYMMETRIC KEY ' + @Key. Name + ' DECRYPTION BY CERTIFICATE ' + @Cert. Name ) FETCH NEXT FROM Key_Cursor INTO @Key. Name, @Cert. Name END CLOSE Key_Cursor DEALLOCATE Key_Cursor

Структурная модель CLS Представление, доступное пользователю IO Update IO Delete Read IO Insert vw. Структурная модель CLS Представление, доступное пользователю IO Update IO Delete Read IO Insert vw. Visible. Labels Delete Update Маркеры +ID маркеров Insert Представление с JOIN ON vw. Visible. Labels Поддерживаемые структуры Метки и определения категорий Роли БД Симметричные ключи и сертификаты Базовая таблица Хранимая процедура CLS

Преобразование типов данных при шифровании Encrypt Базовая таблица ID Column 1 Column 2 Column Преобразование типов данных при шифровании Encrypt Базовая таблица ID Column 1 Column 2 Column 3. . . varchar nvarchar varbinary Column. N

Структурная модель CLS Представление, доступное пользователю IO Update IO Delete Read IO Insert vw. Структурная модель CLS Представление, доступное пользователю IO Update IO Delete Read IO Insert vw. Visible. Labels Delete Update Маркеры +ID маркеров Insert Представление с JOIN ON vw. Visible. Labels Поддерживаемые структуры Метки и определения категорий Роли БД Симметричные ключи и сертификаты Базовая таблица Хранимая процедура CLS

Представление CLS CREATE VIEW User. Table AS SELECT ID, Decrypt. By. Key ( Sensitive. Представление CLS CREATE VIEW User. Table AS SELECT ID, Decrypt. By. Key ( Sensitive. Data ), CONVERT ( money, CONVERT(varchar(50), Decrypt. By. Key ( Sensitive. Money. Data ) ) ), Non. Sensitive. Data, FROM tbl. Base. Table (READCOMMITTED), vw. Visible. Label WHERE tbl. Base. Table. RLSMapping. ID = vw. Visible. Label. ID GRANT SELECT ON User. Table TO DENY ALL ON tbl. Base. Table TO

Влияние на производительность Объем тестируемого набора данных : 1 миллион записей Спецификации тестового сервера: Влияние на производительность Объем тестируемого набора данных : 1 миллион записей Спецификации тестового сервера: Процессор Память Диск (без EFS) ОС СУБД. NET Framework 2 * 550 МГц 512 Мб 4 * 18 Гб @ 10000 об/мин 1 * 20 Гб с оптическим каналом SAN Windows 2003 Standard SQL Server 2005 Beta 2 1. 1 для кода приложения 2. 0 для кода SQL Server Усредненные результаты: Операции Снижение производительности Вставка записей ~40% Запрос на выборку <10% Агрегатные запросы ~10 -50% http: //www. microsoft. com/technet/prodtechnol/sql/2005/multisec. mspx

Итоги « При реализации RLS/CLS технологии применена теория меток. Это позволяет создавать очень гибкие Итоги « При реализации RLS/CLS технологии применена теория меток. Это позволяет создавать очень гибкие политики безопасности. « Для защиты таблиц базы данных RLS/CLS сервисами достаточно определить политику безопасности и указать SQL Server список защищаемых таблиц. « При реализации RLS/CLS сервисов использовались решения, которые позволяют сохранить высокую скорость обработки данных, защищенных RLS/CLS.

Ресурсы « http: //www. microsoft. com/technet/prodt echnol/sql/2005/ « www. rsdn. ru « www. sql. Ресурсы « http: //www. microsoft. com/technet/prodt echnol/sql/2005/ « www. rsdn. ru « www. sql. ru « www. gotdotnet. ru

www. smart-ex. kz 50 www. smart-ex. kz 50