00cdeb087dd827435577aef1e6ec4a76.ppt
- Количество слайдов: 50
www. smart-ex. kz 1
SQL Server 2005, как MLS система. Докладчик: Щербатов Евгений Компания: SMART-EX Астана 2005
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 SQL query
Доступ к таблице “Пациенты” 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 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 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 Преимущества Несанкционированный доступ к данным посредством третьих приложений не приносит результата Средства отчетности работают с представлениями Нет необходимости что-либо программировать Query Analyzer Недостатки Снижается скорость работы запросов
Основные понятия RLS « Метка это сущность, описывающая уровень – доступа к данным. Назначается каждому пользователю системы и каждой строке таблицы, защищенной RLS. « Доминирование. Если пользователь имеет доступ к записи, помеченной какой-либо меткой, то метка пользователя доминирует над меткой записи. Если это не так, то пользователь видеть запись не должен.
Уровни безопасности 1 Доступ к информации TOP SECRET PUBLIC
Разным пользователям – разный доступ 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 3 SECRET PUBLIC
Разным пользователям – разный доступ 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, 0. . *, 1. . *) Правило (Any, All, Inverse. All) Маркер
Характеристики категорий Атрибуты Описание Домен Набор маркеров в категории Иерархичность (Да или Нет) В иерархической категории существует упорядоченность значений. При этом каждый маркер приводится в соответствие маркерам на том же или более низких уровнях Атрибут определяет, сколько маркеров данной категории может присутствовать в метке. Правило определяет, должна ли для предоставления доступа метка пользователя иметь любой (Any) или все (All) маркеры, связанные с объектом. Альтернативное правило (Inverse. All) означает, что для доступности объекта он не должен иметь ни одного маркера, содержащегося в метке пользователя Отношение (мощность) Правило сравнения
Категории БД клиники Категория Домен Иерархия Отношение Правило 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 Да 1. . 1 информации PUBLIC DEPARTMENT 1 Отделы All Нет 0. . * DEPARTMENT 2 DEPARTMENT 3 Отделы Доступ к информации TOP SECRET DEPARTMENT 1 SECRET PUBLIC DEPARTMENT 2 DEPARTMENT 3
Определение доминирующей метки Начало Есть ли еще категории для проверки? Нет А доминирует над В? True Доступ предоставляется Да Да Сравнение маркеров из этой категории Маркеры в А соответствуют маркерам В? Нет А доминирует над В? False В доступе отказывается
Any Начало Есть ли еще маркеры в В? Нет × Да Да Иерархическая категория? Нет Проверить, имеется ли в А этот маркер или маркер высшего уровня Проверить, присутствует ли в метке А этот маркер Нет Да Проверка категории прошла Прошла ли проверка? √ Проверка категории не прошла
All Начало Есть ли еще маркеры в В? Нет √ Да Да Иерархическая категория? Проверить, имеется ли в А этот маркер или маркер высшего уровня Да Нет Проверка категории прошла Проверка категории не прошла Проверить, присутствует ли в метке А этот маркер Прошла ли проверка? Нет ×
Реализация RLS реализуется с помощью механизма представлений (view) SQL Server. Пользователю предоставляется доступ к представлению, построенному на основе защищаемой таблицы, но отказывается в доступе к базовой таблице. При этом для каждой БД необходимо: «создать дополнительные таблицы для определения категорий, маркеров и меток; «создать роли для всех значений маркеров. Кроме того, для каждой защищаемой таблицы необходимо: «произвести небольшую модификацию базовой таблицы; «определить представление.
Структурная модель RLS Представление, доступное пользователю Базовая таблица IO Delete Update Представление с JOIN ON vw. Visible. Labels IO Update Insert Read IO Insert Поддерживаемые структуры vw. Visible. Labels Маркеры +ID маркеров Метки и определения категорий Роли БД
Дополнительные таблицы БД определяют: категории и их атрибуты; значения маркеров и соответствующие им роли; иерархии маркеров; экземпляры уникальных комбинации маркеров; связи значений маркеров с экземплярами меток.
Структурная модель 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) WHERE … ?
ANY Id IN ( SELECT Key. Mapping. Id FROM tbl. Unique. Label. Marking WITH(NOLOCK) WHERE Category. Id =
ALL 1 = ALL( SELECT IS_MEMBER ( Marking. Role. Name ) FROM tbl. Unique. Label. Marking WITH(NOLOCK) WHERE Category. ID =
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 ON vw. Visible. Labels IO Update Insert Read IO Insert Поддерживаемые структуры vw. Visible. Labels Маркеры +ID маркеров Метки и определения категорий Роли БД
Модификация базовой таблицы Базовая таблица ID Column 1 Column 2 Новый столбец RLSMapping. ID Таблица уникальных меток Внешний ключ tbl. Unique. Label
Структурная модель 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 < столбцы базовой таблицы без 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
Структурная модель RLS Представление, доступное пользователю Базовая таблица IO Delete Update Представление с JOIN ON vw. Visible. Labels IO Update Insert Read IO Insert Поддерживаемые структуры vw. Visible. Labels Маркеры +ID маркеров Метки и определения категорий Роли БД
CLS – защита данных на уровне ячеек CLS обеспечивает: • поддержку произвольного назначения меток безопасности ячейкам; • динамическую оценку метки пользователя для показа только ему доступных ячеек; • приемлемое снижение производительности для больших выборок.
Структурная модель 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 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 ( 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 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. Visible. Labels Delete Update Маркеры +ID маркеров Insert Представление с JOIN ON vw. Visible. Labels Поддерживаемые структуры Метки и определения категорий Роли БД Симметричные ключи и сертификаты Базовая таблица Хранимая процедура CLS
Преобразование типов данных при шифровании Encrypt Базовая таблица ID Column 1 Column 2 Column 3. . . varchar nvarchar varbinary Column. N
Структурная модель 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. 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
Влияние на производительность Объем тестируемого набора данных : 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 сервисами достаточно определить политику безопасности и указать SQL Server список защищаемых таблиц. « При реализации RLS/CLS сервисов использовались решения, которые позволяют сохранить высокую скорость обработки данных, защищенных RLS/CLS.
Ресурсы « http: //www. microsoft. com/technet/prodt echnol/sql/2005/ « www. rsdn. ru « www. sql. ru « www. gotdotnet. ru
www. smart-ex. kz 50


